From 041d4317aba8cd183645efeb42bec5d8c2cdf509 Mon Sep 17 00:00:00 2001 From: Andrew Helsby Date: Tue, 18 Oct 2022 15:34:13 +0400 Subject: [PATCH] feature/provider-metadata: Test extending metadata class Signed-off-by: Andrew Helsby Signed-off-by: Andrew Helsby --- open_feature/flag_evaluation/hooks.py | 0 open_feature/provider/no_op_metadata.py | 9 +++++++++ open_feature/provider/no_op_provider.py | 3 ++- tests/provider/test_no_op_provider.py | 10 ++++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) delete mode 100644 open_feature/flag_evaluation/hooks.py create mode 100644 open_feature/provider/no_op_metadata.py diff --git a/open_feature/flag_evaluation/hooks.py b/open_feature/flag_evaluation/hooks.py deleted file mode 100644 index e69de29..0000000 diff --git a/open_feature/provider/no_op_metadata.py b/open_feature/provider/no_op_metadata.py new file mode 100644 index 0000000..47cbd68 --- /dev/null +++ b/open_feature/provider/no_op_metadata.py @@ -0,0 +1,9 @@ +from dataclasses import dataclass + +from open_feature.provider.metadata import Metadata + + +@dataclass +class NoOpMetadata(Metadata): + name: str = "No-op Provider" + is_test_class: bool = True diff --git a/open_feature/provider/no_op_provider.py b/open_feature/provider/no_op_provider.py index 5b46a6c..8e80786 100644 --- a/open_feature/provider/no_op_provider.py +++ b/open_feature/provider/no_op_provider.py @@ -4,6 +4,7 @@ from open_feature.evaluation_context.evaluation_context import EvaluationContext from open_feature.flag_evaluation.flag_evaluation_details import FlagEvaluationDetails from open_feature.flag_evaluation.reason import Reason from open_feature.provider.metadata import Metadata +from open_feature.provider.no_op_metadata import NoOpMetadata from open_feature.provider.provider import AbstractProvider PASSED_IN_DEFAULT = "Passed in default" @@ -11,7 +12,7 @@ PASSED_IN_DEFAULT = "Passed in default" class NoOpProvider(AbstractProvider): def get_metadata(self) -> Metadata: - return Metadata(name="No-op Provider") + return NoOpMetadata() def get_boolean_details( self, diff --git a/tests/provider/test_no_op_provider.py b/tests/provider/test_no_op_provider.py index 7b23714..c379a26 100644 --- a/tests/provider/test_no_op_provider.py +++ b/tests/provider/test_no_op_provider.py @@ -10,6 +10,16 @@ def setup(): assert isinstance(provider, NoOpProvider) +def test_should_return_no_op_provider_metadata(no_op_provider_client): + # Given + # When + metadata = NoOpProvider().get_metadata() + # Then + assert metadata is not None + assert metadata.name == "No-op Provider" + assert metadata.is_test_class + + def test_should_get_boolean_flag_from_no_op(no_op_provider_client): # Given # When