Skip to content

Commit 68af649

Browse files
authored
fix: Add generic to evaluation event builder (#500)
Signed-off-by: André Silva <[email protected]>
1 parent 2e3dffd commit 68af649

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

src/OpenFeature/Telemetry/EvaluationEventBuilder.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@ namespace OpenFeature.Telemetry;
66
/// <summary>
77
/// Class for creating evaluation events for feature flags.
88
/// </summary>
9-
public sealed class EvaluationEventBuilder
9+
public sealed class EvaluationEventBuilder<T>
1010
{
1111
private const string EventName = "feature_flag.evaluation";
1212

1313
/// <summary>
14-
/// Gets the default instance of the <see cref="EvaluationEventBuilder"/>.
14+
/// Gets the default instance of the <see cref="EvaluationEventBuilder{T}"/>.
1515
/// </summary>
16-
public static EvaluationEventBuilder Default { get; } = new();
16+
public static EvaluationEventBuilder<T> Default { get; } = new();
1717

1818
/// <summary>
1919
/// Creates an evaluation event based on the provided hook context and flag evaluation details.
2020
/// </summary>
2121
/// <param name="hookContext">The context of the hook containing flag key and provider metadata.</param>
2222
/// <param name="details">The details of the flag evaluation including reason, variant, and metadata.</param>
2323
/// <returns>An instance of <see cref="EvaluationEvent"/> containing the event name, attributes, and body.</returns>
24-
public EvaluationEvent Build(HookContext<Value> hookContext, FlagEvaluationDetails<Value> details)
24+
public static EvaluationEvent Build(HookContext<T> hookContext, FlagEvaluationDetails<T> details)
2525
{
2626
var attributes = new Dictionary<string, object?>
2727
{

test/OpenFeature.Tests/Telemetry/EvaluationEventBuilderTests.cs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ namespace OpenFeature.Tests.Telemetry;
66

77
public class EvaluationEventBuilderTests
88
{
9-
private readonly EvaluationEventBuilder _builder = EvaluationEventBuilder.Default;
10-
119
[Fact]
1210
public void Build_ShouldReturnEventWithCorrectAttributes()
1311
{
@@ -25,7 +23,7 @@ public void Build_ShouldReturnEventWithCorrectAttributes()
2523
reason: "reason", variant: "variant", flagMetadata: flagMetadata);
2624

2725
// Act
28-
var evaluationEvent = _builder.Build(hookContext, details);
26+
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);
2927

3028
// Assert
3129
Assert.Equal("feature_flag.evaluation", evaluationEvent.Name);
@@ -55,7 +53,7 @@ public void Build_ShouldHandleErrorDetails()
5553
errorMessage: "errorMessage", reason: "reason", variant: "variant", flagMetadata: flagMetadata);
5654

5755
// Act
58-
var evaluationEvent = _builder.Build(hookContext, details);
56+
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);
5957

6058
// Assert
6159
Assert.Equal("general", evaluationEvent.Attributes[TelemetryConstants.ErrorCode]);
@@ -79,7 +77,7 @@ public void Build_ShouldHandleMissingVariant()
7977
reason: "reason", variant: null, flagMetadata: flagMetadata);
8078

8179
// Act
82-
var evaluationEvent = _builder.Build(hookContext, details);
80+
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);
8381

8482
// Assert
8583
Assert.Null(evaluationEvent.Attributes[TelemetryConstants.Variant]);
@@ -98,7 +96,7 @@ public void Build_ShouldHandleMissingFlagMetadata()
9896
reason: "reason", variant: "", flagMetadata: flagMetadata);
9997

10098
// Act
101-
var evaluationEvent = _builder.Build(hookContext, details);
99+
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);
102100

103101
// Assert
104102
Assert.Null(evaluationEvent.Attributes[TelemetryConstants.ContextId]);
@@ -122,7 +120,7 @@ public void Build_ShouldHandleMissingReason(string? reason)
122120
reason: reason, variant: "", flagMetadata: flagMetadata);
123121

124122
// Act
125-
var evaluationEvent = _builder.Build(hookContext, details);
123+
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);
126124

127125
// Assert
128126
Assert.Equal(Reason.Unknown.ToLowerInvariant(), evaluationEvent.Attributes[TelemetryConstants.Reason]);
@@ -144,7 +142,7 @@ public void Build_ShouldHandleErrorWithEmptyErrorMessage(string? errorMessage)
144142
errorMessage: errorMessage, reason: "reason", variant: "", flagMetadata: flagMetadata);
145143

146144
// Act
147-
var evaluationEvent = _builder.Build(hookContext, details);
145+
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);
148146

149147
// Assert
150148
Assert.Equal("general", evaluationEvent.Attributes[TelemetryConstants.ErrorCode]);
@@ -164,7 +162,7 @@ public void Build_ShouldIncludeValueAttributeInEvent()
164162
reason: "reason", variant: "variant", flagMetadata: new ImmutableMetadata());
165163

166164
// Act
167-
var evaluationEvent = _builder.Build(hookContext, details);
165+
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);
168166

169167
// Assert
170168
Assert.Equal(testValue, evaluationEvent.Attributes[TelemetryConstants.Value]);

0 commit comments

Comments
 (0)