def test_defaultreadfile_verify_iface(self): dummy = DefaultReadFile(ItemDummy()) self.assertTrue(IStreamIterator.providedBy(dummy)) self.assertTrue(verifyObject(IStreamIterator, dummy)) self.assertEqual(b"".join(dummy), b"Portal-Type: foo\n\n") self.assertEqual(len(dummy), 18)
def test_readfile_mimetype_no_message_no_primary_field(self): class ITest(Interface): title = schema.TextLine() SCHEMA_CACHE.clear() fti_mock = DexterityFTI(u'testtype') fti_mock.lookupSchema = Mock(return_value=ITest) fti_mock.behaviors = [] self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") item = Item('item') item.portal_type = 'testtype' readfile = DefaultReadFile(item) self.assertEqual('text/plain', readfile.mimeType)
def test_readfile_mimetype_no_message_no_primary_field(self): class ITest(Interface): title = schema.TextLine() SCHEMA_CACHE.clear() fti_mock = self.mocker.proxy(DexterityFTI(u'testtype')) self.expect(fti_mock.lookupSchema()).result(ITest) self.expect(fti_mock.behaviors).result([]) self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") item = Item('item') item.portal_type = 'testtype' readfile = DefaultReadFile(item) self.replay() self.assertEqual('text/plain', readfile.mimeType)
def test_readfile_mimetype_additional_schemata(self): # This is mostly a test that utils.iterSchemata takes # IBehaviorAssignable into account. class ITest(Interface): title = schema.TextLine() class ITestAdditional(Interface): # Additional behavior on an item body = schema.Text() stuff = schema.Bytes() alsoProvides(ITestAdditional['body'], IPrimaryField) alsoProvides(ITestAdditional['stuff'], IPrimaryField) alsoProvides(ITestAdditional, IFormFieldProvider) class MockBehavior(object): def __init__(self, iface): self.interface = iface class MockBehaviorAssignable(object): def __init__(self, context): self.context = context def enumerateBehaviors(self): yield MockBehavior(ITestAdditional) SCHEMA_CACHE.clear() fti_mock = self.mocker.mock(DexterityFTI) self.expect(fti_mock.lookupSchema()).result(ITest) self.expect(fti_mock.lookupSchema()).result(ITest) self.mock_adapter(MockBehaviorAssignable, IBehaviorAssignable, (Item, )) self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") item = Item('item') item.portal_type = 'testtype' readfile = DefaultReadFile(item) self.replay() self.assertEquals('message/rfc822', readfile.mimeType)
def test_readfile_mimetype_no_message_multiple_primary_fields(self): class ITest(Interface): title = schema.TextLine() body = schema.Text() stuff = schema.Bytes() alsoProvides(ITest['body'], IPrimaryField) alsoProvides(ITest['stuff'], IPrimaryField) SCHEMA_CACHE.clear() fti_mock = DexterityFTI(u'testtype') fti_mock.lookupSchema = Mock(return_value=ITest) self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") item = Item('item') item.portal_type = 'testtype' readfile = DefaultReadFile(item) self.assertEqual('message/rfc822', readfile.mimeType)
def test_readfile_operations(self): class ITest(Interface): title = schema.TextLine() body = schema.Text() alsoProvides(ITest['body'], IPrimaryField) fti_mock = self.mocker.proxy(DexterityFTI(u'testtype')) self.expect(fti_mock.lookupSchema()).result(ITest).count(0, None) self.expect( fti_mock.behaviors ).result([ITestBehavior.__identifier__]).count(0, None) self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") item = Item('item') item.portal_type = 'testtype' readfile = DefaultReadFile(item) message = Message() message['title'] = 'Test title' message['foo'] = '10' message['bar'] = 'xyz' message.set_payload('<p>body</p>') constructMessageFromSchemata_mock = self.mocker.replace( 'plone.rfc822.constructMessageFromSchemata' ) self.expect( constructMessageFromSchemata_mock(item, ANY) ).result(message) self.replay() body = """\ title: Test title foo: 10 bar: xyz Portal-Type: testtype <p>body</p>""" # iter # next self.assertEqual(body, readfile.read()) self.assertEqual(69L, readfile.size()) self.assertEqual('utf-8', readfile.encoding) self.assertEqual(None, readfile.name) self.assertEqual('text/plain', readfile.mimeType) readfile.seek(2) self.assertEqual(2, readfile.tell()) self.assertEqual('tl', readfile.read(2)) self.assertEqual(4, readfile.tell()) readfile.seek(0, 2) self.assertEqual(69, readfile.tell()) readfile.seek(0) self.assertEqual('foo: 10\n', readfile.readlines()[1]) readfile.seek(0) self.assertEqual('foo: 10\n', readfile.readlines(100)[1]) readfile.seek(0) self.assertEqual('title: Test title\n', readfile.readline()) readfile.seek(0) self.assertEqual('title: Test title\n', readfile.readline(100)) readfile.seek(0) self.assertEqual('foo: 10\n', list(iter(readfile))[1]) self.assertEqual(False, readfile.closed) readfile.close()
def test_readfile_operations(self): class ITest(Interface): title = schema.TextLine() body = schema.Text() alsoProvides(ITest['body'], IPrimaryField) fti_mock = self.mocker.proxy(DexterityFTI(u'testtype')) self.expect(fti_mock.lookupSchema()).result(ITest).count(0, None) self.expect(fti_mock.behaviors).result([ITestBehavior.__identifier__ ]).count(0, None) self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") item = Item('item') item.portal_type = 'testtype' readfile = DefaultReadFile(item) message = Message() message['title'] = 'Test title' message['foo'] = '10' message['bar'] = 'xyz' message.set_payload('<p>body</p>') constructMessageFromSchemata_mock = self.mocker.replace( 'plone.rfc822.constructMessageFromSchemata') self.expect(constructMessageFromSchemata_mock(item, ANY)).result(message) self.replay() body = """\ title: Test title foo: 10 bar: xyz Portal-Type: testtype <p>body</p>""" # iter # next self.assertEqual(body, readfile.read()) self.assertEqual(69L, readfile.size()) self.assertEqual('utf-8', readfile.encoding) self.assertEqual(None, readfile.name) self.assertEqual('text/plain', readfile.mimeType) readfile.seek(2) self.assertEqual(2, readfile.tell()) self.assertEqual('tl', readfile.read(2)) self.assertEqual(4, readfile.tell()) readfile.seek(0, 2) self.assertEqual(69, readfile.tell()) readfile.seek(0) self.assertEqual('foo: 10\n', readfile.readlines()[1]) readfile.seek(0) self.assertEqual('foo: 10\n', readfile.readlines(100)[1]) readfile.seek(0) self.assertEqual('title: Test title\n', readfile.readline()) readfile.seek(0) self.assertEqual('title: Test title\n', readfile.readline(100)) readfile.seek(0) self.assertEqual('foo: 10\n', list(iter(readfile))[1]) self.assertEqual(False, readfile.closed) readfile.close()
def test_readfile_operations(self): class ITest(Interface): title = schema.TextLine() body = schema.Text() alsoProvides(ITest['body'], IPrimaryField) fti_mock = DexterityFTI(u'testtype') fti_mock.lookupSchema = Mock(return_value=ITest) fti_mock.behaviors = [ITestBehavior.__identifier__] self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") item = Item('item') item.portal_type = 'testtype' readfile = DefaultReadFile(item) message = Message() message['title'] = 'Test title' message['foo'] = '10' message['bar'] = 'xyz' message.set_payload('<p>body</p>') from plone.rfc822 import constructMessageFromSchemata self.patch_global(constructMessageFromSchemata, return_value=message) body = b"""\ title: Test title foo: 10 bar: xyz Portal-Type: testtype <p>body</p>""" # iter # next self.assertEqual(body, readfile.read()) self.assertEqual(69, readfile.size()) self.assertEqual('utf-8', readfile.encoding) self.assertEqual(None, readfile.name) self.assertEqual('text/plain', readfile.mimeType) readfile.seek(2) self.assertEqual(2, readfile.tell()) self.assertEqual(b'tl', readfile.read(2)) self.assertEqual(4, readfile.tell()) readfile.seek(0, 2) self.assertEqual(69, readfile.tell()) readfile.seek(0) self.assertEqual(b'foo: 10\n', readfile.readlines()[1]) readfile.seek(0) self.assertEqual(b'foo: 10\n', readfile.readlines(100)[1]) readfile.seek(0) self.assertEqual(b'title: Test title\n', readfile.readline()) readfile.seek(0) self.assertEqual(b'title: Test title\n', readfile.readline(100)) readfile.seek(0) self.assertEqual(b'foo: 10\n', list(iter(readfile))[1]) self.assertEqual(False, readfile.closed) readfile.close()
def test_readfile_operations(self): class ITest(Interface): title = schema.TextLine() body = schema.Text() alsoProvides(ITest["body"], IPrimaryField) fti_mock = self.mocker.proxy(DexterityFTI(u"testtype")) self.expect(fti_mock.lookupSchema()).result(ITest).count(0, None) self.expect(fti_mock.behaviors).result([ITestBehavior.__identifier__]).count(0, None) self.mock_utility(fti_mock, IDexterityFTI, name=u"testtype") item = Item("item") item.portal_type = "testtype" readfile = DefaultReadFile(item) message = Message() message["title"] = "Test title" message["foo"] = "10" message["bar"] = "xyz" message.set_payload("<p>body</p>") constructMessageFromSchemata_mock = self.mocker.replace("plone.rfc822.constructMessageFromSchemata") self.expect(constructMessageFromSchemata_mock(item, ANY)).result(message) self.replay() body = """\ title: Test title foo: 10 bar: xyz Portal-Type: testtype <p>body</p>""" # iter # next self.assertEqual(body, readfile.read()) self.assertEqual(69L, readfile.size()) self.assertEqual("utf-8", readfile.encoding) self.assertEqual(None, readfile.name) self.assertEqual("text/plain", readfile.mimeType) readfile.seek(2) self.assertEqual(2, readfile.tell()) self.assertEqual("tl", readfile.read(2)) self.assertEqual(4, readfile.tell()) readfile.seek(0, 2) self.assertEqual(69, readfile.tell()) readfile.seek(0) self.assertEqual("foo: 10\n", readfile.readlines()[1]) readfile.seek(0) self.assertEqual("foo: 10\n", readfile.readlines(100)[1]) readfile.seek(0) self.assertEqual("title: Test title\n", readfile.readline()) readfile.seek(0) self.assertEqual("title: Test title\n", readfile.readline(100)) readfile.seek(0) self.assertEqual("foo: 10\n", list(iter(readfile))[1]) self.assertEqual(False, readfile.closed) readfile.close()