Exemplo n.º 1
0
    def test_cannot_copy_footer_menu(self):
        get_user_model().objects._create_user(username='******',
                                              email='*****@*****.**',
                                              password='******',
                                              is_staff=True,
                                              is_superuser=True)

        site_one = Site.objects.get(id=1)
        site_two = Site.objects.get(id=2)
        # Start by getting the footer menu for site one
        site_one_footer_menu = FlatMenu.get_for_site('footer', site_one)
        # Create a new menu from the above one, for site two
        site_two_footer_menu = site_one_footer_menu
        site_two_footer_menu.id = None
        site_two_footer_menu.site = site_two
        site_two_footer_menu.save()

        # Refetche menu one
        site_one_footer_menu = FlatMenu.get_for_site('footer', site_one)

        copy_view = self.app.get('/admin/wagtailmenus/flatmenu/copy/%s/' %
                                 site_one_footer_menu.pk,
                                 user='******')
        form = copy_view.forms[1]
        form['site'] = site_two.pk
        response = form.submit()

        assert 'The flat menu could not be saved due to errors' in response
        assert 'Site and handle must create a unique combination.' in response
Exemplo n.º 2
0
    def test_copy_footer_menu(self):
        get_user_model().objects._create_user(username='******',
                                              email='*****@*****.**',
                                              password='******',
                                              is_staff=True,
                                              is_superuser=True)

        # First check that there are 3 menus
        response = self.app.get('/admin/wagtailmenus/flatmenu/', user='******')
        assert len(response.context['object_list']) == 3

        site_one = Site.objects.get(id=1)
        site_two = Site.objects.get(id=2)

        # Start by getting the footer menu for site one
        site_one_footer_menu = FlatMenu.get_for_site('footer', site_one)
        copy_view = self.app.get('/admin/wagtailmenus/flatmenu/copy/%s/' %
                                 site_one_footer_menu.pk,
                                 user='******')

        form = copy_view.forms[1]
        form['site'] = site_two.pk
        response = form.submit().follow()

        assert len(response.context['object_list']) == 4
        assert '<div class="changelist-filter col3">' in response

        # Let's just compare the two menu with the old one
        site_two_footer_menu = FlatMenu.get_for_site('footer', site_two)

        assert site_one_footer_menu.pk != site_two_footer_menu.pk
        assert site_one_footer_menu.heading == site_two_footer_menu.heading
        assert site_one_footer_menu.menu_items.count(
        ) == site_two_footer_menu.menu_items.count()
Exemplo n.º 3
0
    def test_flatmenu_list_multisite(self):
        site_one = Site.objects.get(id=1)
        site_two = Site.objects.get(id=2)

        # Start by getting the footer menu for site one
        site_one_footer_menu = FlatMenu.get_for_site('footer', site_one)

        # Use menu one to create another for site two
        site_two_footer_menu = site_one_footer_menu
        site_two_footer_menu.site = site_two
        site_two_footer_menu.id = None
        site_two_footer_menu.save()

        # Redefine menu one, so that we definitely have two menus
        site_one_footer_menu = FlatMenu.get_for_site('footer', site_one)

        # Check the menus aren't the same
        self.assertNotEqual(site_one_footer_menu, site_two_footer_menu)

        # Check that the listing has changed to include the site column and
        # filters
        response = self.client.get('/admin/wagtailmenus/flatmenu/')
        self.assertEqual(response.status_code, 200)
        self.assertContains(response,
                            '<th scope="col"  class="sortable column-site">')
        self.assertContains(response, '<div class="changelist-filter col3">')
