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
8 changes: 4 additions & 4 deletions src/OpenFeature/Telemetry/EvaluationEventBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,22 @@
/// <summary>
/// Class for creating evaluation events for feature flags.
/// </summary>
public sealed class EvaluationEventBuilder
public sealed class EvaluationEventBuilder<T>
{
private const string EventName = "feature_flag.evaluation";

/// <summary>
/// Gets the default instance of the <see cref="EvaluationEventBuilder"/>.
/// Gets the default instance of the <see cref="EvaluationEventBuilder{T}"/>.
/// </summary>
public static EvaluationEventBuilder Default { get; } = new();
public static EvaluationEventBuilder<T> Default { get; } = new();

Check warning on line 16 in src/OpenFeature/Telemetry/EvaluationEventBuilder.cs

View check run for this annotation

Codecov / codecov/patch

src/OpenFeature/Telemetry/EvaluationEventBuilder.cs#L16

Added line #L16 was not covered by tests

/// <summary>
/// Creates an evaluation event based on the provided hook context and flag evaluation details.
/// </summary>
/// <param name="hookContext">The context of the hook containing flag key and provider metadata.</param>
/// <param name="details">The details of the flag evaluation including reason, variant, and metadata.</param>
/// <returns>An instance of <see cref="EvaluationEvent"/> containing the event name, attributes, and body.</returns>
public EvaluationEvent Build(HookContext<Value> hookContext, FlagEvaluationDetails<Value> details)
public static EvaluationEvent Build(HookContext<T> hookContext, FlagEvaluationDetails<T> details)
{
var attributes = new Dictionary<string, object?>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ namespace OpenFeature.Tests.Telemetry;

public class EvaluationEventBuilderTests
{
private readonly EvaluationEventBuilder _builder = EvaluationEventBuilder.Default;

[Fact]
public void Build_ShouldReturnEventWithCorrectAttributes()
{
Expand All @@ -25,7 +23,7 @@ public void Build_ShouldReturnEventWithCorrectAttributes()
reason: "reason", variant: "variant", flagMetadata: flagMetadata);

// Act
var evaluationEvent = _builder.Build(hookContext, details);
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);

// Assert
Assert.Equal("feature_flag.evaluation", evaluationEvent.Name);
Expand Down Expand Up @@ -55,7 +53,7 @@ public void Build_ShouldHandleErrorDetails()
errorMessage: "errorMessage", reason: "reason", variant: "variant", flagMetadata: flagMetadata);

// Act
var evaluationEvent = _builder.Build(hookContext, details);
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);

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

// Act
var evaluationEvent = _builder.Build(hookContext, details);
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);

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

// Act
var evaluationEvent = _builder.Build(hookContext, details);
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);

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

// Act
var evaluationEvent = _builder.Build(hookContext, details);
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);

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

// Act
var evaluationEvent = _builder.Build(hookContext, details);
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);

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

// Act
var evaluationEvent = _builder.Build(hookContext, details);
var evaluationEvent = EvaluationEventBuilder<Value>.Build(hookContext, details);

// Assert
Assert.Equal(testValue, evaluationEvent.Attributes[TelemetryConstants.Value]);
Expand Down