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
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()
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">')
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
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()
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">')
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)
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)
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)
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)
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)
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)
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)
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)