Ejemplo n.º 1
0
    def test_no_locales(self):
        """
        If the form being saved has no locale field, do not alter the snippet's
        locale.
        """
        en_us = SnippetLocale(locale='en-us')
        fr = SnippetLocale(locale='fr')
        snippet = SnippetFactory.create(locale_set=[en_us, fr])
        data = {
            'name': 'test',
            'data': '{}',
            'template': snippet.template.id,
            'priority': 0,
            'weight': 100,
        }

        # FormClass has no locale field.
        class FormClass(ModelForm):
            class Meta:
                model = Snippet

        form = FormClass(data, instance=snippet)
        self._save_model(snippet, form)

        snippet = Snippet.objects.get(pk=snippet.pk)
        locales = (l.locale for l in snippet.locale_set.all())
        eq_(set(locales), set(('en-us', 'fr')))
Ejemplo n.º 2
0
 def test_match_client_match_locale(self):
     params = {}
     snippet = SnippetFactory.create(on_release=True, on_startpage_4=True,
                                     locale_set=[SnippetLocale(locale='en-US')])
     SnippetFactory.create(on_release=True, on_startpage_4=True,
                           locale_set=[SnippetLocale(locale='fr')])
     self._assert_client_matches_snippets(params, [snippet])
Ejemplo n.º 3
0
 def test_match_client_multiple_locales_distinct(self):
     """
     If a snippet has multiple locales and a client matches more
     than one of them, the snippet should only be included in the
     queryset once.
     """
     params = {'locale': 'es-mx'}
     snippet = SnippetFactory.create(on_release=True, on_startpage_4=True,
                                     locale_set=[SnippetLocale(locale='es'),
                                                 SnippetLocale(locale='es-mx')])
     self._assert_client_matches_snippets(params, [snippet])
Ejemplo n.º 4
0
 def test_match_client_multiple_locales(self):
     """
     If there are multiple locales that should match the client's
     locale, include all of them.
     """
     params = {'locale': 'es-mx'}
     snippet_1 = SnippetFactory.create(on_release=True, on_startpage_4=True,
                                       locale_set=[SnippetLocale(locale='es')])
     snippet_2 = SnippetFactory.create(on_release=True, on_startpage_4=True,
                                       locale_set=[SnippetLocale(locale='es-mx')])
     self._assert_client_matches_snippets(params, [snippet_1, snippet_2])
Ejemplo n.º 5
0
 def test_match_client_match_channel_partially(self):
     """
     Client channels like "release-cck-mozilla14" should match
     "release".
     """
     params = {'channel': 'release-cck-mozilla14'}
     snippet = SnippetFactory.create(on_release=True, on_startpage_4=True,
                                     locale_set=[SnippetLocale(locale='en-US')])
     SnippetFactory.create(on_release=False, on_startpage_4=True,
                           locale_set=[SnippetLocale(locale='en-US')])
     self._assert_client_matches_snippets(params, [snippet])
Ejemplo n.º 6
0
 def test_exclusion_cmr(self):
     cmr_el = ClientMatchRuleFactory(locale='/^el/', is_exclusion=True)
     snippet = SnippetFactory(client_match_rules=[cmr_el],
                              locale_set=[
                                  SnippetLocale(locale='pl'),
                                  SnippetLocale(locale='en')
                              ])
     cmr_to_locales_action(None, None, [snippet])
     eq_(snippet.locale_set.count(), len(LANGUAGE_VALUES) - 1)
     ok_(not snippet.locale_set.filter(locale='el').exists())
     eq_(snippet.client_match_rules.count(), 0)
Ejemplo n.º 7
0
 def test_base(self):
     cmr_el = ClientMatchRuleFactory(locale='/^el/')
     cmr_ast = ClientMatchRuleFactory(locale='ast|ja-JP-mac',
                                      channel='aurora')
     cmr_es = ClientMatchRuleFactory(locale='/(es-MX)|(es-AR)/')
     cmr_bogus = ClientMatchRuleFactory(locale='/foo/')
     snippet = SnippetFactory(
         client_match_rules=[cmr_el, cmr_ast, cmr_es, cmr_bogus],
         locale_set=[
             SnippetLocale(locale='pl'),
             SnippetLocale(locale='en')
         ])
     cmr_to_locales_action(None, None, [snippet])
     eq_(snippet.locale_set.count(), 5)
     eq_(set(snippet.locale_set.values_list('locale', flat=True)),
         set(['el', 'ast', 'ja-jp-mac', 'es-mx', 'es-ar']))
     eq_(snippet.client_match_rules.count(), 1)
     eq_(snippet.client_match_rules.all()[0], cmr_ast)
Ejemplo n.º 8
0
 def test_match_client_invalid_locale(self):
     """
     If client sends invalid locale return snippets with no locales
     specified.
     """
     params = {'locale': 'foo'}
     snippet = SnippetFactory.create(on_release=True, on_startpage_4=True, locale_set=[])
     SnippetFactory.create(on_release=True, on_startpage_4=True,
                           locale_set=[SnippetLocale(locale='en-us')])
     self._assert_client_matches_snippets(params, [snippet])
Ejemplo n.º 9
0
    def test_save_model_locales(self):
        """
        save_model should delete any locales that were removed from the snippet
        and save any locales that were added.
        """
        en_us = SnippetLocale(locale='en-us')
        fr = SnippetLocale(locale='fr')
        snippet = SnippetFactory.create(locale_set=[en_us, fr])
        data = {
            'name': 'test',
            'data': '{}',
            'template': snippet.template.id,
            'locales': ['en-us', 'de'],
            'priority': 0,
            'weight': 100,
        }

        form = SnippetAdminForm(data, instance=snippet)
        self._save_model(snippet, form)

        snippet = Snippet.objects.get(pk=snippet.pk)
        locales = (l.locale for l in snippet.locale_set.all())
        eq_(set(locales), set(('en-us', 'de')))
Ejemplo n.º 10
0
 def test_match_client_not_matching_startpage(self):
     params = {'startpage_version': '0'}
     snippet = SnippetFactory.create(on_release=True, on_startpage_4=True,
                                     locale_set=[SnippetLocale(locale='en-US')])
     self._assert_client_matches_snippets(params, [snippet])