@@ -332,4 +332,77 @@ public void TestJsonEvaluatorThrowsOnInvalidFlagMetadata()
332332 {
333333 Assert . Throws < ParseErrorException > ( ( ) => _jsonEvaluator . Sync ( FlagConfigurationUpdateType . ALL , Utils . invalidFlagMetadata ) ) ;
334334 }
335+
336+ [ Fact ]
337+ public void TestJsonEvaluatorFlagWithNoDefaultVariantReturnsNotFound ( )
338+ {
339+ // Arrange
340+ var flag = //lang=json
341+ """
342+ {
343+ "flags": {
344+ "flag-with-no-default-variant": {
345+ "variants": {
346+ "on": true,
347+ "off": false
348+ },
349+ "notDefaultVariant": "on",
350+ "metadata":{
351+ "string": "1.0.2",
352+ "integer": 2,
353+ "boolean": true,
354+ "float": 0.1
355+ }
356+ }
357+ }
358+ }
359+ """ ;
360+
361+ this . _jsonEvaluator . Sync ( FlagConfigurationUpdateType . ALL , flag ) ;
362+
363+ // Act
364+ var result = this . _jsonEvaluator . ResolveBooleanValueAsync ( "flag-with-no-default-variant" , false ) ;
365+
366+ // Assert
367+ Assert . False ( result . Value ) ;
368+ Assert . Equal ( "flag-with-no-default-variant" , result . FlagKey ) ;
369+ Assert . Equal ( "ERROR" , result . Reason ) ;
370+ Assert . Equal ( ErrorType . FlagNotFound , result . ErrorType ) ;
371+ Assert . Equal ( "Flag 'flag-with-no-default-variant' has no default variant defined, will use code default" , result . ErrorMessage ) ;
372+ Assert . Null ( result . Variant ) ;
373+ Assert . NotNull ( result . FlagMetadata ) ;
374+ Assert . Equal ( "1.0.2" , result . FlagMetadata . GetString ( "string" ) ) ;
375+ Assert . Equal ( 2 , result . FlagMetadata . GetDouble ( "integer" ) ) ;
376+ Assert . Equal ( true , result . FlagMetadata . GetBool ( "boolean" ) ) ;
377+ Assert . Equal ( .1 , result . FlagMetadata . GetDouble ( "float" ) ) ;
378+ }
379+
380+ [ Fact ]
381+ public void TestJsonEvaluatorFlagWithEmptyDefaultVariantReturnsNotFound ( )
382+ {
383+ // Arrange
384+ var flag = //lang=json
385+ """
386+ {
387+ "flags": {
388+ "flag-with-empty-default-variant": {
389+ "variants": {
390+ "on": true,
391+ "off": false
392+ },
393+ "defaultVariant": ""
394+ }
395+ }
396+ }
397+ """ ;
398+
399+ this . _jsonEvaluator . Sync ( FlagConfigurationUpdateType . ALL , flag ) ;
400+
401+ // Act
402+ var result = this . _jsonEvaluator . ResolveBooleanValueAsync ( "flag-with-empty-default-variant" , false ) ;
403+
404+ // Assert
405+ Assert . False ( result . Value ) ;
406+ Assert . Equal ( ErrorType . FlagNotFound , result . ErrorType ) ;
407+ }
335408}
0 commit comments