def test_does_not_show_subsites_of_other_language_groups(self, browser):
        german = create(
            Builder('subsite').titled(u'Subsite DE').with_language('de'))
        french = create(
            Builder('subsite').titled(u'Subsite FR').with_language('fr'))
        italian = create(
            Builder('subsite').titled(u'Subsite IT').with_language('it'))
        spanish = create(
            Builder('subsite').titled(u'Subsite ES').with_language('es'))

        introduce_language_subsites(german, french)
        introduce_language_subsites(italian, spanish)

        browser.login()

        self.assertEquals(
            {
                'german': [u'Fran\xe7ais'],
                'french': [u'Deutsch'],
                'italian': [u'Espa\xf1ol'],
                'spanish': [u'Italiano']
            }, {
                'german': LanguageSwitcher().visit(german).languages,
                'french': LanguageSwitcher().visit(french).languages,
                'italian': LanguageSwitcher().visit(italian).languages,
                'spanish': LanguageSwitcher().visit(spanish).languages
            })
    def test_switch_is_invisible_unless_languages_hooked_up(self, browser):
        german = create(
            Builder('subsite').titled(u'Subsite DE').with_language('de'))
        french = create(
            Builder('subsite').titled(u'Subsite FR').with_language('fr'))

        browser.login().visit(german)
        self.assertFalse(LanguageSwitcher().available)
        introduce_language_subsites(german, french)
        browser.login().visit(german)
        self.assertTrue(LanguageSwitcher().available)
    def test_going_to_another_language(self, browser):
        german = create(
            Builder('subsite').titled(u'Subsite DE').with_language('de'))
        french = create(
            Builder('subsite').titled(u'Subsite FR').with_language('fr'))
        introduce_language_subsites(german, french)

        browser.login().visit(german)
        LanguageSwitcher().click_language(u'Fran\xe7ais')
        self.assertEquals(french.absolute_url(), browser.url)
        LanguageSwitcher().click_language(u'Deutsch')
        self.assertEquals(german.absolute_url(), browser.url)
    def test_current_link_is_language_on_plone_site_root(self, browser):
        create(
            Builder('subsite').titled(u'Subsite').with_language('de').having(
                link_site_in_languagechooser=True))

        browser.login().visit()
        self.assertEquals(u'English', LanguageSwitcher().current)
    def test_listing_only_site_root_works(self, browser):
        german = create(
            Builder('subsite').titled(u'Subsite').with_language('de').having(
                link_site_in_languagechooser=True))

        browser.login().visit(german)
        self.assertEquals([u'English'], LanguageSwitcher().languages)
    def test_other_site_not_visible_when_no_subsite_language_defined(
            self, browser):
        german = create(
            Builder('subsite').titled(u'Subsite DE').with_language('de'))
        unkown = create(Builder('subsite').titled(u'Subsite ...'))
        introduce_language_subsites(german, unkown)

        browser.login().visit(german)
        self.assertEquals([], LanguageSwitcher().languages)
    def test_current_link_is_current_language(self, browser):
        german = create(
            Builder('subsite').titled(u'Subsite DE').with_language('de'))
        french = create(
            Builder('subsite').titled(u'Subsite FR').with_language('fr'))
        introduce_language_subsites(german, french)

        browser.login().visit(german)
        self.assertEquals(u'Deutsch', LanguageSwitcher().current)
    def test_shows_other_referenced_languages(self, browser):
        german = create(
            Builder('subsite').titled(u'Subsite DE').with_language('de'))
        french = create(
            Builder('subsite').titled(u'Subsite FR').with_language('fr'))
        italian = create(
            Builder('subsite').titled(u'Subsite IT').with_language('it'))
        introduce_language_subsites(german, french, italian)

        browser.login().visit(german)
        self.assertEquals([u'Fran\xe7ais', u'Italiano'],
                          LanguageSwitcher().languages)
    def test_hooking_up_language_subsites_with_site_root(self, browser):
        # Assumed that the site root is configured to be english.
        german = create(
            Builder('subsite').titled(u'Subsite').with_language('de').having(
                link_site_in_languagechooser=True))
        french = create(
            Builder('subsite').titled(u'Subsite').with_language('fr').having(
                link_site_in_languagechooser=True))

        introduce_language_subsites(german, french)

        browser.login()

        self.assertEquals(
            {
                'site root': [u'Deutsch', u'Fran\xe7ais'],
                'german': [u'English', u'Fran\xe7ais'],
                'french': [u'Deutsch', u'English']
            }, {
                'site root': LanguageSwitcher().visit_portal().languages,
                'german': LanguageSwitcher().visit(german).languages,
                'french': LanguageSwitcher().visit(french).languages
            })