public void FlagsAreSavedToPersistentStorageByDefault()
        {
            var storage   = new MockPersistentStorage();
            var flagsJson = "{\"flag\": {\"value\": 100}}";
            var config    = TestUtil.ConfigWithFlagsJson(simpleUser, appKey, flagsJson)
                            .FlagCacheManager(null)
                            .UpdateProcessorFactory(MockPollingProcessor.Factory(flagsJson))
                            .PersistentStorage(storage)
                            .Build();

            using (var client = TestUtil.CreateClient(config, simpleUser))
            {
                var storedJson = storage.GetValue(Constants.FLAGS_KEY_PREFIX + simpleUser.Key);
                var flags      = JsonConvert.DeserializeObject <IDictionary <string, FeatureFlag> >(storedJson);
                Assert.Equal(new JValue(100), flags["flag"].value);
            }
        }
        public void FlagsAreLoadedFromPersistentStorageByDefault()
        {
            var storage   = new MockPersistentStorage();
            var flagsJson = "{\"flag\": {\"value\": 100}}";

            storage.Save(Constants.FLAGS_KEY_PREFIX + simpleUser.Key, flagsJson);
            var config = TestUtil.ConfigWithFlagsJson(simpleUser, appKey, "{}")
                         .PersistentStorage(storage)
                         .FlagCacheManager(null) // use actual cache logic, not mock component (even though persistence layer is a mock)
                         .Offline(true)
                         .Build();

            using (var client = TestUtil.CreateClient(config, simpleUser))
            {
                Assert.Equal(100, client.IntVariation("flag", 99));
            }
        }