diff options
| -rw-r--r-- | service/pixelated/config/routes.py | 4 | ||||
| -rw-r--r-- | service/pixelated/controllers/mails_controller.py | 10 | ||||
| -rw-r--r-- | service/test/integration/delete_mail_test.py | 2 | ||||
| -rw-r--r-- | service/test/integration/mark_as_read_unread_test.py | 4 | ||||
| -rw-r--r-- | service/test/support/integration/soledad_test_base.py | 10 | ||||
| -rw-r--r-- | service/test/unit/controllers/mails_controller_test.py | 15 | ||||
| -rw-r--r-- | web-ui/app/js/services/mail_service.js | 24 | ||||
| -rw-r--r-- | web-ui/test/spec/services/mail_service.spec.js | 5 | 
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() { | 
