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'])
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])
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))
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))
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('')))
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))
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))
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))
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("")))