From f1113d2e06df14110076faca3c933d8445b33ed6 Mon Sep 17 00:00:00 2001 From: "d.zakharchuk" Date: Wed, 17 Jan 2024 10:42:09 +0200 Subject: [PATCH] fix tests --- featureflags_client/grpc/managers/dummy.py | 7 +++ featureflags_client/tests/conftest.py | 10 ++-- featureflags_client/tests/grpc/test_flags.py | 46 ++++++++++--------- .../tests/grpc/test_managers_asyncio.py | 6 +-- 4 files changed, 37 insertions(+), 32 deletions(-) diff --git a/featureflags_client/grpc/managers/dummy.py b/featureflags_client/grpc/managers/dummy.py index 7a32a6c..ab8fc26 100644 --- a/featureflags_client/grpc/managers/dummy.py +++ b/featureflags_client/grpc/managers/dummy.py @@ -23,6 +23,13 @@ class Defaults: """ + def preload( + self, + timeout: Optional[int] = None, + defaults: Optional[Dict] = None, + ) -> None: + pass + def get(self, name: str) -> Optional[Callable[[Dict], bool]]: return None diff --git a/featureflags_client/tests/conftest.py b/featureflags_client/tests/conftest.py index 55ab1da..db3c452 100644 --- a/featureflags_client/tests/conftest.py +++ b/featureflags_client/tests/conftest.py @@ -8,6 +8,9 @@ class SimpleManager(AbstractManager): def __init__(self): self.checks = {} + def preload(self, timeout=None, defaults=None) -> None: + pass + def load(self, result): self.checks = load_flags(result) @@ -19,10 +22,5 @@ def add_trace(self, tracer): @pytest.fixture() -def loop(event_loop): - return event_loop - - -@pytest.fixture() -def manager(): +def simple_manager(): return SimpleManager() diff --git a/featureflags_client/tests/grpc/test_flags.py b/featureflags_client/tests/grpc/test_flags.py index 943af7a..7afcdec 100644 --- a/featureflags_client/tests/grpc/test_flags.py +++ b/featureflags_client/tests/grpc/test_flags.py @@ -15,7 +15,7 @@ f = faker.Faker() -def test_tracing(manager): +def test_tracing(simple_manager): defaults = {"TEST": False} result = Result() @@ -25,13 +25,13 @@ def test_tracing(manager): result.Flag[flag_id].name = "TEST" result.Flag[flag_id].enabled.value = True result.Flag[flag_id].overridden.value = True - manager.load(result) + simple_manager.load(result) - flags = Flags(defaults, manager, {}) + flags = Flags(defaults, simple_manager, {}) assert flags.TEST is True result.Flag[flag_id].enabled.value = False - manager.load(result) + simple_manager.load(result) assert flags.TEST is True assert flags._tracer.values == {"TEST": True} @@ -91,7 +91,7 @@ def test_tracing_history(): ({"v.str": "aleph+no", "v.int": 49}, False), ], ) -def test_conditions(ctx, expected, manager): +def test_conditions(ctx, expected, simple_manager): f1 = f.pystr() c1, c2 = f.pystr(), f.pystr() ch1, ch2, ch3, ch4 = f.pystr(), f.pystr(), f.pystr(), f.pystr() @@ -145,58 +145,60 @@ def test_conditions(ctx, expected, manager): defaults = {"TEST": False} - manager.load(result) - flags = Flags(defaults, manager, ctx) + simple_manager.load(result) + flags = Flags(defaults, simple_manager, ctx) assert flags.TEST is expected -def test_py2_defaults(manager): - client = FeatureFlagsClient({"TEST": False, "TEST_UNICODE": True}, manager) +def test_py2_defaults(simple_manager): + client = FeatureFlagsClient( + {"TEST": False, "TEST_UNICODE": True}, simple_manager + ) with client.flags() as flags: assert flags.TEST is False assert flags.TEST_UNICODE is True -def test_deprecated_defaults(manager): +def test_deprecated_defaults(simple_manager): class Defaults(Enum): TEST = False - client = FeatureFlagsClient(Defaults, manager) + client = FeatureFlagsClient(Defaults, simple_manager) with client.flags() as flags: assert flags.TEST is Defaults.TEST.value -def test_declarative_defaults(manager): +def test_declarative_defaults(simple_manager): class Defaults: _TEST = True TEST = False test = True - client = FeatureFlagsClient(Defaults, manager) + client = FeatureFlagsClient(Defaults, simple_manager) with client.flags() as flags: assert not hasattr(flags, "_TEST") assert flags.TEST is Defaults.TEST assert not hasattr(flags, "test") -def test_invalid_defaults_type(manager): +def test_invalid_defaults_type(simple_manager): with pytest.raises(TypeError) as exc: - FeatureFlagsClient(object(), manager) + FeatureFlagsClient(object(), simple_manager) exc.match("Invalid defaults type") @pytest.mark.parametrize("key, value", [("TEST", 1), (2, "TEST")]) -def test_invalid_flag_definition_types(key, value, manager): +def test_invalid_flag_definition_types(key, value, simple_manager): with pytest.raises(TypeError) as exc: - FeatureFlagsClient({key: value}, manager) + FeatureFlagsClient({key: value}, simple_manager) exc.match(f"Invalid flag definition: {key!r}") -def test_overrides(manager): +def test_overrides(simple_manager): class Defaults(Enum): TEST = False - client = FeatureFlagsClient(Defaults, manager) + client = FeatureFlagsClient(Defaults, simple_manager) with client.flags() as flags: assert flags.TEST is False @@ -205,7 +207,7 @@ class Defaults(Enum): assert flags.TEST is True -def test_default_true(manager): +def test_default_true(simple_manager): result = Result() flag_id = f.pystr() result.Root.flags.add().Flag = flag_id @@ -213,11 +215,11 @@ def test_default_true(manager): result.Flag[flag_id].name = "TEST" result.Flag[flag_id].enabled.value = False result.Flag[flag_id].overridden.value = False - manager.load(result) + simple_manager.load(result) class Defaults: TEST = True - client = FeatureFlagsClient(Defaults, manager) + client = FeatureFlagsClient(Defaults, simple_manager) with client.flags() as flags: assert flags.TEST is Defaults.TEST diff --git a/featureflags_client/tests/grpc/test_managers_asyncio.py b/featureflags_client/tests/grpc/test_managers_asyncio.py index ae41766..36895bc 100644 --- a/featureflags_client/tests/grpc/test_managers_asyncio.py +++ b/featureflags_client/tests/grpc/test_managers_asyncio.py @@ -65,12 +65,10 @@ def fixture_result(variable, flag, condition, check): @pytest.mark.asyncio -async def test(loop, result, flag, variable, check): +async def test(result, flag, variable, check): result.Flag[flag.id].name = "TEST" variables = [Variable(variable.name, Types.STRING)] - manager = AsyncIOManager( - "aginst", variables, Channel(port=-1, loop=loop), loop=loop - ) + manager = AsyncIOManager("aginst", variables, Channel(port=-1)) async def reply(): return service_pb2.ExchangeReply(version=1, result=result)