Ejemplo n.º 1
0
 def test_adapting_tag_url_to_cmscontent_yields_a_copy(self):
     from zeit.cms.interfaces import ICMSContent
     self.setup_tags('foo')
     t1 = ICMSContent('tag://foo')
     t2 = ICMSContent('tag://foo')
     t1.pinned = True
     self.assertFalse(t2.pinned)
Ejemplo n.º 2
0
    def test_error_during_publish_multiple_is_written_to_objectlog(self):
        c1 = ICMSContent('http://xml.zeit.de/online/2007/01/Flugsicherheit')
        c2 = ICMSContent('http://xml.zeit.de/online/2007/01/Saarland')
        i1 = IPublishInfo(c1)
        i2 = IPublishInfo(c2)
        self.assertFalse(i1.published)
        self.assertFalse(i2.published)
        i1.urgent = True
        i2.urgent = True

        publish = IPublish(c1).publish_multiple([c1, c2])
        transaction.commit()

        with self.assertRaises(Exception) as err:
            publish.get()
        transaction.begin()

        self.assertEqual("Error during publish/retract: ScriptError: ('', 1)",
                         str(err.exception))
        self.assertIn(
            "Error during publish/retract: ScriptError: ('', 1)",
            [zope.i18n.interpolate(m, m.mapping) for m in get_object_log(c1)])
        self.assertIn(
            "Error during publish/retract: ScriptError: ('', 1)",
            [zope.i18n.interpolate(m, m.mapping) for m in get_object_log(c2)])
Ejemplo n.º 3
0
    def test_publish_multiple_via_celery_end_to_end(self):
        c1 = ICMSContent('http://xml.zeit.de/online/2007/01/Flugsicherheit')
        c2 = ICMSContent('http://xml.zeit.de/online/2007/01/Saarland')
        i1 = IPublishInfo(c1)
        i2 = IPublishInfo(c2)
        self.assertFalse(i1.published)
        self.assertFalse(i2.published)
        i1.urgent = True
        i2.urgent = True

        publish = IPublish(c1).publish_multiple([c1, c2])
        transaction.commit()
        self.assertEqual('Published.', publish.get())
        transaction.begin()

        self.assertEllipsis(
            """\
Running job ...
    for http://xml.zeit.de/online/2007/01/Flugsicherheit,
        http://xml.zeit.de/online/2007/01/Saarland
Publishing http://xml.zeit.de/online/2007/01/Flugsicherheit,
       http://xml.zeit.de/online/2007/01/Saarland
...
Done http://xml.zeit.de/online/2007/01/Flugsicherheit,
 http://xml.zeit.de/online/2007/01/Saarland (...s)""", self.log.getvalue())

        self.assertIn('Published', get_object_log(c1))
        self.assertIn('Published', get_object_log(c2))
Ejemplo n.º 4
0
 def test_ignored_video_should_not_be_added_to_cms(self):
     self.assertEqual(
         None, ICMSContent('http://xml.zeit.de/video/2017-05/myvid', None))
     bc = self.create_video()
     bc.data['custom_fields']['ignore_for_update'] = '1'
     import_video(bc)
     self.assertEqual(
         None, ICMSContent('http://xml.zeit.de/video/2017-05/myvid', None))
Ejemplo n.º 5
0
 def test_new_video_should_be_added_to_cms(self):
     self.assertEqual(
         None, ICMSContent('http://xml.zeit.de/video/2017-05/myvid', None))
     import_video(self.create_video())
     video = ICMSContent('http://xml.zeit.de/video/2017-05/myvid')
     self.assertEqual('title', video.title)
     info = zeit.cms.workflow.interfaces.IPublishInfo(video)
     self.assertEqual(True, info.published)
Ejemplo n.º 6
0
 def test_new_playlist_should_be_added_to_cms(self):
     self.assertEqual(
         None, ICMSContent('http://xml.zeit.de/video/playlist/mypls', None))
     import_playlist(self.create_playlist())
     playlist = ICMSContent('http://xml.zeit.de/video/playlist/mypls')
     self.assertEqual('title', playlist.title)
     info = zeit.cms.workflow.interfaces.IPublishInfo(playlist)
     self.assertEqual(True, info.published)
Ejemplo n.º 7
0
 def test_deleted_video_should_be_deleted_from_cms(self):
     bc = self.create_video()
     import_video(bc)
     video = ICMSContent('http://xml.zeit.de/video/2017-05/myvid')
     deleted = zeit.brightcove.convert.DeletedVideo(bc.id, video)
     import_video(deleted)
     self.assertEqual(
         None, ICMSContent('http://xml.zeit.de/video/2017-05/myvid', None))
