def test_publish_records_published(self): all_published = NestedSet() self.flat_page.save() self.flat_page.publish(all_published=all_published) self.failUnlessEqual(1, len(all_published)) self.failUnless(self.flat_page in all_published) self.failUnless(self.flat_page.public)
def test_publish_dryrun(self): all_published = NestedSet() self.flat_page.save() self.flat_page.publish(dry_run=True, all_published=all_published) self.failUnlessEqual(1, len(all_published)) self.failUnless(self.flat_page in all_published) self.failIf(self.flat_page.public) self.failUnlessEqual(Publishable.PUBLISH_CHANGED, self.flat_page.publish_state)
def test_publish_with_overlapping_models_published(self): # make sure when we publish we don't accidentally create # multiple published versions self.failUnlessEqual(5, Page.objects.draft().count()) self.failUnlessEqual(0, Page.objects.published().count()) all_published = NestedSet() Page.objects.draft().publish(all_published) self.failUnlessEqual(5, len(all_published)) self.failUnlessEqual(5, Page.objects.draft().count()) self.failUnlessEqual(5, Page.objects.published().count())
def test_publish_deletions_checks_all_published(self): # make sure publish_deletions looks at all_published arg # to see if we need to actually publish the deletion self.flat_page.save() self.flat_page.publish() public = self.flat_page.public self.flat_page.delete() self.failUnlessEqual(set([self.flat_page, public]), set(FlatPage.objects.all())) # this should effectively stop the deletion happening all_published = NestedSet() all_published.add(self.flat_page) self.flat_page.publish(all_published=all_published) self.failUnlessEqual(set([self.flat_page, public]), set(FlatPage.objects.all()))
def test_convert_all_published_to_html(self): self.admin_site.register(Page, PublishableAdmin) all_published = NestedSet() page = Page.objects.create(slug='here', title='title') block = PageBlock.objects.create(page=page, content='stuff here') all_published.add(page) all_published.add(block, parent=page) converted = _convert_all_published_to_html(self.admin_site, all_published) expected = [ u'<a href="../../publish/page/%d/">Page: Page object (Changed - not yet published)</a>' % page.id, [u'Page block: PageBlock object'] ] self.failUnlessEqual(expected, converted)
def test_publish_after_dry_run_handles_caching(self): # if we do a dry tun publish in the same queryset # before publishing for real, we have to make # sure we don't run into issues with the instance # caching parent's as None self.failUnlessEqual(5, Page.objects.draft().count()) self.failUnlessEqual(0, Page.objects.published().count()) draft = Page.objects.draft() all_published = NestedSet() for p in draft: p.publish(dry_run=True, all_published=all_published) # nothing published yet self.failUnlessEqual(5, Page.objects.draft().count()) self.failUnlessEqual(0, Page.objects.published().count()) # now publish (using same queryset, as this will have cached the instances) draft.publish() self.failUnlessEqual(5, Page.objects.draft().count()) self.failUnlessEqual(5, Page.objects.published().count()) # now actually check the public parent's are setup right page1 = Page.objects.get(id=self.page1.id) page2 = Page.objects.get(id=self.page2.id) child1 = Page.objects.get(id=self.child1.id) child2 = Page.objects.get(id=self.child2.id) child3 = Page.objects.get(id=self.child3.id) self.failUnlessEqual(None, page1.public.parent) self.failUnlessEqual(None, page2.public.parent) self.failUnlessEqual(page1.public, child1.public.parent) self.failUnlessEqual(page1.public, child2.public.parent) self.failUnlessEqual(page2.public, child3.public.parent)
def setUp(self): super(TestNestedSet, self).setUp() self.nested = NestedSet()