* Update test harness (add assertions) #1467 Signed-off-by: christian.lutnik <christian.lutnik@dynatrace.com> * fixup! Update test harness (add assertions) #1467 Signed-off-by: christian.lutnik <christian.lutnik@dynatrace.com> * fixup! Update test harness (add assertions) #1467 Signed-off-by: christian.lutnik <christian.lutnik@dynatrace.com> * fixup! Update test harness (add assertions) #1467 Signed-off-by: christian.lutnik <christian.lutnik@dynatrace.com> * fixup! Update test harness (add assertions) #1467 Signed-off-by: christian.lutnik <christian.lutnik@dynatrace.com> * fixup! Update test harness (add assertions) #1467 Signed-off-by: christian.lutnik <christian.lutnik@dynatrace.com> * fixup! Update test harness (add assertions) #1467 Signed-off-by: christian.lutnik <christian.lutnik@dynatrace.com> --------- Signed-off-by: christian.lutnik <christian.lutnik@dynatrace.com> Co-authored-by: Anton Grübel <anton.gruebel@gmail.com>
This commit is contained in:
parent
9304292ea9
commit
f559d1b27a
|
|
@ -1,3 +1,6 @@
|
|||
[submodule "test-harness"]
|
||||
path = test-harness
|
||||
url = https://github.com/open-feature/test-harness.git
|
||||
[submodule "spec"]
|
||||
path = spec
|
||||
url = https://github.com/open-feature/spec.git
|
||||
|
|
|
|||
|
|
@ -69,4 +69,16 @@ IN_MEMORY_FLAGS = {
|
|||
variants={"one": "uno", "two": "dos"},
|
||||
default_variant="one",
|
||||
),
|
||||
"metadata-flag": InMemoryFlag(
|
||||
state=InMemoryFlag.State.ENABLED,
|
||||
default_variant="on",
|
||||
variants={"on": True, "off": False},
|
||||
context_evaluator=None,
|
||||
flag_metadata={
|
||||
"string": "1.0.2",
|
||||
"integer": 2,
|
||||
"float": 0.1,
|
||||
"boolean": True,
|
||||
},
|
||||
),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
from behave import given, when
|
||||
|
||||
|
||||
@given('a {flag_type}-flag with key "{flag_key}" and a default value "{default_value}"')
|
||||
def step_impl_flag(context, flag_type: str, flag_key, default_value):
|
||||
context.flag = (flag_type, flag_key, default_value)
|
||||
|
||||
|
||||
@when("the flag was evaluated with details")
|
||||
def step_impl_evaluation(context):
|
||||
client = context.client
|
||||
flag_type, key, default_value = context.flag
|
||||
if flag_type.lower() == "string":
|
||||
context.evaluation = client.get_string_details(key, default_value)
|
||||
elif flag_type.lower() == "boolean":
|
||||
context.evaluation = client.get_boolean_details(key, default_value)
|
||||
elif flag_type.lower() == "object":
|
||||
context.evaluation = client.get_object_details(key, default_value)
|
||||
elif flag_type.lower() == "float":
|
||||
context.evaluation = client.get_float_details(key, default_value)
|
||||
elif flag_type.lower() == "integer":
|
||||
context.evaluation = client.get_integer_details(key, default_value)
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
from behave import given, then
|
||||
|
||||
from openfeature.api import get_client, set_provider
|
||||
from openfeature.provider.in_memory_provider import InMemoryProvider
|
||||
from tests.features.data import IN_MEMORY_FLAGS
|
||||
|
||||
|
||||
@given("a stable provider")
|
||||
def step_impl_stable_provider(context):
|
||||
set_provider(InMemoryProvider(IN_MEMORY_FLAGS))
|
||||
context.client = get_client()
|
||||
|
||||
|
||||
@then('the resolved metadata value "{key}" should be "{value}"')
|
||||
def step_impl_check_metadata(context, key, value):
|
||||
assert context.evaluation.flag_metadata[key] == value
|
||||
|
||||
|
||||
@then("the resolved metadata is empty")
|
||||
def step_impl_empty_metadata(context):
|
||||
assert not context.evaluation.flag_metadata
|
||||
|
||||
|
||||
@then("the resolved metadata should contain")
|
||||
def step_impl_metadata_contains(context):
|
||||
for row in context.table:
|
||||
key, metadata_type, value = row
|
||||
|
||||
assert context.evaluation.flag_metadata[
|
||||
key
|
||||
] == convert_value_from_metadata_type(value, metadata_type)
|
||||
|
||||
|
||||
def convert_value_from_metadata_type(value, metadata_type):
|
||||
if value == "None":
|
||||
return None
|
||||
if metadata_type.lower() == "boolean":
|
||||
return bool(value)
|
||||
elif metadata_type.lower() == "integer":
|
||||
return int(value)
|
||||
elif metadata_type.lower() == "float":
|
||||
return float(value)
|
||||
return value
|
||||
Loading…
Reference in New Issue