summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuda Dornelles <ddornell@thoughtworks.com>2014-12-18 14:36:10 -0200
committerDuda Dornelles <ddornell@thoughtworks.com>2014-12-18 14:37:14 -0200
commit8e57412dcd7fe8749ebed645e048309618ed01b5 (patch)
treed736ae52d3fbffee06e482b19702c78041c83f71
parent2d07349df9eb7fd3a197c0c3a9f7180af441f82c (diff)
\#203 & #204 & #205: fixing client and api for buld mark as read/unread and delete, functional tests are still broken, investigating...
-rw-r--r--service/pixelated/config/routes.py4
-rw-r--r--service/pixelated/controllers/mails_controller.py10
-rw-r--r--service/test/integration/delete_mail_test.py2
-rw-r--r--service/test/integration/mark_as_read_unread_test.py4
-rw-r--r--service/test/support/integration/soledad_test_base.py10
-rw-r--r--service/test/unit/controllers/mails_controller_test.py15
-rw-r--r--web-ui/app/js/services/mail_service.js24
-rw-r--r--web-ui/test/spec/services/mail_service.spec.js5
8 files changed, 29 insertions, 45 deletions
diff --git a/service/pixelated/config/routes.py b/service/pixelated/config/routes.py
index 334119fc..5efbbb28 100644
--- a/service/pixelated/config/routes.py
+++ b/service/pixelated/config/routes.py
@@ -2,13 +2,11 @@ def setup_routes(app, home_controller, mails_controller, tags_controller, featur
attachments_controller, contacts_controller):
# mails
app.route('/mails', methods=['GET'])(mails_controller.mails)
- app.route('/mail/<mail_id>/read', methods=['POST'])(mails_controller.mark_mail_as_read)
- app.route('/mail/<mail_id>/unread', methods=['POST'])(mails_controller.mark_mail_as_unread)
app.route('/mails/unread', methods=['POST'])(mails_controller.mark_many_mail_unread)
app.route('/mails/read', methods=['POST'])(mails_controller.mark_many_mail_read)
app.route('/mail/<mail_id>', methods=['GET'])(mails_controller.mail)
app.route('/mail/<mail_id>', methods=['DELETE'])(mails_controller.delete_mail)
- app.route('/mails', methods=['DELETE'])(mails_controller.delete_mails)
+ app.route('/mails/delete', methods=['POST'])(mails_controller.delete_mails)
app.route('/mails', methods=['POST'])(mails_controller.send_mail)
app.route('/mail/<mail_id>/tags', methods=['POST'])(mails_controller.mail_tags)
app.route('/mails', methods=['PUT'])(mails_controller.update_draft)
diff --git a/service/pixelated/controllers/mails_controller.py b/service/pixelated/controllers/mails_controller.py
index 7166a51d..eba97784 100644
--- a/service/pixelated/controllers/mails_controller.py
+++ b/service/pixelated/controllers/mails_controller.py
@@ -44,16 +44,6 @@ class MailsController:
mail = self._mail_service.mail(mail_id)
return respond_json(mail.as_dict(), request)
- def mark_mail_as_read(self, request, mail_id):
- mail = self._mail_service.mark_as_read(mail_id)
- self._search_engine.index_mail(mail)
- return ""
-
- def mark_mail_as_unread(self, request, mail_id):
- mail = self._mail_service.mark_as_unread(mail_id)
- self._search_engine.index_mail(mail)
- return ""
-
def mark_many_mail_unread(self, request):
content_dict = json.load(request.content)
idents = content_dict.get('idents')
diff --git a/service/test/integration/delete_mail_test.py b/service/test/integration/delete_mail_test.py
index 28f55840..5a3a97fb 100644
--- a/service/test/integration/delete_mail_test.py
+++ b/service/test/integration/delete_mail_test.py
@@ -41,7 +41,7 @@ class DeleteMailTest(SoledadTestBase):
def test_delete_mail_when_trashing_mail_from_trash_mailbox(self):
mails = self.client.add_multiple_to_mailbox(1, 'trash')
- self.delete_mail(mails[0].ident)
+ self.delete_mails([mails[0].ident])
trash_mails = self.get_mails_by_tag('trash')
diff --git a/service/test/integration/mark_as_read_unread_test.py b/service/test/integration/mark_as_read_unread_test.py
index 55467e9e..03da404f 100644
--- a/service/test/integration/mark_as_read_unread_test.py
+++ b/service/test/integration/mark_as_read_unread_test.py
@@ -33,7 +33,7 @@ class MarkAsReadUnreadTest(SoledadTestBase):
mails = self.get_mails_by_tag('inbox')
self.assertNotIn('read', mails[0].status)
- self.mark_as_read(input_mail.ident)
+ self.mark_many_as_read([input_mail.ident])
mails = self.get_mails_by_tag('inbox')
self.assertIn('read', mails[0].status)
@@ -42,7 +42,7 @@ class MarkAsReadUnreadTest(SoledadTestBase):
input_mail = MailBuilder().with_status([Status.SEEN]).build_input_mail()
self.client.add_mail_to_inbox(input_mail)
- self.mark_as_unread(input_mail.ident)
+ self.mark_many_as_unread([input_mail.ident])
mail = self.get_mails_by_tag('inbox')[0]
self.assertNotIn('read', mail.status)
diff --git a/service/test/support/integration/soledad_test_base.py b/service/test/support/integration/soledad_test_base.py
index a000349e..6368d3e8 100644
--- a/service/test/support/integration/soledad_test_base.py
+++ b/service/test/support/integration/soledad_test_base.py
@@ -71,15 +71,7 @@ class SoledadTestBase(unittest.TestCase):
return req
def delete_mails(self, idents):
- res, req = self.client.delete("/mails", json.dumps({'idents': idents}))
- return req
-
- def mark_as_read(self, mail_ident):
- res, req = self.client.post("/mail/%s/read" % mail_ident)
- return req
-
- def mark_as_unread(self, mail_ident):
- res, req = self.client.post("/mail/%s/unread" % mail_ident)
+ res, req = self.client.post("/mails/delete", json.dumps({'idents': idents}))
return req
def mark_many_as_unread(self, idents):
diff --git a/service/test/unit/controllers/mails_controller_test.py b/service/test/unit/controllers/mails_controller_test.py
index ab87c205..c9c2c7cf 100644
--- a/service/test/unit/controllers/mails_controller_test.py
+++ b/service/test/unit/controllers/mails_controller_test.py
@@ -15,6 +15,7 @@
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import json
import unittest
+from io import BytesIO
from klein.test_resource import requestMock
from mock import MagicMock
@@ -77,22 +78,24 @@ class TestMailsController(unittest.TestCase):
def test_marking_mail_as_read_set_mail_as_read_on_the_service(self):
mail = mock()
- when(self.mail_service).mark_as_read(1).thenReturn(mail)
+ when(self.mail_service).mark_as_read("1").thenReturn(mail)
when(self.search_engine).index_mail(mail).thenReturn(None)
+ self.dummy_request.content = BytesIO('{"idents":["1"]}')
- self.mails_controller.mark_mail_as_read(None, 1)
+ self.mails_controller.mark_many_mail_read(self.dummy_request)
- verify(self.mail_service).mark_as_read(1)
+ verify(self.mail_service).mark_as_read(u'1')
verify(self.search_engine).index_mail(mail)
def test_marking_mail_as_unread_set_mail_as_unread_on_the_service(self):
mail = mock()
- when(self.mail_service).mark_as_unread(1).thenReturn(mail)
+ when(self.mail_service).mark_as_unread("1").thenReturn(mail)
when(self.search_engine).index_mail(mail).thenReturn(None)
+ self.dummy_request.content = BytesIO('{"idents":["1"]}')
- self.mails_controller.mark_mail_as_unread(None, 1)
+ self.mails_controller.mark_many_mail_unread(self.dummy_request)
- verify(self.mail_service).mark_as_unread(1)
+ verify(self.mail_service).mark_as_unread(u'1')
verify(self.search_engine).index_mail(mail)
def test_move_message_to_trash(self):
diff --git a/web-ui/app/js/services/mail_service.js b/web-ui/app/js/services/mail_service.js
index 58b70ed7..24bceb31 100644
--- a/web-ui/app/js/services/mail_service.js
+++ b/web-ui/app/js/services/mail_service.js
@@ -80,13 +80,13 @@ define(
mailIdents = _.map(data.checkedMails, function (mail) {
return mail.ident;
});
- monitoredAjax(this, '/mails/read', {
- type: 'POST',
- data: {idents: JSON.stringify(mailIdents)}
- }).done(this.triggerMailsRead(data.checkedMails));
} else {
- monitoredAjax(this, '/mail/' + data.ident + '/read', {type: 'POST'});
+ mailIdents = [data.ident];
}
+ monitoredAjax(this, '/mails/read', {
+ type: 'POST',
+ data: JSON.stringify({idents: mailIdents})
+ }).done(this.triggerMailsRead(data.checkedMails));
};
this.unreadMail = function (ev, data) {
@@ -95,13 +95,13 @@ define(
mailIdents = _.map(data.checkedMails, function (mail) {
return mail.ident;
});
- monitoredAjax(this, '/mails/unread', {
- type: 'POST',
- data: {idents: JSON.stringify(mailIdents)}
- }).done(this.triggerMailsRead(data.checkedMails));
} else {
- monitoredAjax(this, '/mail/' + data.ident + '/read', {type: 'POST'});
+ mailIdents = [data.ident];
}
+ monitoredAjax(this, '/mails/unread', {
+ type: 'POST',
+ data: JSON.stringify({idents: mailIdents})
+ }).done(this.triggerMailsRead(data.checkedMails));
};
this.triggerMailsRead = function (mails) {
@@ -137,8 +137,8 @@ define(
return mail.ident;
});
- monitoredAjax(this, '/mails', {
- type: 'DELETE',
+ monitoredAjax(this, '/mails/delete', {
+ type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({idents: mailIdents})
diff --git a/web-ui/test/spec/services/mail_service.spec.js b/web-ui/test/spec/services/mail_service.spec.js
index be10b934..55ca81c0 100644
--- a/web-ui/test/spec/services/mail_service.spec.js
+++ b/web-ui/test/spec/services/mail_service.spec.js
@@ -18,7 +18,8 @@ describeComponent('services/mail_service', function () {
this.component.trigger(Pixelated.events.mail.read, {ident: 1});
- expect(readRequest.calls.mostRecent().args[0]).toEqual('/mail/1/read');
+ expect(readRequest.calls.mostRecent().args[0]).toEqual('/mails/read');
+ expect(readRequest.calls.mostRecent().args[1].data).toEqual('{"idents":[1]}');
});
describe('when marks many emails as read', function () {
@@ -42,7 +43,7 @@ describeComponent('services/mail_service', function () {
it('makes the correct request to the backend', function () {
expect(readRequest.calls.mostRecent().args[0]).toEqual('/mails/read');
- expect(readRequest.calls.mostRecent().args[1].data).toEqual({idents: '[1,2]'});
+ expect(readRequest.calls.mostRecent().args[1].data).toEqual('{"idents":[1,2]}')
});
it('will trigger that a message has been deleted when it is done deleting', function() {