Ejemplo n.º 8
0
 def test_image_references(self):
     image = ICMSContent("http://xml.zeit.de/2006/DSC00109_2.JPG")
     image2 = ICMSContent("http://xml.zeit.de/2006/DSC00109_3.JPG")
     article = self.article
     animation = zeit.content.animation.animation.Animation()
     animation.article = article
     animation.images = (image, image2)
     assert len(animation.xml.body.image) == 2
     assert animation.xml.body.image[0].xpath("@type")[0] == "JPG"
Ejemplo n.º 9
0
 def test_properties_can_be_set_while_checked_out(self):
     content = ICMSContent('http://xml.zeit.de/testcontent')
     with checked_out(content) as co:
         push = IPushMessages(co)
         push.message_config = [{'type': 'mypush'}]
     content = ICMSContent('http://xml.zeit.de/testcontent')
     push = IPushMessages(content)
     self.assertEqual([{'type': 'mypush'}], push.message_config)
     # These DAV properties are not serialized to XML.
     self.assertNotIn('mypush', zeit.cms.testing.xmltotext(content.xml))
Ejemplo n.º 10
0
    def test_unknown_playlist_should_be_deleted(self):
        bc = self.create_playlist()
        import_playlist(bc)
        other = self.create_playlist()
        other.data['id'] = 'other'
        import_playlist(other)

        import_playlist.delete_except([other])
        self.assertEqual(
            None, ICMSContent('http://xml.zeit.de/video/playlist/mypls', None))
        self.assertNotEqual(
            None, ICMSContent('http://xml.zeit.de/video/playlist/other', None))
Ejemplo n.º 11
0
 def test_inactive_video_should_be_imported_but_not_published(self):
     bc = self.create_video()
     bc.data['state'] = 'INACTIVE'
     import_video(bc)
     video = ICMSContent('http://xml.zeit.de/video/2017-05/myvid')
     info = zeit.cms.workflow.interfaces.IPublishInfo(video)
     self.assertEqual(False, info.published)
Ejemplo n.º 12
0
 def test_adapting_unicode_escaped_uniqueId_of_tag_yields_tag(self):
     from zeit.cms.interfaces import ICMSContent
     self.setup_tags(u'Bärlin')
     whitelist = zope.component.queryUtility(
         zeit.cms.tagging.interfaces.IWhitelist)
     tag = ICMSContent(whitelist.get(u'Bärlin').uniqueId)
     self.assertEqual(u'Bärlin', tag.label)
Ejemplo n.º 13
0
 def test_synchronous_multi_publishing_works_with_unique_ids(self):
     article = ICMSContent('http://xml.zeit.de/online/2007/01/Somalia')
     info = IPublishInfo(article)
     info.urgent = True
     IPublish(article).publish_multiple([article.uniqueId],
                                        background=False)
     self.assertTrue(info.published)
Ejemplo n.º 14
0
 def test_adapting_reference_url_to_cmscontent(self):
     content = self.repository['content']
     self.set_reference(
         content, content.references.create(self.repository['target']))
     reference = self.get_reference(content)
     self.assertEqual(reference.target.uniqueId,
                      ICMSContent(reference.uniqueId).target.uniqueId)
Ejemplo n.º 15
0
 def test_should_publish_after_update(self):
     bc = self.create_video()
     import_video(bc)
     video = ICMSContent('http://xml.zeit.de/video/2017-05/myvid')
     info = zeit.cms.workflow.interfaces.IPublishInfo(video)
     last_published = info.date_last_published
     import_video(bc)
     self.assertGreater(info.date_last_published, last_published)
Ejemplo n.º 16
0
 def test_deleted_video_should_be_retracted(self):
     bc = self.create_video()
     import_video(bc)
     video = ICMSContent('http://xml.zeit.de/video/2017-05/myvid')
     deleted = zeit.brightcove.convert.DeletedVideo(bc.id, video)
     with mock.patch('zeit.workflow.publish.Publish.retract') as retract:
         import_video(deleted)
         self.assertEqual(True, retract.called)
Ejemplo n.º 17
0
 def test_videos_should_be_resolvable(self):
     from zeit.cms.interfaces import ICMSContent
     expected_unique_id = 'http://xml.zeit.de/testcontent'
     with mock.patch('zeit.brightcove.resolve.resolve_video_id') as rvi:
         rvi.return_value = expected_unique_id
         result = ICMSContent('http://video.zeit.de/video/1234')
     self.assertEqual(expected_unique_id, result.uniqueId)
     rvi.assert_called_with('1234')
