示例#1
0
文件: test_page.py 项目: hj91/karl
    def test_it(self):
        registerLayoutProvider()
        self._registerTagbox()

        context = self.context
        request = DummyRequest()
        request.layout_manager = mock.Mock()

        renderer = karl.testing.registerDummyRenderer(self.template_fn)
        self._callFUT(context, request)
        self.assertEqual(renderer.api.page_title, 'dummytitle')
        self.assertEqual(len(renderer.actions), 3)
        self.assertEqual(renderer.actions[0][1], 'edit.html')
        self.assertEqual(renderer.actions[1][1], 'delete.html')
    def test_it(self):
        import mock
        from zope.interface import Interface
        from zope.interface import alsoProvides
        from pyramid.testing import DummyModel
        from pyramid.testing import DummyRequest
        from karl.models.interfaces import ICommunity
        from karl.models.interfaces import ISite
        from karl.models.interfaces import IIntranet
        from karl.models.interfaces import IIntranets
        from karl.views.interfaces import IIntranetPortlet
        from karl.testing import registerAdapter
        from karl.testing import registerDummyRenderer
        ANY = (Interface, Interface)
        WELL = u'<h1>WELL</h1>'
        BODY = u'<h1>BODY</h1>'
        FEATURE = u'<p>FEATURE</p>'
        root = DummyModel()
        alsoProvides(root, ISite)
        offices = root['offices'] = DummyModel()
        alsoProvides(offices, IIntranets)
        offices.feature = FEATURE
        context = offices['nice'] = DummyModel(title='nice office')
        context['foo'] = DummyModel()
        context['bar'] = DummyModel()
        context['spam'] = DummyModel()
        alsoProvides(context, ICommunity)
        alsoProvides(context, IIntranet)
        context.middle_portlets = ['foo', 'bar|baz']
        context.right_portlets = ['spam|qux']
        request = DummyRequest()
        request.layout_manager = mock.Mock()

        class _Portlet(object):
            def __init__(self, text):
                self._text = text
            @property
            def asHTML(self):
                return self._text

        _nameless_contexts = []
        NAMELESS = '<p>NAMELESS</p>'
        def _nameless(context, req):
            assert req is request
            _nameless_contexts.append(context)
            return _Portlet(NAMELESS)
        registerAdapter(_nameless, ANY, IIntranetPortlet)

        _baz_contexts = []
        BAZ = '<p>BAZ</p>'
        def _baz(context, req):
            assert req is request
            _baz_contexts.append(context)
            return _Portlet(BAZ)
        registerAdapter(_baz, ANY, IIntranetPortlet, name='baz')

        _qux_contexts = []
        QUX = '<p>QUX</p>'
        def _qux(context, req):
            assert req is request
            _qux_contexts.append(context)
            return _Portlet(QUX)
        registerAdapter(_qux, ANY, IIntranetPortlet, name='qux')

        _ihb_data = []
        def _IHB(data, _):
            _ihb_data.append(data)
            return WELL
        registerDummyRenderer(
            'karl.views:templates/intranethome_body.pt', _IHB)

        _ihp_data = []
        def _IHP(data, _):
            _ihp_data.append(data)
            return BODY
        registerDummyRenderer(
            'karl.views:templates/intranet_homepage.pt', _IHP)

        response = self._callFUT(context, request)
        self.assertEqual(response.body, BODY)
        self.assertEqual(len(_ihp_data), 1)
        self.assertEqual(_ihp_data[0]['body'], WELL)
        self.assertEqual(len(_ihb_data), 1)
        self.assertTrue(_ihb_data[0]['current_intranet'] is context)
        self.assertEqual(_ihb_data[0]['feature'], FEATURE)
        self.assertEqual(_ihb_data[0]['middle_portlet_html'], NAMELESS + BAZ)
        self.assertEqual(_ihb_data[0]['right_portlet_html'], QUX)