Esempio n. 1
0
    def test_import_collection_list_append(self):
        xml = """\
<registry>
    <record name="test.registry.field">
        <value purge="false">
            <element>4</element>
            <element>6</element>
        </value>
    </record>
</registry>
"""

        self.registry.records['test.registry.field'] = Record(
            field.List(
                title=u"Simple record",
                value_type=field.Int(title=u"Val")
            ),
            value=[2, 4]
        )

        context = DummyImportContext(self.site, purge=False)
        context._files = {'registry.xml': xml}

        importRegistry(context)

        self.assertEqual(1, len(self.registry.records))
        self.assertEqual([2, 4, 6], self.registry['test.registry.field'])
Esempio n. 2
0
    def test_export_with_collection(self):

        xml = """\
<registry>
  <record name="test.export.simple">
    <field type="plone.registry.field.List">
      <title>Simple record</title>
      <value_type type="plone.registry.field.Int">
        <title>Val</title>
      </value_type>
    </field>
    <value>
      <element>2</element>
    </value>
  </record>
</registry>"""
        self.registry.records['test.export.simple'] = Record(
            field.List(
                title=u"Simple record",
                value_type=field.Int(title=u"Val")
            ),
            value=[2]
        )

        context = DummyExportContext(self.site)
        exportRegistry(context)

        self.assertEqual('registry.xml', context._wrote[0][0])
        self.assertXmlEquals(xml, context._wrote[0][1])
Esempio n. 3
0
    def test_multiple_operations_multiple_found(self):
        self.registry.records["%s.operations" % Chain.prefix] = Record(
            field.List(), ['op1', 'op2'])

        view = DummyView()
        request = DummyRequest(view, DummyResponse())

        class DummyOperation1(object):
            implements(ICachingOperation)
            adapts(Interface, Interface)

            def __init__(self, published, request):
                self.published = published
                self.request = request

            def interceptResponse(self, rulename, response):
                return u"foo"

            def modifyResponse(self, rulename, response):
                response['X-Mutated-1'] = rulename

        provideAdapter(DummyOperation1, name="op1")

        class DummyOperation2(object):
            implements(ICachingOperation)
            adapts(Interface, Interface)

            def __init__(self, published, request):
                self.published = published
                self.request = request

            def interceptResponse(self, rulename, response):
                return u"bar"

            def modifyResponse(self, rulename, response):
                response['X-Mutated-2'] = rulename

        provideAdapter(DummyOperation2, name="op2")

        chain = Chain(view, request)
        ret = chain.interceptResponse('testrule', request.response)

        self.assertEquals(u"foo", ret)
        self.assertEquals({'PUBLISHED': view}, dict(request))
        self.assertEquals({'X-Cache-Chain-Operations': 'op1'},
                          dict(request.response))

        request = DummyRequest(view, DummyResponse())
        chain = Chain(view, request)
        chain.modifyResponse('testrule', request.response)

        self.assertEquals({'PUBLISHED': view}, dict(request))
        self.assertEquals(
            {
                'X-Mutated-1': 'testrule',
                'X-Mutated-2': 'testrule',
                'X-Cache-Chain-Operations': 'op1; op2'
            }, dict(request.response))
Esempio n. 4
0
    def test_fieldref_interfaces(self):
        from plone.registry import field, FieldRef
        from plone.registry.interfaces import IFieldRef
        from zope.schema.interfaces import ICollection

        listField = field.List(value_type=field.ASCIILine())
        ref = FieldRef('some.record', listField)

        self.assertTrue(ICollection.providedBy(ref))
        self.assertTrue(IFieldRef.providedBy(ref))
