@@ -1658,5 +1658,68 @@ public void TestTrackListener(UserAttributes userAttributes, EventTags eventTags
1658
1658
}
1659
1659
1660
1660
#endregion // Test NotificationCenter
1661
+
1662
+ #region Test GetEnabledFeatures
1663
+
1664
+ [ Test ]
1665
+ public void TestGetEnabledFeaturesWithInvalidDatafile ( )
1666
+ {
1667
+ var optly = new Optimizely ( "Random datafile" , null , LoggerMock . Object ) ;
1668
+ Assert . IsEmpty ( optly . GetEnabledFeatures ( "some_user" , null ) ) ;
1669
+
1670
+ LoggerMock . Verify ( l => l . Log ( LogLevel . ERROR , "Datafile has invalid format. Failing 'GetEnabledFeatures'." ) , Times . Once ) ;
1671
+
1672
+ }
1673
+
1674
+ [ Test ]
1675
+ public void TestGetEnabledFeaturesWithNoFeatureEnabledForUser ( )
1676
+ {
1677
+ var userAttributes = new UserAttributes
1678
+ {
1679
+ { "device_type" , "iPhone" } ,
1680
+ { "location" , "San Francisco" }
1681
+ } ;
1682
+
1683
+ OptimizelyMock . Setup ( om => om . IsFeatureEnabled ( It . IsAny < string > ( ) , TestUserId , It . IsAny < UserAttributes > ( ) ) ) . Returns ( false ) ;
1684
+ Assert . IsEmpty ( OptimizelyMock . Object . GetEnabledFeatures ( TestUserId , userAttributes ) ) ;
1685
+ }
1686
+
1687
+ [ Test ]
1688
+ public void TestGetEnabledFeaturesWithSomeFeaturesEnabledForUser ( )
1689
+ {
1690
+ string [ ] enabledFeatures =
1691
+ {
1692
+ "boolean_feature" ,
1693
+ "double_single_variable_feature" ,
1694
+ "string_single_variable_feature" ,
1695
+ "multi_variate_feature" ,
1696
+ "empty_feature"
1697
+ } ;
1698
+ string [ ] notEnabledFeatures =
1699
+ {
1700
+ "integer_single_variable_feature" ,
1701
+ "boolean_single_variable_feature" ,
1702
+ "mutex_group_feature" ,
1703
+ "no_rollout_experiment_feature"
1704
+ } ;
1705
+ var userAttributes = new UserAttributes
1706
+ {
1707
+ { "device_type" , "iPhone" } ,
1708
+ { "location" , "San Francisco" }
1709
+ } ;
1710
+
1711
+ OptimizelyMock . Setup ( om => om . IsFeatureEnabled ( It . IsIn < string > ( enabledFeatures ) , TestUserId ,
1712
+ It . IsAny < UserAttributes > ( ) ) ) . Returns ( true ) ;
1713
+ OptimizelyMock . Setup ( om => om . IsFeatureEnabled ( It . IsIn < string > ( notEnabledFeatures ) , TestUserId ,
1714
+ It . IsAny < UserAttributes > ( ) ) ) . Returns ( false ) ;
1715
+
1716
+ var actualFeaturesList = OptimizelyMock . Object . GetEnabledFeatures ( TestUserId , userAttributes ) ;
1717
+
1718
+ // Verify that the returned feature list contains only enabledFeatures.
1719
+ CollectionAssert . AreEquivalent ( enabledFeatures , actualFeaturesList ) ;
1720
+ Array . ForEach ( notEnabledFeatures , nef => CollectionAssert . DoesNotContain ( actualFeaturesList , nef ) ) ;
1721
+ }
1722
+
1723
+ #endregion // Test GetEnabledFeatures
1661
1724
}
1662
1725
}
0 commit comments