summaryrefslogtreecommitdiff
path: root/web-ui/test/spec/mail_view/ui/draft_box.spec.js
blob: 0113ca0190e699f523f3bf426cd8e26af1383696 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/* global Pixelated */

describeComponent('mail_view/ui/draft_box', function () {
  'use strict';

  var mail;

  beforeEach(function () {
    Pixelated.mockBloodhound();
    mail = Pixelated.testData().parsedMail.simpleTextPlain;
    spyOn($, 'getJSON').and.returnValue($.Deferred());
  });

  describe('when initializing', function () {
    it('fetches the email to draft', function () {
      var mailWantEvent = spyOnEvent(document, Pixelated.events.mail.want);

      this.setupComponent({mailIdent: '1'});

      expect(mailWantEvent).toHaveBeenTriggeredOnAndWith(document, {
        mail: '1', caller: this.component
      });
    });
  });

  describe('after initialize', function () {
    beforeEach(function () {
      this.setupComponent({mailIdent: '1'});
    });

    it('renders the compose box when mail is received', function () {
      var templates = require('views/templates');

      spyOn(this.component, 'render');

      this.component.trigger(this.component, Pixelated.events.mail.here, { mail: mail});

      expect(this.component.render).toHaveBeenCalledWith(templates.compose.box, {
        recipients: { to: mail.header.to, cc: mail.header.cc, bcc: mail.header.bcc },
        subject: mail.header.subject,
        body: mail.textPlainBody
      });
    });

  });

  it('sending a draft sends the correct mailIdent', function () {
    this.setupComponent({mailIdent: mail.ident});
    this.component.trigger(this.component, Pixelated.events.mail.here, { mail: mail});

    var sendDraftEvent = spyOnEvent(document, Pixelated.events.mail.saveDraft);
    this.component.select('draftButton').click();

    expect(sendDraftEvent).toHaveBeenTriggeredOnAndWith(document, jasmine.objectContaining({ident: mail.ident}));
  });

  it('shows no message selected pane when draft is sent', function() {
    var openNoMessageSelectedEvent = spyOnEvent(document, Pixelated.events.dispatchers.rightPane.openNoMessageSelected);

    this.setupComponent({mailIdent: mail.ident});
    this.component.trigger(this.component, Pixelated.events.mail.here, { mail: mail});

    this.component.trigger(document, Pixelated.events.mail.sent);

    expect(openNoMessageSelectedEvent).toHaveBeenTriggeredOn(document);
  });

});