def test_ugettext_plural(self):
     """get_all_translations() doesn't call ugettext for plural msgids"""
     with patch('django.utils.translation.ugettext') as ugettext:
         with patch_settings(LANGUAGES=(('fi', 'Finnish'),)):
             translations = get_all_translations('a message id',
                                                 'plural message id')
     self.assertFalse(ugettext.called)
 def test_default_match(self):
     """LIVETRANSLATION_JQUERY is the default, match <script> tag"""
     config = (DEFAULT_JQUERY_PATTERN, "DUMMY")
     with patch_settings(LIVETRANSLATION_JQUERY=config):
         result = find_jquery_link(HAS_JQUERY)
     self.assertEqual(result.start(), 12)
     self.assertEqual(result.end(), 59)
 def test_restores_old_language(self):
     """get_all_translations() restores old active language"""
     get_language = Mock(return_value='old language')
     with patch('django.utils.translation.get_language', get_language):
         with patch('django.utils.translation.activate') as activate:
             with patch_settings(LANGUAGES=(('fi', 'Finnish'),)):
                 get_all_translations('a message id')
     self.assertEqual(activate.call_args,
                      (('old language',), {}))
 def test_custom(self):
     """"""
     config = ("DUMMY", "/jquery.js")
     with patch_settings(LIVETRANSLATION_JQUERY=config):
         result = insert_jquery_link(NO_JQUERY)
     self.assertEqual(
         result,
         u"<html><head>"
         u'<script type="text/javascript" src="/jquery.js"></script>'
         u'<script type="text/javascript"'
         u' src="/static/js/jquery.livetranslation.js"></script>'
         u'<link rel="stylesheet" type="text/css"'
         u' href="/static/css/livetranslation.css"/>'
         u"</head></html>",
     )
 def test_default(self):
     """"""
     config = ("DUMMY", DEFAULT_JQUERY_URL)
     with patch_settings(LIVETRANSLATION_JQUERY=config):
         result = insert_jquery_link(NO_JQUERY)
     self.assertEqual(
         result,
         u"<html><head>"
         u'<script type="text/javascript" src="'
         u'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">'
         u"</script>"
         u'<script type="text/javascript"'
         u' src="/static/js/jquery.livetranslation.js"></script>'
         u'<link rel="stylesheet" type="text/css"'
         u' href="/static/css/livetranslation.css"/>'
         u"</head></html>",
     )
    def test_ugettext_singular(self):
        """get_all_translations() calls ugettext for only-singular msgids"""
        data = {'ugettext_calls': []}

        def activate(langcode, data=data):
            data['langcode'] = langcode

        def ugettext(msgid, data=data):
            data['ugettext_calls'].append((msgid, data['langcode']))
            return '%s in %s' % (msgid, data['langcode'])

        with patch('django.utils.translation.activate', activate):
            with patch('django.utils.translation.ugettext', ugettext):
                with patch_settings(LANGUAGES=(('fi', 'Finnish'),
                                               ('sv', 'Swedish'))):
                    translations = get_all_translations('a message id')
        self.assertEqual(data['ugettext_calls'],
                         [('a message id', 'fi'), ('a message id', 'sv')])
    def test_results_singular(self):
        """get_all_translations() gives good translations for singular msgids"""
        get_language = Mock(return_value='en-us')

        data = {}

        def activate(langcode, data=data):
            data['langcode'] = langcode

        def ugettext(msgid, data=data):
            return '%s in %s' % (msgid, data['langcode'])

        with patch('django.utils.translation.activate', activate):
            with patch('django.utils.translation.ugettext', ugettext):
                with patch_settings(LANGUAGES=(('fi', 'Finnish'),
                                               ('sv', 'Swedish'))):
                    translations = get_all_translations('a message id')
        self.assertEqual(translations.keys(), ['singular'])
        self.assertEqual(translations['singular']['msgid'], 'a message id')
        self.assertEqual(translations['singular']['msgstrs'],
                         [('fi', 'a message id in fi'),
                          ('sv', 'a message id in sv')])
    def test_ungettext_plural(self):
        """get_all_translations() calls ungettext for msgids with plurals"""
        data = {'ungettext_calls': []}

        def activate(langcode, data=data):
            data['langcode'] = langcode

        def ungettext(msgid, msgid_plural, count, data=data):
            data['ungettext_calls'].append(
                (msgid, msgid_plural, count, data['langcode']))
            return '%s/%s(%d) in %s' % (
                msgid, msgid_plural, count, data['langcode'])

        with patch('django.utils.translation.activate', activate):
            with patch('django.utils.translation.ungettext', ungettext):
                with patch_settings(LANGUAGES=(('fi', 'Finnish'),
                                               ('sv', 'Swedish'))):
                    translations = get_all_translations('a message id',
                                                        'plural message id')
        self.assertEqual(data['ungettext_calls'],
                         [('a message id', 'plural message id', 1, 'fi'),
                          ('a message id', 'plural message id', 2, 'fi'),
                          ('a message id', 'plural message id', 1, 'sv'),
                          ('a message id', 'plural message id', 2, 'sv')])
 def test_substitution(self):
     """substitution"""
     markup = "[%(id)d/]"
     with patch_settings(LIVETRANSLATION_INTERMEDIATE_MARKUP=markup):
         markup = get_translation_item_markup(1)
     self.assertEqual(markup, "[1/]")
 def test_default_url(self):
     """LIVETRANSLATION_JQUERY == None -> default URL"""
     with patch_settings(LIVETRANSLATION_JQUERY=None):
         pattern, url = process_jquery_setting()
     self.assertEqual(url, "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js")
 def test_string_pattern(self):
     """LIVETRANSLATION_JQUERY is a string, base pattern on it"""
     with patch_settings(LIVETRANSLATION_JQUERY=u"/jquery.js"):
         pattern, url = process_jquery_setting()
     self.assertEqual(pattern, ur'<script\s[^>]*src="\/jquery\.js"')
 def test_default_no_match(self):
     """LIVETRANSLATION_JQUERY is the default, no match for <script> tag"""
     config = (DEFAULT_JQUERY_PATTERN, "DUMMY")
     with patch_settings(LIVETRANSLATION_JQUERY=config):
         result = find_jquery_link(NO_JQUERY)
     self.assertEqual(result, None)
 def test_none_pattern(self):
     """LIVETRANSLATION_JQUERY == None -> pattern == None"""
     with patch_settings(LIVETRANSLATION_JQUERY=None):
         pattern, url = process_jquery_setting()
     self.assertEqual(pattern, None)
 def test_custom_string_no_match(self):
     """LIVETRANSLATION_JQUERY is a string, no match for <script> tag"""
     with patch_settings(LIVETRANSLATION_JQUERY=u"/jquery.js"):
         result = find_jquery_link(NO_JQUERY)
     self.assertEqual(result, None)
 def test_custom_string_match(self):
     """LIVETRANSLATION_JQUERY is a string, match <script> tag"""
     with patch_settings(LIVETRANSLATION_JQUERY=u"/jquery.js"):
         result = find_jquery_link(HAS_JQUERY)
     self.assertEqual(result.start(), 12)
     self.assertEqual(result.end(), 59)
 def test_never_load_jquery_setting(self):
     """LIVETRANSLATION_JQUERY == None -> always assume jQuery is loaded"""
     with patch_settings(LIVETRANSLATION_JQUERY=None):
         result = find_jquery_link(NO_JQUERY)
     self.assertEqual(result, True)
 def test_string_url(self):
     """LIVETRANSLATION_JQUERY is a string, use as the jQuery URL"""
     with patch_settings(LIVETRANSLATION_JQUERY=u"/jquery.js"):
         pattern, url = process_jquery_setting()
     self.assertEqual(url, "/jquery.js")