From 07df4eb5751d78189e60654a1b593bc8c7637521 Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Mon, 3 Aug 2015 11:17:32 +0200 Subject: Added move message in new data model. --- service/test/support/mockito/__init__.py | 40 ++++++++++++++++++++++ .../unit/adapter/mailstore/test_leap_mailstore.py | 17 ++++++++- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 service/test/support/mockito/__init__.py (limited to 'service/test') diff --git a/service/test/support/mockito/__init__.py b/service/test/support/mockito/__init__.py new file mode 100644 index 00000000..c8ffc55e --- /dev/null +++ b/service/test/support/mockito/__init__.py @@ -0,0 +1,40 @@ +# +# Copyright (c) 2015 ThoughtWorks, Inc. +# +# Pixelated is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pixelated is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Pixelated. If not, see . +from mockito.invocation import AnswerSelector, CompositeAnswer + + +class FunctionReturn(object): + """ + Instead of returning a constant value a function is called + """ + def __init__(self, function_answer): + self.function_answer = function_answer + + def answer(self): + return self.function_answer() + + +def thenAnswer(self, answer_function): + """mockito does not support the thenAnswer style. This method monkey patches it into the library""" + if not self.answer: + self.answer = CompositeAnswer(FunctionReturn(answer_function)) + self.invocation.stub_with(self.answer) + else: + self.answer.add(FunctionReturn(answer_function)) + + return self + +AnswerSelector.thenAnswer = thenAnswer diff --git a/service/test/unit/adapter/mailstore/test_leap_mailstore.py b/service/test/unit/adapter/mailstore/test_leap_mailstore.py index 322fa23d..92a4b63d 100644 --- a/service/test/unit/adapter/mailstore/test_leap_mailstore.py +++ b/service/test/unit/adapter/mailstore/test_leap_mailstore.py @@ -24,6 +24,7 @@ from twisted.trial.unittest import TestCase from leap.mail import constants from twisted.internet import defer from mockito import mock, when, verify, any +import test.support.mockito from leap.mail.adaptors.soledad import SoledadMailAdaptor, MailboxWrapper import pkg_resources from leap.mail.mail import Message @@ -246,6 +247,19 @@ class TestLeapMailStore(TestCase): self._assert_message_docs_created(expected_message, mail, only_mdoc_and_fdoc=True) + @defer.inlineCallbacks + def test_move_to_mailbox(self): + expected_message = self._add_create_mail_mocks_to_soledad('mbox00000000') + mail_id, fdoc_id = self._add_mail_fixture_to_soledad('mbox00000000') + self._mock_get_mailbox('TRASH') + store = LeapMailStore(self.soledad) + + mail = yield store.move_mail_to_mailbox(mail_id, 'TRASH') + + self._assert_message_docs_created(expected_message, mail, only_mdoc_and_fdoc=True) + # verify(self.soledad).delete_doc(self.doc_by_id[mail_id]) + # verify(self.soledad).delete_doc(self.doc_by_id[fdoc_id]) + def _assert_message_docs_created(self, expected_message, actual_message, only_mdoc_and_fdoc=False): wrapper = expected_message.get_wrapper() @@ -311,7 +325,8 @@ class TestLeapMailStore(TestCase): def _mock_soledad_doc(self, doc_id, doc): soledad_doc = SoledadDocument(doc_id, json=json.dumps(doc.serialize())) - when(self.soledad).get_doc(doc_id).thenReturn(defer.succeed(soledad_doc)) + # when(self.soledad).get_doc(doc_id).thenReturn(defer.succeed(soledad_doc)) + when(self.soledad).get_doc(doc_id).thenAnswer(lambda: defer.succeed(soledad_doc)) self.doc_by_id[doc_id] = soledad_doc -- cgit v1.2.3