|
11 | 11 | using OpenFeature.Providers.Ofrep.Configuration; |
12 | 12 | using OpenFeature.Providers.Ofrep.Models; |
13 | 13 | using OpenFeature.Providers.Ofrep.Test.Helpers; |
| 14 | +using OpenFeature.Constant; |
14 | 15 | using Xunit; |
15 | 16 |
|
16 | 17 | namespace OpenFeature.Providers.Ofrep.Test.Client; |
@@ -248,6 +249,53 @@ public async Task EvaluateFlag_WithNullResponse_ShouldReturnParsingError() |
248 | 249 | Assert.Contains("null or empty response", result.ErrorMessage); |
249 | 250 | } |
250 | 251 |
|
| 252 | + [Fact] |
| 253 | + public async Task EvaluateFlag_WhenResponseDefersToCodeDefault_ShouldUseDefaultValue() |
| 254 | + { |
| 255 | + // Arrange |
| 256 | + const string flagKey = "code-default"; |
| 257 | + const bool defaultValue = true; |
| 258 | + |
| 259 | + const string jsonResponse = "{\"key\":\"code-default\",\"variant\":\"control\",\"metadata\":{\"traceId\":\"abc-123\"}}"; |
| 260 | + this._mockHandler.SetupResponse(HttpStatusCode.OK, jsonResponse); |
| 261 | + |
| 262 | + using var client = new OfrepClient(this._configuration, this._mockHandler, this._mockLogger); |
| 263 | + |
| 264 | + // Act |
| 265 | + var result = await client.EvaluateFlag(flagKey, defaultValue, EvaluationContext.Empty); |
| 266 | + |
| 267 | + // Assert |
| 268 | + Assert.Equal(defaultValue, result.Value); |
| 269 | + Assert.Equal(Reason.Default, result.Reason); |
| 270 | + Assert.Equal("control", result.Variant); |
| 271 | + |
| 272 | + Assert.NotNull(result.Metadata); |
| 273 | + Assert.True(result.Metadata!.TryGetValue("traceId", out var traceId)); |
| 274 | + var traceIdElement = Assert.IsType<JsonElement>(traceId); |
| 275 | + Assert.Equal("abc-123", traceIdElement.GetString()); |
| 276 | + } |
| 277 | + |
| 278 | + [Fact] |
| 279 | + public async Task EvaluateFlag_WhenCodeDefaultResponseIncludesReason_ShouldPreserveServerReason() |
| 280 | + { |
| 281 | + // Arrange |
| 282 | + const string flagKey = "code-default-reason"; |
| 283 | + const int defaultValue = 7; |
| 284 | + |
| 285 | + const string jsonResponse = "{\"key\":\"code-default-reason\",\"reason\":\"STATIC\"}"; |
| 286 | + this._mockHandler.SetupResponse(HttpStatusCode.OK, jsonResponse); |
| 287 | + |
| 288 | + using var client = new OfrepClient(this._configuration, this._mockHandler, this._mockLogger); |
| 289 | + |
| 290 | + // Act |
| 291 | + var result = await client.EvaluateFlag(flagKey, defaultValue, EvaluationContext.Empty); |
| 292 | + |
| 293 | + // Assert |
| 294 | + Assert.Equal(defaultValue, result.Value); |
| 295 | + Assert.Equal("STATIC", result.Reason); |
| 296 | + Assert.Null(result.Metadata); |
| 297 | + } |
| 298 | + |
251 | 299 | [Fact] |
252 | 300 | public async Task EvaluateFlag_WithEvaluationContext_ShouldIncludeContextInRequest() |
253 | 301 | { |
|
0 commit comments