def test_cache_all_samples(self): """Test the 'ALL_SAMPLES' list caches correctly.""" Sample.objects.create(name='mysample1', percent='100.0') # cache is initially empty cached_samples = cache.get(keyfmt(get_setting('ALL_SAMPLES_CACHE_KEY'))) self.assertIsNone(cached_samples) # calling waffejs view causes cache to be set self.client.get(reverse('wafflejs')) cached_samples = cache.get(keyfmt(get_setting('ALL_SAMPLES_CACHE_KEY'))) self.assertIsNotNone(cached_samples) self.assertSequenceEqual(['mysample1'], cached_samples) # creating a new flag invalidates the cache Sample.objects.create(name='mysample2', percent='100.0') cached_samples = cache.get(keyfmt(get_setting('ALL_SAMPLES_CACHE_KEY'))) self.assertIsNone(cached_samples) # calling waffejs view causes cache to be set for more than 1 switch self.client.get(reverse('wafflejs')) cached_samples = cache.get(keyfmt(get_setting('ALL_SAMPLES_CACHE_KEY'))) self.assertIsNotNone(cached_samples) self.assertSequenceEqual(['mysample1', 'mysample2'], cached_samples)
def test_cache_all_switches(self): """Test the 'ALL_SWITCHES' list caches correctly.""" Switch.objects.create(name='myswitch1', active=True) # cache is initially empty cached_switches = cache.get(keyfmt(get_setting('ALL_SWITCHES_CACHE_KEY'))) self.assertIsNone(cached_switches) # calling waffejs view causes cache to be set self.client.get(reverse('wafflejs')) cached_switches = cache.get(keyfmt(get_setting('ALL_SWITCHES_CACHE_KEY'))) self.assertIsNotNone(cached_switches) self.assertSequenceEqual([('myswitch1', True)], cached_switches) # creating a new flag invalidates the cache Switch.objects.create(name='myswitch2', active=True) cached_switches = cache.get(keyfmt(get_setting('ALL_SWITCHES_CACHE_KEY'))) self.assertIsNone(cached_switches) # calling waffejs view causes cache to be set for more than 1 switch self.client.get(reverse('wafflejs')) cached_switches = cache.get(keyfmt(get_setting('ALL_SWITCHES_CACHE_KEY'))) self.assertIsNotNone(cached_switches) self.assertSequenceEqual([('myswitch1', True), ('myswitch2', True)], cached_switches)
def test_cache_all_flags(self): """Test the 'ALL_FLAGS' list caches correctly.""" Flag.objects.create(name='myflag1', everyone=True) # cache is initially empty cached_flags = cache.get(keyfmt(get_setting('ALL_FLAGS_CACHE_KEY'))) self.assertIsNone(cached_flags) # calling waffejs view causes cache to be set self.client.get(reverse('wafflejs')) cached_flags = cache.get(keyfmt(get_setting('ALL_FLAGS_CACHE_KEY'))) self.assertIsNotNone(cached_flags) self.assertSequenceEqual(['myflag1'], cached_flags) # creating a new flag invalidates the cache Flag.objects.create(name='myflag2', everyone=True) cached_flags = cache.get(keyfmt(get_setting('ALL_FLAGS_CACHE_KEY'))) self.assertIsNone(cached_flags) # calling waffejs view causes cache to be set for more than 2 flags self.client.get(reverse('wafflejs')) cached_flags = cache.get(keyfmt(get_setting('ALL_FLAGS_CACHE_KEY'))) self.assertIsNotNone(cached_flags) self.assertSequenceEqual(['myflag1', 'myflag2'], cached_flags)
def _generate_waffle_js(request): flags = cache.get(keyfmt(FLAGS_ALL_CACHE_KEY)) if not flags: flags = Flag.objects.values_list('name', flat=True) cache.add(keyfmt(FLAGS_ALL_CACHE_KEY), flags) flag_values = [(f, flag_is_active(request, f)) for f in flags] switches = cache.get(keyfmt(SWITCHES_ALL_CACHE_KEY)) if not switches: switches = Switch.objects.values_list('name', 'active') cache.add(keyfmt(SWITCHES_ALL_CACHE_KEY), switches) samples = cache.get(keyfmt(SAMPLES_ALL_CACHE_KEY)) if not samples: samples = Sample.objects.values_list('name', flat=True) cache.add(keyfmt(SAMPLES_ALL_CACHE_KEY), samples) sample_values = [(s, sample_is_active(s)) for s in samples] flag_default = getattr(settings, 'WAFFLE_FLAG_DEFAULT', False) switch_default = getattr(settings, 'WAFFLE_SWITCH_DEFAULT', False) sample_default = getattr(settings, 'WAFFLE_SAMPLE_DEFAULT', False) return loader.render_to_string('waffle/waffle.js', { 'flags': flag_values, 'switches': switches, 'samples': sample_values, 'flag_default': flag_default, 'switch_default': switch_default, 'sample_default': sample_default, })
def wafflejs(request): flags = cache.get(keyfmt(FLAGS_ALL_CACHE_KEY)) if not flags: flags = Flag.objects.values_list('name', flat=True) cache.add(keyfmt(FLAGS_ALL_CACHE_KEY), flags) flag_values = [(f, flag_is_active(request, f)) for f in flags] switches = cache.get(keyfmt(SWITCHES_ALL_CACHE_KEY)) if not switches: switches = Switch.objects.values_list('name', 'active') cache.add(keyfmt(SWITCHES_ALL_CACHE_KEY), switches) samples = cache.get(keyfmt(SAMPLES_ALL_CACHE_KEY)) if not samples: samples = Sample.objects.values_list('name', flat=True) cache.add(keyfmt(SAMPLES_ALL_CACHE_KEY), samples) sample_values = [(s, sample_is_active(s)) for s in samples] flag_default = getattr(settings, 'WAFFLE_FLAG_DEFAULT', False) switch_default = getattr(settings, 'WAFFLE_SWITCH_DEFAULT', False) sample_default = getattr(settings, 'WAFFLE_SAMPLE_DEFAULT', False) return render_to_response('waffle/waffle.js', { 'flags': flag_values, 'switches': switches, 'samples': sample_values, 'flag_default': flag_default, 'switch_default': switch_default, 'sample_default': sample_default, }, mimetype='application/x-javascript')
def _generate_waffle_js(request): flags = cache.get(keyfmt(FLAGS_ALL_CACHE_KEY)) if not flags: flags = Flag.objects.values_list('name', flat=True) cache.add(keyfmt(FLAGS_ALL_CACHE_KEY), flags) flag_values = [(f, flag_is_active(request, f)) for f in flags] switches = cache.get(keyfmt(SWITCHES_ALL_CACHE_KEY)) if not switches: switches = Switch.objects.values_list('name', 'active') cache.add(keyfmt(SWITCHES_ALL_CACHE_KEY), switches) samples = cache.get(keyfmt(SAMPLES_ALL_CACHE_KEY)) if not samples: samples = Sample.objects.values_list('name', flat=True) cache.add(keyfmt(SAMPLES_ALL_CACHE_KEY), samples) sample_values = [(s, sample_is_active(s)) for s in samples] flag_default = getattr(settings, 'WAFFLE_FLAG_DEFAULT', False) switch_default = getattr(settings, 'WAFFLE_SWITCH_DEFAULT', False) sample_default = getattr(settings, 'WAFFLE_SAMPLE_DEFAULT', False) return loader.render_to_string( 'waffle/waffle.js', { 'flags': flag_values, 'switches': switches, 'samples': sample_values, 'flag_default': flag_default, 'switch_default': switch_default, 'sample_default': sample_default, })
def _generate_waffle_js(request): flags = cache.get(keyfmt(FLAGS_ALL_CACHE_KEY)) if not flags: flags = Flag.objects.values_list("name", flat=True) cache.add(keyfmt(FLAGS_ALL_CACHE_KEY), flags) flag_values = [(f, flag_is_active(request, f)) for f in flags] switches = cache.get(keyfmt(SWITCHES_ALL_CACHE_KEY)) if not switches: switches = Switch.objects.values_list("name", "active") cache.add(keyfmt(SWITCHES_ALL_CACHE_KEY), switches) samples = cache.get(keyfmt(SAMPLES_ALL_CACHE_KEY)) if not samples: samples = Sample.objects.values_list("name", flat=True) cache.add(keyfmt(SAMPLES_ALL_CACHE_KEY), samples) sample_values = [(s, sample_is_active(s)) for s in samples] flag_default = getattr(settings, "WAFFLE_FLAG_DEFAULT", False) switch_default = getattr(settings, "WAFFLE_SWITCH_DEFAULT", False) sample_default = getattr(settings, "WAFFLE_SAMPLE_DEFAULT", False) return loader.render_to_string( "waffle/waffle.js", { "flags": flag_values, "switches": switches, "samples": sample_values, "flag_default": flag_default, "switch_default": switch_default, "sample_default": sample_default, }, )