Ejemplo n.º 18
0
 def create_gallery(self):
     gallery = zeit.content.gallery.gallery.Gallery()
     gallery.image_folder = self.repository['2007']
     self.repository['2007']['image01'] = ICMSContent(
         'http://xml.zeit.de/2006/DSC00109_2.JPG')
     transaction.commit()
     gallery.reload_image_folder()
     return gallery
Ejemplo n.º 19
0
 def test_ignored_video_should_not_be_updated_in_cms(self):
     bc = self.create_video()
     import_video(bc)
     bc.data['name'] = 'changed'
     bc.data['custom_fields']['ignore_for_update'] = '1'
     import_video(bc)
     video = ICMSContent('http://xml.zeit.de/video/2017-05/myvid')
     self.assertEqual('title', video.title)
Ejemplo n.º 20
0
 def test_provides_image_url_if_image_is_referenced(self):
     from zeit.cms.interfaces import ICMSContent
     image = ICMSContent('http://xml.zeit.de/2006/DSC00109_2.JPG')
     message = zope.component.getAdapter(self.create_content(image=image),
                                         zeit.push.interfaces.IMessage,
                                         name=self.name)
     self.assertEqual(image, message.image)
     self.assertEqual('http://img.zeit.de/2006/DSC00109_2.JPG',
                      message.additional_parameters['image_url'])
Ejemplo n.º 21
0
def parent_folder(content):
    if not content.uniqueId.startswith(zeit.cms.interfaces.ID_NAMESPACE):
        return None
    id = content.uniqueId.replace(zeit.cms.interfaces.ID_NAMESPACE, '')
    if not id:
        return None
    if id.endswith('/'):
        id = id[:-1]
    return ICMSContent(zeit.cms.interfaces.ID_NAMESPACE + os.path.dirname(id))
Ejemplo n.º 22
0
 def test_playlists_should_be_resolvable(self):
     from zeit.cms.testcontenttype.testcontenttype import ExampleContentType
     from zeit.cms.interfaces import ICMSContent
     from zeit.cms.repository.folder import Folder
     self.repository['video'] = Folder()
     self.repository['video']['playlist'] = Folder()
     self.repository['video']['playlist']['1234'] = ExampleContentType()
     expected_unique_id = 'http://xml.zeit.de/video/playlist/1234'
     result = ICMSContent('http://video.zeit.de/playlist/1234')
     self.assertEqual(expected_unique_id, result.uniqueId)
Ejemplo n.º 23
0
 def test_new_video_should_bbb_copy_authors(self):
     author = zeit.content.author.author.Author()
     author.firstname = u'William'
     author.lastname = u'Shakespeare'
     self.repository['author'] = author
     bc = self.create_video()
     bc.data['custom_fields']['authors'] = 'http://xml.zeit.de/author'
     import_video(bc)
     video = ICMSContent('http://xml.zeit.de/video/2017-05/myvid')
     self.assertEqual(('William Shakespeare', ), video.authors)
Ejemplo n.º 24
0
 def test_error_during_push_is_caught(self):
     self.notifier.send.side_effect = RuntimeError('provoked')
     content = ICMSContent('http://xml.zeit.de/testcontent')
     push = IPushMessages(content)
     push.message_config = [{'type': 'mypush', 'enabled': True}]
     self.publish(content)
     # This is sort of assertNothingRaised, except that publishing
     # runs in a separate thread (remotetask), so we would not see
     # the exception here anyway.
     self.assertNotEqual(None, push.date_last_pushed)
Ejemplo n.º 25
0
 def setUp(self):
     super(AuthorLocationTest, self).setUp()
     shakespeare = zeit.content.author.author.Author()
     shakespeare.firstname = 'William'
     shakespeare.lastname = 'Shakespeare'
     self.repository['shakespeare'] = shakespeare
     with checked_out(ICMSContent(
             'http://xml.zeit.de/online/2007/01/Somalia')) as co:
         co.authorships = [co.authorships.create(
             self.repository['shakespeare'])]
Ejemplo n.º 26
0
 def test_object_already_checked_out_should_raise(self):
     article = ICMSContent('http://xml.zeit.de/online/2007/01/Somalia')
     IPublishInfo(article).urgent = True
     zeit.cms.checkout.interfaces.ICheckoutManager(article).checkout()
     zope.security.management.endInteraction()
     with zeit.cms.testing.interaction('zope.producer'):
         with self.assertRaises(Exception) as info:
             IPublish(article).publish(async=False)
         self.assertIn('LockingError', str(info.exception))
     self.assertEqual(False, IPublishInfo(article).published)