Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
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,
                              })
Пример #5
0
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')
Пример #6
0
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,
        })
Пример #7
0
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,
        },
    )