@@ -1658,5 +1658,68 @@ public void TestTrackListener(UserAttributes userAttributes, EventTags eventTags
16581658 }
16591659
16601660 #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
16611724 }
16621725}
0 commit comments