diff options
author | Romain Gonçalves <me@rgoncalves.se> | 2022-10-06 22:33:48 +0200 |
---|---|---|
committer | Romain Gonçalves <me@rgoncalves.se> | 2022-10-06 22:33:48 +0200 |
commit | 0cec8c42c0a3c994285b93db5ee2881042586672 (patch) | |
tree | 7aee09c4955506a8654286018345364a08bb48cf /tests | |
parent | a66d538e8d3213b185d1dda6ebb44d22e7fdc707 (diff) | |
download | pydanclick-0cec8c42c0a3c994285b93db5ee2881042586672.tar.gz |
wip: decorator + arguments tests
Diffstat (limited to 'tests')
-rw-r--r-- | tests/__init__.py | 0 | ||||
-rw-r--r-- | tests/conftest.py | 28 | ||||
-rw-r--r-- | tests/test_core.py | 38 |
3 files changed, 60 insertions, 6 deletions
diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/__init__.py diff --git a/tests/conftest.py b/tests/conftest.py index e598a79..7d5e2c7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,7 +1,10 @@ +import click +import pytest + from enum import Enum from pydantic import BaseModel, Field - -import pytest +from pydanclick import core +from typing import Generator class GenericArguments(BaseModel): @@ -15,3 +18,24 @@ class GenericArguments(BaseModel): version: int = Field(gt=0) force: bool = Field(default=False, description="Force ABC.") fruit: FruitEnum + + +@pytest.fixture +def valid_arguments() -> Generator[GenericArguments, None, None]: + yield GenericArguments( + name="fruit_manager", + version=12, + force=True, + fruit="pineapple", + ) + + +@pytest.fixture +def valid_command_entrypoint() -> Generator[click.Command, None, None]: + + @click.command() + @core.generate_cli_options() + def entrypoint(parameters: GenericArguments): + pass + + yield entrypoint diff --git a/tests/test_core.py b/tests/test_core.py index 5993abc..cc4755f 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -1,8 +1,38 @@ +import click +import pickle import pytest -from pydanclick import core, schemas -from tests.conftest import GenericArguments +def test_get_option_arguments_ok(valid_arguments): + # core.get_option_arguments(schema, parameter, "mega-option") + pass -def test_get_option_arguments_ok(): - core.get_option_arguments() + +def test_generate_cli_options_start(valid_command_entrypoint): + + with pytest.raises(SystemExit): + valid_command_entrypoint() + + +@pytest.mark.parametrize( + "argument_info", + [ + ["name", ["--name"], click.STRING], + ["version", ["--version"], click.IntRange(min=0)], + ["force", ["--force"], click.BOOL], + ["fruit", ["--fruit"], click.STRING], + ] +) +def test_generate_cli_options_arguments( + valid_command_entrypoint, + argument_info, +): + option = next( + filter( + lambda el: el.name == argument_info[0], + valid_command_entrypoint.params + ) + ) + + assert option.opts == argument_info[1] + assert pickle.dumps(option.type) == pickle.dumps(argument_info[2]) |