Exemplo n.º 4
0
    def test_cannot_copy_footer_menu(self):
        get_user_model().objects._create_user(
            username='******', email='*****@*****.**', password='******',
            is_staff=True, is_superuser=True)

        site_one = Site.objects.get(id=1)
        site_two = Site.objects.get(id=2)
        # Start by getting the footer menu for site one
        site_one_footer_menu = FlatMenu.get_for_site('footer', site_one)
        # Create a new menu from the above one, for site two
        site_two_footer_menu = site_one_footer_menu
        site_two_footer_menu.id = None
        site_two_footer_menu.site = site_two
        site_two_footer_menu.save()

        # Refetche menu one
        site_one_footer_menu = FlatMenu.get_for_site('footer', site_one)

        copy_view = self.app.get(
            '/admin/wagtailmenus/flatmenu/copy/%s/' % site_one_footer_menu.pk,
            user='******')
        form = copy_view.forms[1]
        form['site'] = site_two.pk
        response = form.submit()

        assert 'The flat menu could not be saved due to errors' in response
        assert 'Site and handle must create a unique combination.' in response
Exemplo n.º 5
0
    def test_copy_footer_menu(self):
        get_user_model().objects._create_user(
            username='******', email='*****@*****.**', password='******',
            is_staff=True, is_superuser=True)

        # First check that there are 3 menus
        response = self.app.get('/admin/wagtailmenus/flatmenu/', user='******')
        assert len(response.context['object_list']) == 3

        site_one = Site.objects.get(id=1)
        site_two = Site.objects.get(id=2)

        # Start by getting the footer menu for site one
        site_one_footer_menu = FlatMenu.get_for_site('footer', site_one)
        copy_view = self.app.get(
            '/admin/wagtailmenus/flatmenu/copy/%s/' % site_one_footer_menu.pk,
            user='******')

        form = copy_view.forms[1]
        form['site'] = site_two.pk
        response = form.submit().follow()

        assert len(response.context['object_list']) == 4
        assert '<div class="changelist-filter col3">' in response

        # Let's just compare the two menu with the old one
        site_two_footer_menu = FlatMenu.get_for_site('footer', site_two)

        assert site_one_footer_menu.pk != site_two_footer_menu.pk
        assert site_one_footer_menu.heading == site_two_footer_menu.heading
        assert site_one_footer_menu.menu_items.count() == site_two_footer_menu.menu_items.count()
Exemplo n.º 6
0
    def test_flatmenu_list_multisite(self):
        site_one = Site.objects.get(id=1)
        site_two = Site.objects.get(id=2)

        # Start by getting the footer menu for site one
        site_one_footer_menu = FlatMenu.get_for_site('footer', site_one)

        # Use menu one to create another for site two
        site_two_footer_menu = site_one_footer_menu
        site_two_footer_menu.site = site_two
        site_two_footer_menu.id = None
        site_two_footer_menu.save()

        # Redefine menu one, so that we definitely have two menus
        site_one_footer_menu = FlatMenu.get_for_site('footer', site_one)

        # Check the menus aren't the same
        self.assertNotEqual(site_one_footer_menu, site_two_footer_menu)

        # Check that the listing has changed to include the site column and
        # filters
        response = self.client.get('/admin/wagtailmenus/flatmenu/')
        self.assertEqual(response.status_code, 200)
        self.assertContains(
            response, '<th scope="col"  class="sortable column-site">')
        self.assertContains(response, '<div class="changelist-filter col3">')
Exemplo n.º 7
0
 def test_returns_provided_site_matches_over_default_site_matches(self):
     for handle in ('test-1', 'test-2', 'test-3'):
         with self.assertNumQueries(1):
             result = FlatMenu.get_for_site(
                 handle=handle,
                 site=self.not_default_site,
                 fall_back_to_default_site_menus=True)
         self.assertEqual(result.site_id, self.not_default_site.id)
Exemplo n.º 8
0
 def test_returns_provided_site_matches_over_default_site_matches(self):
     for handle in ('test-1', 'test-2', 'test-3'):
         with self.assertNumQueries(1):
             result = FlatMenu.get_for_site(
                 handle=handle,
                 site=self.not_default_site,
                 fall_back_to_default_site_menus=True
             )
         self.assertEqual(result.site_id, self.not_default_site.id)