Esempio n. 5
0
    def test_chained_operations_not_found(self):

        self.registry.records["%s.operations" % Chain.prefix] = Record(
            field.List(), ['op1'])

        view = DummyView()
        request = DummyRequest(view, DummyResponse())

        chain = Chain(view, request)
        chain.modifyResponse('testrule', request.response)

        self.assertEquals({'PUBLISHED': view}, dict(request))
        self.assertEquals({}, dict(request.response))
    def activateSearchable(self):
        registry = getUtility(IRegistry)
        prefix = 'plone.app.querystring.field.' + self.field_name

        def add(name, value):
            registry.records[prefix + '.' + name] = value

        add('title', Record(field.TextLine(), safe_unicode(self.field_title)))
        add('enabled', Record(field.Bool(), True))
        add('group', Record(field.TextLine(), safe_unicode('Taxonomy')))
        add('operations', Record(field.List(value_type=field.TextLine()),
            [u'plone.app.querystring.operation.selection.is']))
        add('vocabulary', Record(field.TextLine(), safe_unicode(self.vocabulary_name)))  # noqa: E501
        add('sortable', Record(field.Bool(), False))
        add('description', Record(field.Text(), safe_unicode('')))
Esempio n. 7
0
    def test_operations_empty(self):

        self.registry.records["%s.operations" % Chain.prefix] = Record(
            field.List(), [])

        view = DummyView()
        request = DummyRequest(view, DummyResponse())

        chain = Chain(view, request)
        ret = chain.interceptResponse('testrule', request.response)
        chain.modifyResponse('testrule', request.response)

        self.assertEquals(None, ret)
        self.assertEquals({'PUBLISHED': view}, dict(request))
        self.assertEquals({}, dict(request.response))
Esempio n. 8
0
    def test_operations_list_not_set(self):

        self.registry.records['{0}.operations'.format(Chain.prefix)] = Record(
            field.List())

        view = DummyView()
        request = DummyRequest(view, DummyResponse())

        chain = Chain(view, request)
        ret = chain.interceptResponse('testrule', request.response)
        chain.modifyResponse('testrule', request.response)

        self.assertEqual(None, ret)
        self.assertEqual({'PUBLISHED': view}, dict(request))
        self.assertEqual({}, dict(request.response))
Esempio n. 9
0
    def test_multiple_operations_one_found(self):
        self.registry.records['{0}.operations'.format(Chain.prefix)] = Record(
            field.List(), ['op1', 'op2'])

        view = DummyView()
        request = DummyRequest(view, DummyResponse())

        @implementer(ICachingOperation)
        @adapter(Interface, Interface)
        class DummyOperation(object):
            def __init__(self, published, request):
                self.published = published
                self.request = request

            def interceptResponse(self, rulename, response):
                return u'foo'

            def modifyResponse(self, rulename, response):
                response['X-Mutated'] = rulename

        provideAdapter(DummyOperation, name='op2')

        chain = Chain(view, request)
        ret = chain.interceptResponse('testrule', request.response)

        self.assertEqual(u'foo', ret)
        self.assertEqual({'PUBLISHED': view}, dict(request))
        self.assertEqual({'X-Cache-Chain-Operations': 'op2'},
                         dict(request.response))

        request = DummyRequest(view, DummyResponse())
        chain = Chain(view, request)
        chain.modifyResponse('testrule', request.response)

        self.assertEqual({'PUBLISHED': view}, dict(request))
        self.assertEqual(
            {
                'X-Mutated': 'testrule',
                'X-Cache-Chain-Operations': 'op2'
            }, dict(request.response))
Esempio n. 10
0
    def activateSearchable(self):
        registry = getUtility(IRegistry)
        prefix = "plone.app.querystring.field." + self.field_name

        def add(name, value):
            registry.records[prefix + "." + name] = value

        add("title", Record(field.TextLine(), safe_unicode(self.field_title)))
        add("enabled", Record(field.Bool(), True))
        add("group", Record(field.TextLine(), safe_unicode("Taxonomy")))
        add(
            "operations",
            Record(
                field.List(value_type=field.TextLine()),
                [u"plone.app.querystring.operation.selection.is"],
            ),
        )
        add(
            "vocabulary", Record(field.TextLine(), safe_unicode(self.vocabulary_name))
        )  # noqa: E501
        add("sortable", Record(field.Bool(), False))
        add("description", Record(field.Text(), safe_unicode("")))