From 8d20d0fa7ed226735daba4b0507cf0037860af71 Mon Sep 17 00:00:00 2001 From: Giovane Date: Mon, 21 Sep 2015 18:10:17 -0300 Subject: #442 Creates feedback service that create tickets on leap web. --- service/test/integration/test_feedback_service.py | 14 +++++++++++ .../test/support/integration/app_test_client.py | 6 ++++- .../test/unit/resources/test_feedback_resource.py | 27 ++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 service/test/integration/test_feedback_service.py create mode 100644 service/test/unit/resources/test_feedback_resource.py (limited to 'service/test') diff --git a/service/test/integration/test_feedback_service.py b/service/test/integration/test_feedback_service.py new file mode 100644 index 00000000..595a29ce --- /dev/null +++ b/service/test/integration/test_feedback_service.py @@ -0,0 +1,14 @@ +import unittest +from mockito import when +from twisted.internet import defer +from test.support.integration import AppTestClient + + +class TestFeedbackService(unittest.TestCase, AppTestClient): + @defer.inlineCallbacks + def test_open_ticket(self): + yield self.start_client() + when(self.leap_session).account_email().thenReturn("text@pixelated-project.org") + response = self.feedback_service.open_ticket("Pixelated is awesome!") + + self.assertEquals(response.status_code, 200) diff --git a/service/test/support/integration/app_test_client.py b/service/test/support/integration/app_test_client.py index 3245e728..ff5af0a7 100644 --- a/service/test/support/integration/app_test_client.py +++ b/service/test/support/integration/app_test_client.py @@ -31,6 +31,7 @@ from twisted.internet import reactor, defer from twisted.internet.defer import succeed from twisted.web.resource import getChildForRequest # from twisted.web.server import Site as PixelatedSite +from pixelated.adapter.services.feedback_service import FeedbackService from pixelated.config.site import PixelatedSite from pixelated.adapter.mailstore import LeapMailStore @@ -74,13 +75,16 @@ class AppTestClient(object): self.account = IMAPAccount(self.ACCOUNT, self.soledad, account_ready_cb) yield account_ready_cb self.draft_service = DraftService(self.mail_store) + self.leap_session = mock() + self.feedback_service = FeedbackService(self.leap_session) self.mail_service = self._create_mail_service(self.mail_sender, self.mail_store, self.search_engine) mails = yield self.mail_service.all_mails() self.search_engine.index_mails(mails) self.resource = RootResource() - self.resource.initialize(self.keymanager, self.search_engine, self.mail_service, self.draft_service) + self.resource.initialize( + self.keymanager, self.search_engine, self.mail_service, self.draft_service, self.feedback_service) def _render(self, request, as_json=True): def get_str(_str): diff --git a/service/test/unit/resources/test_feedback_resource.py b/service/test/unit/resources/test_feedback_resource.py new file mode 100644 index 00000000..63e6efc4 --- /dev/null +++ b/service/test/unit/resources/test_feedback_resource.py @@ -0,0 +1,27 @@ +import json +from mockito import verify, mock, when +from twisted.trial import unittest +from twisted.web.test.requesthelper import DummyRequest +from pixelated.resources.feedback_resource import FeedbackResource +from test.unit.resources import DummySite + + +class TestFeedbackResource(unittest.TestCase): + def setUp(self): + self.feedback_service = mock() + self.web = DummySite(FeedbackResource(self.feedback_service)) + + def test_sends_feedback_to_leap_web(self): + request = DummyRequest(['/feedback']) + request.method = 'POST' + content = mock() + when(content).read().thenReturn(json.dumps({'feedback': 'Pixelated is awesome!'})) + request.content = content + + d = self.web.get(request) + + def assert_posted_feedback_to_leap_web(_): + verify(self.feedback_service).open_ticket('Pixelated is awesome!') + + d.addCallback(assert_posted_feedback_to_leap_web) + return d -- cgit v1.2.3