Skip to content

Commit 5369348

Browse files
committed
fix: Simplify variant assignment in EvaluationEventBuilder and enhance tests for missing flag metadata
Signed-off-by: André Silva <2493377+askpt@users.noreply.github.com>
1 parent 30949be commit 5369348

2 files changed

Lines changed: 23 additions & 6 deletions

File tree

src/OpenFeature/Telemetry/EvaluationEventBuilder.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,7 @@ public static EvaluationEvent Build(HookContext<Value> hookContext, FlagEvaluati
2929

3030
var body = new Dictionary<string, object>();
3131

32-
if (!string.IsNullOrWhiteSpace(details.Variant))
33-
{
34-
attributes[TelemetryConstants.Variant] = details.Variant ?? details.Value.ToString();
35-
}
36-
32+
attributes[TelemetryConstants.Variant] = details.Variant;
3733
attributes[TelemetryFlagMetadata.ContextId] = details.FlagMetadata?.GetString(TelemetryFlagMetadata.ContextId);
3834
attributes[TelemetryFlagMetadata.FlagSetId] = details.FlagMetadata?.GetString(TelemetryFlagMetadata.FlagSetId);
3935
attributes[TelemetryFlagMetadata.Version] = details.FlagMetadata?.GetString(TelemetryFlagMetadata.Version);

test/OpenFeature.Tests/Telemetry/EvaluationEventBuilderTests.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,35 @@ public void Build_ShouldHandleMissingVariant()
7575
{ "flagSetId", "flagSetId" }, { "contextId", "contextId" }, { "version", "version" }
7676
};
7777
var flagMetadata = new ImmutableMetadata(metadata);
78+
var details = new FlagEvaluationDetails<Value>("flagKey", new Value("value"), ErrorType.None,
79+
reason: "reason", variant: null, flagMetadata: flagMetadata);
80+
81+
// Act
82+
var evaluationEvent = EvaluationEventBuilder.Build(hookContext, details);
83+
84+
// Assert
85+
Assert.Null(evaluationEvent.Attributes[TelemetryConstants.Variant]);
86+
}
87+
88+
[Fact]
89+
public void Build_ShouldHandleMissingFlagMetadata()
90+
{
91+
// Arrange
92+
var clientMetadata = new ClientMetadata("client", "1.0.0");
93+
var providerMetadata = new Metadata("provider");
94+
var hookContext = new HookContext<Value>("flagKey", new Value("value"), FlagValueType.Object, clientMetadata,
95+
providerMetadata, EvaluationContext.Empty);
96+
var flagMetadata = new ImmutableMetadata();
7897
var details = new FlagEvaluationDetails<Value>("flagKey", new Value("value"), ErrorType.None,
7998
reason: "reason", variant: "", flagMetadata: flagMetadata);
8099

81100
// Act
82101
var evaluationEvent = EvaluationEventBuilder.Build(hookContext, details);
83102

84103
// Assert
85-
Assert.Throws<KeyNotFoundException>(() => evaluationEvent.Attributes[TelemetryConstants.Variant]);
104+
Assert.Null(evaluationEvent.Attributes[TelemetryFlagMetadata.ContextId]);
105+
Assert.Null(evaluationEvent.Attributes[TelemetryFlagMetadata.FlagSetId]);
106+
Assert.Null(evaluationEvent.Attributes[TelemetryFlagMetadata.Version]);
86107
}
87108
}
88109
}

0 commit comments

Comments
 (0)