Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dzakharchuk committed Jan 17, 2024
1 parent a4b75cf commit f1113d2
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 32 deletions.
7 changes: 7 additions & 0 deletions featureflags_client/grpc/managers/dummy.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
10 changes: 4 additions & 6 deletions featureflags_client/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand All @@ -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()
46 changes: 24 additions & 22 deletions featureflags_client/tests/grpc/test_flags.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
f = faker.Faker()


def test_tracing(manager):
def test_tracing(simple_manager):
defaults = {"TEST": False}

result = Result()
Expand All @@ -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}
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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
Expand All @@ -205,19 +207,19 @@ 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
result.Flag[flag_id].id = flag_id
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
6 changes: 2 additions & 4 deletions featureflags_client/tests/grpc/test_managers_asyncio.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit f1113d2

Please sign in to comment.