def test_handle_submit(self): from pyramid.testing import DummyModel from karl.testing import DummyCatalog from karl.testing import DummyOrdering from karl.testing import DummyTags context = DummyModel( tags=DummyTags(), catalog=DummyCatalog(), ordering=DummyOrdering(), ) converted = { 'title': u'Ref Manual Title', 'tags': [u'foo', u'bar'], 'description': u'ref manual description', } controller = self._makeOne(context=context) self._registerFactory(controller) response = controller.handle_submit(converted) self.failUnless(u'ref-manual-title' in context) manual = context[u'ref-manual-title'] self.assertEqual(manual.title, u'Ref Manual Title') self.assertEqual(manual.description, u'ref manual description') self.assertEqual(context.tags._called_with[1]['tags'], [u'foo', u'bar'])
def test_handle_submit(self): context = self.context # register dummy IPage content factory def factory(title, text, description, creator): page = DummyPage(title=title, text=text, description=description, creator=creator) page['attachments'] = DummyModel() return page registerContentFactory(factory, IPage) # set up attachments from karl.content.interfaces import ICommunityFile from karl.testing import DummyFile registerContentFactory(DummyFile, ICommunityFile) from karl.testing import DummyUpload attachment1 = DummyUpload(filename='test1.txt') attachment2 = DummyUpload(filename=r"C:\My Documents\Ha Ha\test2.txt") # set up tags infrastructure from karl.testing import DummyCommunity from karl.testing import DummyTags community = DummyCommunity() site = community.__parent__.__parent__ site.sessions = DummySessions() site.catalog = DummyCatalog() site.tags = DummyTags() community['pages'] = context # construct converted dict and call handle_submit converted = { 'title': u'Page Title', 'text': u'page text', 'tags': [u'foo', u'bar'], 'attachments': [attachment1, attachment2], } context.ordering = DummyOrdering() controller = self._makeOne(context, self.request) controller.handle_submit(converted) # make sure everything looks good # basic fields self.failUnless(u'page-title' in context) page = context['page-title'] self.assertEqual(page.title, u'Page Title') self.assertEqual(page.text, u'page text') # attachments attachments_folder = page['attachments'] self.failUnless('test1.txt' in attachments_folder) self.failUnless('test2.txt' in attachments_folder) self.assertEqual(attachments_folder['test1.txt'].filename, 'test1.txt') self.assertEqual(attachments_folder['test2.txt'].filename, 'test2.txt') # ordering self.assertEqual(context.ordering.names_added, ['page-title']) # tags self.assertEqual(site.tags._called_with[1]['tags'], [u'foo', u'bar'])
def _registerTags(self, site): from zope.interface import Interface from karl.models.interfaces import ITagQuery from karl.testing import DummyTagQuery karl.testing.registerAdapter(DummyTagQuery, (Interface, Interface), ITagQuery) from karl.testing import DummyTags site.tags = DummyTags()
def test_handle_submit(self): from karl.testing import registerSettings registerSettings() context = self.blog self.site.system_email_domain = 'example.com' tags = DummyTags() self.site.tags = tags from karl.testing import DummyCatalog self.site.catalog = DummyCatalog() self.site.sessions = DummySessions() from karl.testing import DummyUpload attachment1 = DummyUpload(filename="test1.txt") attachment2 = DummyUpload(filename=r"C:\My Documents\Ha Ha\test2.txt") converted = { 'title': 'foo', 'text': 'text', 'tags': ['tag1', 'tag2'], 'sendalert': True, 'security_state': 'public', 'attachments': [attachment1, attachment2], } self._register() from karl.content.interfaces import IBlogEntry from karl.content.interfaces import ICommunityFile from repoze.lemonade.testing import registerContentFactory registerContentFactory(DummyBlogEntry, IBlogEntry) registerContentFactory(DummyFile, ICommunityFile) request = self._makeRequest() controller = self._makeOne(context, request) karl.testing.registerDummyRenderer( 'templates/email_blog_entry_alert.pt') response = controller.handle_submit(converted) self.assertEqual(response.location, 'http://example.com/communities/community/blog/foo/') self.assertEqual(3, len(self.mailer)) recipients = reduce(lambda x, y: x + y, [x.mto for x in self.mailer]) recipients.sort() self.assertEqual([ "*****@*****.**", "*****@*****.**", "*****@*****.**", ], recipients) self.failUnless(context['foo']['attachments']['test1.txt']) self.failUnless(context['foo']['attachments']['test2.txt']) body = self.mailer[0].msg.get_payload(decode=True) self.assertEqual(body, '') attachment1 = context['foo']['attachments']['test1.txt'] self.assertEqual(attachment1.filename, "test1.txt") attachment2 = context['foo']['attachments']['test2.txt'] self.assertEqual(attachment2.filename, "test2.txt")