diff --git a/README.md b/README.md index bb613df1..61699ddf 100644 --- a/README.md +++ b/README.md @@ -183,6 +183,14 @@ Lancer la commande suivante pour s'assurer que le code satisfait bien tous les p pre-commit run --all-files ``` +## Testings + +Pour lancer les tests, il suffit de lancer la commande suivante : + +```sh +uv run pytest +``` + ## How to contribute Pour contribuer, il est recommandé d'utiliser un fork du projet. Cela permet d'éviter la gestion des demandes d'accès au dépôt principal. diff --git a/pipelines/tests/__init__.py b/pipelines/tests/__init__.py new file mode 100644 index 00000000..ae78246e --- /dev/null +++ b/pipelines/tests/__init__.py @@ -0,0 +1 @@ +# tests/__init__.py diff --git a/pipelines/tests/test_build_database.py b/pipelines/tests/test_build_database.py new file mode 100644 index 00000000..27b2a1b4 --- /dev/null +++ b/pipelines/tests/test_build_database.py @@ -0,0 +1,13 @@ +from click.testing import CliRunner + +from pipelines.run import run_build_database + + +def test_build_database_last_year(tmp_path): + runner = CliRunner() + with runner.isolated_filesystem(temp_dir=tmp_path): + result = runner.invoke(run_build_database, ["--refresh-type", "last"]) + + # TODO: Add SQL check to verify that the last year was processed + + assert result.exit_code == 0 diff --git a/pyproject.toml b/pyproject.toml index c34e8bef..005b18b1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,6 +22,7 @@ dependencies = [ "dbt-core>=1.9.2,<2", "dbt-duckdb>=1.9.1,<2", "tqdm>=4.67.1,<5", + "pytest>=8.3.4,<9", ] [dependency-groups] diff --git a/uv.lock b/uv.lock index 433e2991..ba0a0edc 100644 --- a/uv.lock +++ b/uv.lock @@ -823,6 +823,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/59/9b/ecce94952ab5ea74c31dcf9ccf78ccd484eebebef06019bf8cb579ab4519/importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b", size = 23427 }, ] +[[package]] +name = "iniconfig" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, +] + [[package]] name = "ipykernel" version = "6.29.5" @@ -1821,6 +1830,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e9/cc/2b7e5113d5a46a3d5230194e5583b72616303d24c566833edf816d63c057/ploomber_core-0.2.26-py3-none-any.whl", hash = "sha256:f0b8d54f9973ba5d42b7f6ac75b23e5533bbbfd778dc63c5d825615c004b19a9", size = 22781 }, ] +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, +] + [[package]] name = "pollution-eau" version = "0.1.0" @@ -1840,6 +1858,7 @@ dependencies = [ { name = "jupysql" }, { name = "matplotlib" }, { name = "pandas" }, + { name = "pytest" }, { name = "python-dotenv" }, { name = "requests" }, { name = "tqdm" }, @@ -1867,6 +1886,7 @@ requires-dist = [ { name = "jupysql", specifier = ">=0.10.17,<1" }, { name = "matplotlib", specifier = ">=3.10.0,<4" }, { name = "pandas", specifier = ">=2.2.3,<3" }, + { name = "pytest", specifier = ">=8.3.4,<9" }, { name = "python-dotenv", specifier = ">=1.0.1,<2" }, { name = "requests", specifier = ">=2.32.3,<3" }, { name = "tqdm", specifier = ">=4.67.1,<5" }, @@ -2097,6 +2117,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl", hash = "sha256:506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1", size = 107716 }, ] +[[package]] +name = "pytest" +version = "8.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 }, +] + [[package]] name = "python-dateutil" version = "2.9.0.post0"