Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -148,11 +148,129 @@ public void ThenTheError_CodeShouldBe(string error)
}
}

[Then("the resolved metadata should contain")]
public void ThenTheResolvedMetadataShouldContain(DataTable dataTable)
{
foreach (var row in dataTable.Rows)
{
var key = row["key"];
var type = row["metadata_type"];
var value = row["value"];

switch (this._state.Flag!.Type)
{
case FlagType.Integer:
this.AssertMetadata<int>(key, type, value);
break;
case FlagType.Float:
this.AssertMetadata<double>(key, type, value);
break;
case FlagType.String:
this.AssertMetadata<string>(key, type, value);
break;
case FlagType.Boolean:
this.AssertMetadata<bool>(key, type, value);
break;
default:
Assert.Fail("FlagType not yet supported.");
break;
}
}
}

[Then("the resolved metadata is empty")]
public void ThenTheResolvedMetadataIsEmpty()
{
switch (this._state.Flag!.Type)
{
case FlagType.Integer:
this.AssertEmptyMetadata<int>();
break;
case FlagType.Float:
this.AssertEmptyMetadata<double>();
break;
case FlagType.String:
this.AssertEmptyMetadata<string>();
break;
case FlagType.Boolean:
this.AssertEmptyMetadata<bool>();
break;
default:
Assert.Fail("FlagType not yet supported.");
break;
}
}

private void AssertOnDetails<T>(Action<FlagEvaluationDetails<T>> assertion)
{
var details = this._state.FlagEvaluationDetailsResult as FlagEvaluationDetails<T>;

Assert.NotNull(details);
assertion(details);
}

private void AssertEmptyMetadata<T>()
{
var details = this._state.FlagEvaluationDetailsResult as FlagEvaluationDetails<T>;

Assert.NotNull(details);
Assert.NotNull(details.FlagMetadata);

var count = typeof(ImmutableMetadata)
Comment thread
askpt marked this conversation as resolved.
.GetProperty("Count", System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic)
.GetValue(details.FlagMetadata) as int?;

Assert.NotNull(count);
Assert.Equal(0, count);
Comment thread
kylejuliandev marked this conversation as resolved.
}

private void AssertMetadata<T>(string key, string type, string value)
Comment thread
chrfwow marked this conversation as resolved.
{
var details = this._state.FlagEvaluationDetailsResult as FlagEvaluationDetails<T>;

Assert.NotNull(details);
Assert.NotNull(details.FlagMetadata);

switch (type)
{
case "Boolean":
{
var expectedValue = bool.Parse(value);
var actualValue = details.FlagMetadata.GetBool(key);
Assert.NotNull(actualValue);
Assert.Equal(expectedValue, actualValue);
break;
}
case "String":
{
var expectedValue = value;
var actualValue = details.FlagMetadata.GetString(key);
Assert.NotNull(actualValue);
Assert.Equal(expectedValue, actualValue);
break;
}
case "Integer":
{
var expectedValue = int.Parse(value);
var actualValue = details.FlagMetadata.GetInt(key);
Assert.NotNull(actualValue);
Assert.Equal(expectedValue, actualValue);
break;
}
case "Float":
{
var expectedValue = double.Parse(value);
var actualValue = details.FlagMetadata.GetDouble(key);
Assert.NotNull(actualValue);
Assert.Equal(expectedValue, actualValue);
break;
}
default:
{
Assert.Fail($"Metadata type '{type}' not supported.");
break;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<None Include="../../src/OpenFeature.Contrib.Providers.Flagd/flagd-testbed/gherkin/evaluation.feature" Link="../../../Features/%(Filename)%(Extension)" DestinationFolder="../../../Features/" CopyToOutputDirectory="PreserveNewest" />
<None Include="../../src/OpenFeature.Contrib.Providers.Flagd/flagd-testbed/gherkin/targeting.feature" Link="../../../Features/%(Filename)%(Extension)" DestinationFolder="../../../Features/" CopyToOutputDirectory="PreserveNewest" />
<None Include="../../src/OpenFeature.Contrib.Providers.Flagd/flagd-testbed/gherkin/selector.feature" Link="../../../Features/%(Filename)%(Extension)" DestinationFolder="../../../Features/" CopyToOutputDirectory="PreserveNewest" />
<None Include="../../src/OpenFeature.Contrib.Providers.Flagd/flagd-testbed/gherkin/metadata.feature" Link="../../../Features/%(Filename)%(Extension)" DestinationFolder="../../../Features/" CopyToOutputDirectory="PreserveNewest" />
<None Include="../../src/OpenFeature.Contrib.Providers.Flagd/flagd-testbed/gherkin/contextEnrichment.feature" Link="../../../Features/%(Filename)%(Extension)" DestinationFolder="../../../Features/" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
<ItemGroup>
<None Include="../../src/OpenFeature.Contrib.Providers.Flagd/flagd-testbed/gherkin/evaluation.feature" Link="../../../Features/%(Filename)%(Extension)" DestinationFolder="../../../Features/" CopyToOutputDirectory="PreserveNewest" />
<None Include="../../src/OpenFeature.Contrib.Providers.Flagd/flagd-testbed/gherkin/targeting.feature" Link="../../../Features/%(Filename)%(Extension)" DestinationFolder="../../../Features/" CopyToOutputDirectory="PreserveNewest" />
<None Include="../../src/OpenFeature.Contrib.Providers.Flagd/flagd-testbed/gherkin/metadata.feature" Link="../../../Features/%(Filename)%(Extension)" DestinationFolder="../../../Features/" CopyToOutputDirectory="PreserveNewest" />
<None Include="../../src/OpenFeature.Contrib.Providers.Flagd/flagd-testbed/gherkin/contextEnrichment.feature" Link="../../../Features/%(Filename)%(Extension)" DestinationFolder="../../../Features/" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

Expand Down
Loading