Exemplo n.º 9
0
    def test_flat_menu_get_for_site_with_default_fallback(self):
        site_one = Site.objects.get(pk=1)
        site_two = Site.objects.get(pk=2)

        # Site one (default) definitiely has a menu defined with the handle
        # `footer`
        menu = FlatMenu.get_for_site("footer", site_one)
        site_one_menu_pk = menu.pk
        self.assertIsNotNone(menu)

        # Site two doesn't have any menus defined, so this should return None
        menu = FlatMenu.get_for_site("footer", site_two)
        self.assertIsNone(menu)

        # But if we use the `use_default_site_menu_as_fallback` flag to fetch
        # from the default site, we should get the one defined for site_one
        menu = FlatMenu.get_for_site("footer", site_two, True)
        self.assertIsNotNone(menu)
        self.assertEqual(menu.pk, site_one_menu_pk)
Exemplo n.º 10
0
    def test_flat_menu_get_for_site_with_default_fallback(self):
        site_one = Site.objects.get(pk=1)
        site_two = Site.objects.get(pk=2)

        # Site one (default) definitiely has a menu defined with the handle
        # `footer`
        menu = FlatMenu.get_for_site('footer', site_one)
        site_one_menu_pk = menu.pk
        self.assertIsNotNone(menu)

        # Site two doesn't have any menus defined, so this should return None
        menu = FlatMenu.get_for_site('footer', site_two)
        self.assertIsNone(menu)

        # But if we use the `use_default_site_menu_as_fallback` flag to fetch
        # from the default site, we should get the one defined for site_one
        menu = FlatMenu.get_for_site('footer', site_two, True)
        self.assertIsNotNone(menu)
        self.assertEqual(menu.pk, site_one_menu_pk)
Exemplo n.º 11
0
    def test_returns_none_if_no_match_for_supplied_site_and_fall_back_to_default_site_menus_is_false(self):
        test_handle = 'test-1'

        FlatMenu.objects.filter(site=self.not_default_site, handle=test_handle).delete()

        with self.assertNumQueries(1):
            result = FlatMenu.get_for_site(
                handle=test_handle,
                site=self.not_default_site,
                fall_back_to_default_site_menus=False
            )
        self.assertIs(result, None)
Exemplo n.º 12
0
    def test_returns_none_if_no_match_for_supplied_site_and_fall_back_to_default_site_menus_is_false(
            self):
        test_handle = 'test-1'

        FlatMenu.objects.filter(site=self.not_default_site,
                                handle=test_handle).delete()

        with self.assertNumQueries(1):
            result = FlatMenu.get_for_site(
                handle=test_handle,
                site=self.not_default_site,
                fall_back_to_default_site_menus=False)
        self.assertIs(result, None)
Exemplo n.º 13
0
    def test_returns_menu_for_default_site_if_no_match_for_supplied_site_and_fall_back_to_default_site_menus_is_true(self):
        test_handle = 'test-1'

        FlatMenu.objects.filter(site=self.not_default_site, handle=test_handle).delete()

        expected_result = FlatMenu.objects.get(
            site=self.default_site, handle=test_handle)

        with self.assertNumQueries(1):
            result = FlatMenu.get_for_site(
                handle=test_handle,
                site=self.not_default_site,
                fall_back_to_default_site_menus=True
            )
        self.assertEqual(result, expected_result)
Exemplo n.º 14
0
    def test_returns_menu_for_default_site_if_no_match_for_supplied_site_and_fall_back_to_default_site_menus_is_true(
            self):
        test_handle = 'test-1'

        FlatMenu.objects.filter(site=self.not_default_site,
                                handle=test_handle).delete()

        expected_result = FlatMenu.objects.get(site=self.default_site,
                                               handle=test_handle)

        with self.assertNumQueries(1):
            result = FlatMenu.get_for_site(
                handle=test_handle,
                site=self.not_default_site,
                fall_back_to_default_site_menus=True)
        self.assertEqual(result, expected_result)