def setUp(self): super(TextViewHelper, self).setUp() self.patches = gocept.testing.mock.Patches() fake_uuid = mock.Mock() fake_uuid.side_effect = lambda: 'id-%s' % fake_uuid.call_count self.patches.add('zeit.edit.container.Base._generate_block_id', fake_uuid)
def get_view(self, body=None): if body is None: body = ("<division><p>Para 1</p><p>Para 2</p></division>" "<division><p>Para 3</p><p>Para 4</p></division>") article = zeit.content.article.article.Article() article.xml.body = lxml.objectify.XML('<body>%s</body>' % body) for division in article.xml.body.findall('division'): division.set('type', 'page') body = zeit.content.article.edit.body.EditableBody( article, article.xml.body) body.keys() # force uuid generation view = self.view_class() view.context = body view.request = mock.Mock() view.request.form = {} view.url = mock.Mock() return view
def test_adding_to_articles_without_division_should_migrate(self): import lxml.objectify body = self.get_body( '<foo>Honk</foo><p>I have no division</p><p>Only paras</p>') ob = mock.Mock() ob.__name__ = None ob.__parent__ = None ob.xml = lxml.objectify.E.ob() body.add(ob)
def test_add_should_add_to_last_division(self): import lxml.objectify body = self.get_body('<division/>') block = mock.Mock() block.xml = lxml.objectify.E.mockblock() block.__name__ = 'myblock' block.__parent__ = None block.xml.set('{http://namespaces.zeit.de/CMS/cp}__name__', 'myblock') body.add(block) self.assertEqual(['myblock'], body.keys())
def test_adding_division_should_add_on_toplevel(self): from zeit.content.article.edit.interfaces import IDivision import lxml.objectify body = self.get_body('<division/>') block = mock.Mock() zope.interface.alsoProvides(block, IDivision) block.xml = lxml.objectify.E.division() block.__name__ = 'myblock' block.__parent__ = None block.xml.set('{http://namespaces.zeit.de/CMS/cp}__name__', 'myblock') body.add(block) self.assertEqual(2, len(body.xml.getchildren()))