Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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))
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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"]'))
Ejemplo n.º 7
0
 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))
Ejemplo n.º 8
0
 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"]'))
Ejemplo n.º 9
0
 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()
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 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)
Ejemplo n.º 12
0
 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)