def test_updates_last_semantic_change(self): before = ISemanticChange(self.repository['foo']).last_semantic_change self.publisher.send('mytext', 'http://zeit.de/foo') zeit.workflow.testing.run_publish( zeit.cms.workflow.interfaces.PRIORITY_HIGH) after = ISemanticChange(self.repository['foo']).last_semantic_change self.assertGreater(after, before)
def test_checkin_should_set_last_semantic_change(self): from zeit.cms.checkout.helper import checked_out from zeit.cms.content.interfaces import ISemanticChange import datetime import zeit.cms.interfaces content = zeit.cms.interfaces.ICMSContent( 'http://xml.zeit.de/testcontent') sc = ISemanticChange(content) self.assertTrue(sc.last_semantic_change is None) with checked_out(content, semantic_change=True) as co: self.assertTrue(ISemanticChange(co).last_semantic_change is None) self.assertTrue( isinstance(sc.last_semantic_change, datetime.datetime))
def setUp(self): super(LSCDefaultTest, self).setUp() self.repository[ 'article'] = zeit.content.article.testing.create_article() with checked_out(self.repository['article']) as co: co.body.create_item('liveblog') self.assertFalse(ISemanticChange(co).has_semantic_change)
def test_new_article_should_have_last_semantic_change(self): from zeit.cms.content.interfaces import ISemanticChange menu = self.browser.getControl(name='add_menu') menu.displayValue = ['Article'] url = menu.value[0] self.browser.open(url) article = self.get_article() self.assertTrue(ISemanticChange(article).last_semantic_change)
def test_lsc_should_not_be_set_on_copy(self): from zeit.cms.content.interfaces import ISemanticChange import zope.event import zope.lifecycleevent content = self.get_content() zope.event.notify(zope.lifecycleevent.ObjectCopiedEvent( content, content)) sc = ISemanticChange(content) self.assertTrue(sc.last_semantic_change is None)
def test_lsc_should_be_used_if_set(self): from zeit.cms.content.interfaces import ISemanticChange import datetime import pytz content = self.get_content() now = datetime.datetime(2011, 1, 2, 3, 4, tzinfo=pytz.UTC) ISemanticChange(content).last_semantic_change = now xml = self.convert(content) self.assertEqual(['2011-01-02T03:04:00Z'], xml.xpath('//field[@name="last-semantic-change"]'))
def test_lsc_should_be_set_on_creation(self): from zeit.cms.content.interfaces import ISemanticChange import datetime import zope.event import zope.lifecycleevent content = self.get_content() zope.event.notify(zope.lifecycleevent.ObjectCreatedEvent(content)) sc = ISemanticChange(content) self.assertTrue( isinstance(sc.last_semantic_change, datetime.datetime))
def test_lsc_should_not_be_duplicate_if_both_lsc_and_modified_set(self): from zeit.cms.content.interfaces import ISemanticChange from zope.dublincore.interfaces import IDCTimes import datetime import pytz content = self.get_content() modified = datetime.datetime(2011, 1, 2, 3, 4, tzinfo=pytz.UTC) IDCTimes(content).modified = modified lsc = datetime.datetime(2010, 12, 13, 14, 15, tzinfo=pytz.UTC) ISemanticChange(content).last_semantic_change = lsc xml = self.convert(content) self.assertEqual(['2010-12-13T14:15:00Z'], xml.xpath('//field[@name="last-semantic-change"]'))
def send(self, text, link, **kw): article = ICMSContent(self.uniqueId) log.debug('Setting %s, %s as body of %s', text, link, self.uniqueId) self._ensure_unlocked(article) with checked_out(article) as co: IBreakingNewsBody(co).text = u'<a href="{link}">{text}</a>'.format( link=link, text=text) # XXX The checked_out helper is rather technical (it does not # simulate a complete user interaction), thus specifying # checked_out(semantic_change=True) doesn't help: Since the checked # out object is newly created and we don't (can't?) call # transaction.commit() here (and a temporary workingcopy does not # really participate in the ZODB machinery anyway), the _p_mtime of # the checked out object is not set, which means its modified date # is not updated -- which means LSC would be set to the last # modified date taken from the repository, which is not what we # want. ISemanticChange(co).last_semantic_change = datetime.now(pytz.UTC) IPublishInfo(article).urgent = True IPublish(article).publish()
def test_lsc_is_not_updated_during_publish(self): article = self.repository['article'] lsc = ISemanticChange(article).last_semantic_change zeit.cms.workflow.interfaces.IPublishInfo(article).urgent = True zeit.cms.workflow.interfaces.IPublish(article).publish() self.assertEqual(lsc, ISemanticChange(article).last_semantic_change)
def test_article_with_liveblog_old_has_lsc_on_checkout(self): with checked_out(self.repository['article']) as co: self.assertTrue(ISemanticChange(co).has_semantic_change)
def test_objects_initially_should_not_have_semantic_change(self): from zeit.cms.content.interfaces import ISemanticChange content = self.get_content() sc = ISemanticChange(content) self.assertTrue(sc.last_semantic_change is None)