def test_slave_can_add_page_under_slave_home(self): with self.login_user_context(self.user_slave): # move to admin.py? # url = URL_CMS_PAGE_ADD + "?target=%d&position=last-child" % slave_page.pk # can he even access it over get? # response = self.client.get(url) # self.assertEqual(response.status_code, 200) # add page page = create_page("page", "nav_playground.html", "en", parent=self.slave_page, created_by=self.user_slave) # adds user_slave as page moderator for this page # public model shouldn't be available yet, because of the moderation # removed test cases since Title object does not inherit from Publisher anymore #self.assertObjectExist(Title.objects, slug=page_data['slug']) #self.assertObjectDoesNotExist(Title.objects.public(), slug=page_data['slug']) # moderators and approvement ok? self.assertEqual(page.get_moderator_queryset().count(), 1) self.assertEqual(page.moderator_state, Page.MODERATOR_CHANGED) # must not have public object yet self.assertFalse(page.publisher_public) self.assertTrue(has_generic_permission(page.pk, self.user_slave, "publish", 1)) # publish as slave, published as user_master before publish_page(page, self.user_slave) # user_slave is moderator for this page # approve / publish as user_slave # user master should be able to approve aswell page = approve_page(page, self.user_slave)
def test_page_added_by_slave_can_be_published_approved_by_user_master( self): # add page page = create_page("page", "nav_playground.html", "en", parent=self.slave_page, created_by=self.user_slave) # same as test_slave_can_add_page_under_slave_home self.assertEqual(page.get_moderator_queryset().count(), 1) self.assertEqual(page.moderator_state, Page.MODERATOR_CHANGED) # must not have public object yet self.assertFalse(page.publisher_public) self.assertTrue( has_generic_permission(page.pk, self.user_master, "publish", page.site.pk)) # should be True user_master should have publish permissions for childred aswell # don't test for published since publishing must be approved publish_page(page, self.user_master) # user_master is moderator for top level page / but can't approve descendants? # approve / publish as user_master # user master should be able to approve descendants page = approve_page(page, self.user_master)
def test_moderator_flags(self): """Add page under slave_home and check its flag """ page = create_page("page", "nav_playground.html", "en", parent=self.slave_page) # moderator_state must be changed self.assertEqual(page.moderator_state, Page.MODERATOR_CHANGED) # check publish box page = publish_page(page, self.user_slave) # page should request approvement now self.assertEqual(page.moderator_state, Page.MODERATOR_NEED_APPROVEMENT) # approve it by master # approve this page - but it doesn't get published yet, because # slave home is not published page = approve_page(page, self.user_master) # public page must not exist because of parent self.assertFalse(page.publisher_public) # waiting for parents self.assertEqual(page.moderator_state, Page.MODERATOR_APPROVED_WAITING_FOR_PARENTS) # publish slave page slave_page = publish_page(self.slave_page, self.user_master) self.assertFalse(page.publisher_public) self.assertFalse(slave_page.publisher_public) # they must be approved first slave_page = approve_page(slave_page, self.user_master) # master is approved self.assertEqual(slave_page.moderator_state, Page.MODERATOR_APPROVED) # reload page page = self.reload_page(page) # page must be approved also now self.assertEqual(page.moderator_state, Page.MODERATOR_APPROVED)
def test_page_added_by_slave_can_be_published_approved_by_user_master(self): # add page page = create_page("page", "nav_playground.html", "en", parent=self.slave_page, created_by=self.user_slave) # same as test_slave_can_add_page_under_slave_home self.assertEqual(page.get_moderator_queryset().count(), 1) self.assertEqual(page.moderator_state, Page.MODERATOR_CHANGED) # must not have public object yet self.assertFalse(page.publisher_public) self.assertTrue(has_generic_permission(page.pk, self.user_master, "publish", page.site.pk)) # should be True user_master should have publish permissions for childred aswell # don't test for published since publishing must be approved publish_page(page, self.user_master) # user_master is moderator for top level page / but can't approve descendants? # approve / publish as user_master # user master should be able to approve descendants page = approve_page(page, self.user_master)
def test_slave_can_add_page_under_slave_home(self): with self.login_user_context(self.user_slave): # move to admin.py? # url = URL_CMS_PAGE_ADD + "?target=%d&position=last-child" % slave_page.pk # can he even access it over get? # response = self.client.get(url) # self.assertEqual(response.status_code, 200) # add page page = create_page("page", "nav_playground.html", "en", parent=self.slave_page, created_by=self.user_slave) # adds user_slave as page moderator for this page # public model shouldn't be available yet, because of the moderation # removed test cases since Title object does not inherit from Publisher anymore #self.assertObjectExist(Title.objects, slug=page_data['slug']) #self.assertObjectDoesNotExist(Title.objects.public(), slug=page_data['slug']) # moderators and approvement ok? self.assertEqual(page.get_moderator_queryset().count(), 1) self.assertEqual(page.moderator_state, Page.MODERATOR_CHANGED) # must not have public object yet self.assertFalse(page.publisher_public) self.assertTrue( has_generic_permission(page.pk, self.user_slave, "publish", 1)) # publish as slave, published as user_master before publish_page(page, self.user_slave) # user_slave is moderator for this page # approve / publish as user_slave # user master should be able to approve aswell page = approve_page(page, self.user_slave)
def test_patricks_move(self): """ Tests permmod when moving trees of pages. 1. build following tree (master node is approved and published) slave-home / | \ A B C / \ D E / | \ F G H 2. perform move oparations: 1. move G under C 2. move E under G slave-home / | \ A B C / \ D G \ E / \ F H 3. approve nodes in following order: 1. approve H 2. approve G 3. approve E 4. approve F """ # TODO: this takes 5 seconds to run on my MBP. That's TOO LONG! # perform movings under slave... user_master = User.objects.get(username='******') self.move_page(self.pg, self.pc) # We have to reload pe when using mptt >= 0.4.2, # so that mptt realized that pg is no longer a child of pe self.move_page(self.pe, self.pg) # check urls - they should stay them same, there wasn't approved yet self.assertEqual( self.pg.publisher_public.get_absolute_url(), u'%smaster/slave-home/pb/pe/pg/' % self.get_pages_root() ) self.assertEqual( self.ph.publisher_public.get_absolute_url(), u'%smaster/slave-home/pb/pe/ph/' % self.get_pages_root() ) # pg & pe should require approval self.assertEqual(self.pg.requires_approvement(), True) self.assertEqual(self.pe.requires_approvement(), True) self.assertEqual(self.ph.requires_approvement(), False) # login as master, and approve moves approve_page(self.pg, user_master) approve_page(self.pe, user_master) approve_page(self.ph, user_master) approve_page(self.pf, user_master) # public parent check after move self.assertEqual(self.pg.publisher_public.parent.pk, self.pc.publisher_public_id) self.assertEqual(self.pe.publisher_public.parent.pk, self.pg.publisher_public_id) self.assertEqual(self.ph.publisher_public.parent.pk, self.pe.publisher_public_id) # check if urls are correct after move self.assertEqual( self.pg.publisher_public.get_absolute_url(), u'%smaster/slave-home/pc/pg/' % self.get_pages_root() ) self.assertEqual( self.ph.publisher_public.get_absolute_url(), u'%smaster/slave-home/pc/pg/pe/ph/' % self.get_pages_root() )
def test_patricks_move(self): """ Tests permmod when moving trees of pages. 1. build following tree (master node is approved and published) slave-home / | \ A B C / \ D E / | \ F G H 2. perform move oparations: 1. move G under C 2. move E under G slave-home / | \ A B C / \ D G \ E / \ F H 3. approve nodes in following order: 1. approve H 2. approve G 3. approve E 4. approve F """ # TODO: this takes 5 seconds to run on my MBP. That's TOO LONG! # perform movings under slave... user_master = User.objects.get(username='******') self.move_page(self.pg, self.pc) # We have to reload pe when using mptt >= 0.4.2, # so that mptt realized that pg is no longer a child of pe self.move_page(self.pe, self.pg) # check urls - they should stay them same, there wasn't approved yet self.assertEqual( self.pg.publisher_public.get_absolute_url(), u'%smaster/slave-home/pb/pe/pg/' % self.get_pages_root()) self.assertEqual( self.ph.publisher_public.get_absolute_url(), u'%smaster/slave-home/pb/pe/ph/' % self.get_pages_root()) # pg & pe should require approval self.assertEqual(self.pg.requires_approvement(), True) self.assertEqual(self.pe.requires_approvement(), True) self.assertEqual(self.ph.requires_approvement(), False) # login as master, and approve moves approve_page(self.pg, user_master) approve_page(self.pe, user_master) approve_page(self.ph, user_master) approve_page(self.pf, user_master) # public parent check after move self.assertEqual(self.pg.publisher_public.parent.pk, self.pc.publisher_public_id) self.assertEqual(self.pe.publisher_public.parent.pk, self.pg.publisher_public_id) self.assertEqual(self.ph.publisher_public.parent.pk, self.pe.publisher_public_id) # check if urls are correct after move self.assertEqual(self.pg.publisher_public.get_absolute_url(), u'%smaster/slave-home/pc/pg/' % self.get_pages_root()) self.assertEqual( self.ph.publisher_public.get_absolute_url(), u'%smaster/slave-home/pc/pg/pe/ph/' % self.get_pages_root())