summaryrefslogtreecommitdiff
path: root/web-ui/test/spec/mail_view
diff options
context:
space:
mode:
Diffstat (limited to 'web-ui/test/spec/mail_view')
-rw-r--r--web-ui/test/spec/mail_view/data/feedback_sender.spec.js27
-rw-r--r--web-ui/test/spec/mail_view/ui/compose_box.spec.js65
-rw-r--r--web-ui/test/spec/mail_view/ui/draft_box.spec.js15
-rw-r--r--web-ui/test/spec/mail_view/ui/draft_button.spec.js40
-rw-r--r--web-ui/test/spec/mail_view/ui/feedback_box.spec.js45
-rw-r--r--web-ui/test/spec/mail_view/ui/mail_view.spec.js10
6 files changed, 198 insertions, 4 deletions
diff --git a/web-ui/test/spec/mail_view/data/feedback_sender.spec.js b/web-ui/test/spec/mail_view/data/feedback_sender.spec.js
new file mode 100644
index 00000000..30952c3f
--- /dev/null
+++ b/web-ui/test/spec/mail_view/data/feedback_sender.spec.js
@@ -0,0 +1,27 @@
+describeComponent('mail_view/data/feedback_sender', function () {
+ 'use strict';
+
+
+ beforeEach(function () {
+ this.setupComponent();
+ });
+
+ it('sends feedback with a POST to the server', function() {
+ var data = {feedback: 'Pixelated is awesome!'};
+ var feedbackSubmittedEventSpy = spyOnEvent(document, Pixelated.events.feedback.submitted);
+ var deferred = $.Deferred();
+
+ spyOn($, 'ajax').and.returnValue(deferred);
+
+ this.component.trigger(document, Pixelated.events.feedback.submit, data);
+
+ deferred.resolve();
+
+ expect(feedbackSubmittedEventSpy).toHaveBeenTriggeredOn(document);
+
+ expect($.ajax.calls.mostRecent().args[0]).toEqual('/feedback');
+ expect($.ajax.calls.mostRecent().args[1].type).toEqual('POST');
+ expect(JSON.parse($.ajax.calls.mostRecent().args[1].data)).toEqual(data);
+ });
+
+});
diff --git a/web-ui/test/spec/mail_view/ui/compose_box.spec.js b/web-ui/test/spec/mail_view/ui/compose_box.spec.js
index 414bc022..8e07481a 100644
--- a/web-ui/test/spec/mail_view/ui/compose_box.spec.js
+++ b/web-ui/test/spec/mail_view/ui/compose_box.spec.js
@@ -99,6 +99,15 @@ describeComponent('mail_view/ui/compose_box', function () {
expect(openNoMessageSelectedPaneEvent).not.toHaveBeenTriggeredOn(document);
});
+
+ it('should call the enableFloatlabel method when events.mail.here is trigged', function() {
+ spyOn(this.component, 'enableFloatlabel');
+
+ this.component.renderComposeBox();
+
+ expect(this.component.enableFloatlabel).toHaveBeenCalledWith('input.floatlabel');
+ expect(this.component.enableFloatlabel).toHaveBeenCalledWith('textarea.floatlabel');
+ });
});
describe('close button behavior', function() {
@@ -126,4 +135,60 @@ describeComponent('mail_view/ui/compose_box', function () {
}));
});
});
+
+ describe('subject label', function() {
+ var input;
+ var label;
+
+ beforeEach(function() {
+ input = $(this.component.$node).find('input');
+ label = input.prev('label');
+
+ this.component.enableFloatlabel(input);
+ });
+
+ it('should show the subject label after the user starts typing', function() {
+ input.val('test');
+ input.trigger('keyup');
+
+ expect(input.hasClass('showfloatlabel')).toEqual(true);
+ expect(label.hasClass('showfloatlabel')).toEqual(true);
+ });
+
+ it('should not show the subject label if the field is empty', function() {
+ input.val('');
+ input.trigger('keyup');
+
+ expect(input.hasClass('showfloatlabel')).toEqual(false);
+ expect(label.hasClass('showfloatlabel')).toEqual(false);
+ });
+ });
+
+ describe('body label', function() {
+ var textarea;
+ var label;
+
+ beforeEach(function() {
+ textarea = $(this.component.$node).find('textarea');
+ label = textarea.prev('label');
+
+ this.component.enableFloatlabel(textarea);
+ });
+
+ it('should show the subject label after the user starts typing', function() {
+ textarea.text('test');
+ textarea.trigger('keyup');
+
+ expect(textarea.hasClass('showfloatlabel')).toEqual(true);
+ expect(label.hasClass('showfloatlabel')).toEqual(true);
+ });
+
+ it('should not show the subject label if the field is empty', function() {
+ textarea.text('');
+ textarea.trigger('keyup');
+
+ expect(textarea.hasClass('showfloatlabel')).toEqual(false);
+ expect(label.hasClass('showfloatlabel')).toEqual(false);
+ });
+ });
});
diff --git a/web-ui/test/spec/mail_view/ui/draft_box.spec.js b/web-ui/test/spec/mail_view/ui/draft_box.spec.js
index 0113ca01..be3b4039 100644
--- a/web-ui/test/spec/mail_view/ui/draft_box.spec.js
+++ b/web-ui/test/spec/mail_view/ui/draft_box.spec.js
@@ -24,11 +24,8 @@ describeComponent('mail_view/ui/draft_box', function () {
});
describe('after initialize', function () {
- beforeEach(function () {
- this.setupComponent({mailIdent: '1'});
- });
-
it('renders the compose box when mail is received', function () {
+ this.setupComponent({mailIdent: '1'});
var templates = require('views/templates');
spyOn(this.component, 'render');
@@ -65,4 +62,14 @@ describeComponent('mail_view/ui/draft_box', function () {
expect(openNoMessageSelectedEvent).toHaveBeenTriggeredOn(document);
});
+ it('should call the enableFloatlabel method when events.mail.here is trigged', function() {
+ this.setupComponent({mailIdent: mail.ident});
+ spyOn(this.component, 'enableFloatlabel');
+
+ this.component.trigger(this.component, Pixelated.events.mail.here, { mail: mail });
+
+ expect(this.component.enableFloatlabel).toHaveBeenCalledWith('input.floatlabel');
+ expect(this.component.enableFloatlabel).toHaveBeenCalledWith('textarea.floatlabel');
+ });
+
});
diff --git a/web-ui/test/spec/mail_view/ui/draft_button.spec.js b/web-ui/test/spec/mail_view/ui/draft_button.spec.js
new file mode 100644
index 00000000..de607507
--- /dev/null
+++ b/web-ui/test/spec/mail_view/ui/draft_button.spec.js
@@ -0,0 +1,40 @@
+/* global Pixelated */
+
+describeComponent('mail_view/ui/draft_button', function(){
+ 'use strict';
+
+ describe('draft save button', function(){
+ beforeEach(function(){
+ this.setupComponent('<button></button>');
+ });
+
+ describe('after initialize', function(){
+ it('should be disabled', function(){
+ expect(this.$node).toBeDisabled();
+ });
+ });
+
+ describe('when enabled', function(){
+ beforeEach(function(){
+ this.$node.prop('disabled', false);
+ });
+
+ it('should be disabled when saving draft message', function(){
+ $(document).trigger(Pixelated.events.mail.saveDraft, {});
+ expect(this.$node).toBeDisabled();
+ });
+ });
+
+ describe('when disabled', function(){
+ beforeEach(function(){
+ this.$node.prop('disabled', true);
+ });
+
+ it('should be enabled when draft message has been saved', function(){
+ $(document).trigger(Pixelated.events.mail.draftSaved, {});
+ expect(this.$node).not.toBeDisabled();
+ });
+ });
+
+ });
+});
diff --git a/web-ui/test/spec/mail_view/ui/feedback_box.spec.js b/web-ui/test/spec/mail_view/ui/feedback_box.spec.js
new file mode 100644
index 00000000..4702672c
--- /dev/null
+++ b/web-ui/test/spec/mail_view/ui/feedback_box.spec.js
@@ -0,0 +1,45 @@
+describeComponent('mail_view/ui/feedback_box', function () {
+ 'use strict';
+ beforeEach(function () {
+ Pixelated.mockBloodhound();
+ this.setupComponent('<div></div>');
+ });
+
+
+ describe('close button behavior', function() {
+
+ it('should fire Show no message selected if the close button is clicked', function() {
+ var spy = spyOnEvent(document, Pixelated.events.dispatchers.rightPane.openNoMessageSelected);
+ this.component.select('closeButton').click();
+ expect(spy).toHaveBeenTriggeredOn(document);
+ });
+
+ });
+
+ describe('when submit feedback', function () {
+
+ it('should fire submit feedback event', function () {
+ var spy = spyOnEvent(document, Pixelated.events.feedback.submit);
+
+ this.component.select('textBox').val('Pixelated is Awesome!');
+ this.component.select('submitButton').click();
+ expect(spy).toHaveBeenTriggeredOnAndWith(document, {feedback: 'Pixelated is Awesome!'});
+ });
+
+ it('should close feedback box after submit', function() {
+ var spy = spyOnEvent(document, Pixelated.events.dispatchers.rightPane.openNoMessageSelected);
+
+ this.component.trigger(document, Pixelated.events.feedback.submitted);
+ expect(spy).toHaveBeenTriggeredOn(document);
+ });
+
+ it('should shows success message after submit', function () {
+ var spy = spyOnEvent(document, Pixelated.events.ui.userAlerts.displayMessage);
+
+ this.component.trigger(document, Pixelated.events.feedback.submitted);
+ expect(spy).toHaveBeenTriggeredOnAndWith(document, {message: 'Thanks for your feedback!'});
+ });
+
+ });
+
+});
diff --git a/web-ui/test/spec/mail_view/ui/mail_view.spec.js b/web-ui/test/spec/mail_view/ui/mail_view.spec.js
index deb7fb88..fe763919 100644
--- a/web-ui/test/spec/mail_view/ui/mail_view.spec.js
+++ b/web-ui/test/spec/mail_view/ui/mail_view.spec.js
@@ -265,6 +265,16 @@ describeComponent('mail_view/ui/mail_view', function () {
expect(openNoMessageSelectedEvent).toHaveBeenTriggeredOn(document);
});
+ it('shows a download link for attachments', function() {
+ var withAttachments = {mail: Pixelated.testData().parsedMail.withAttachments};
+
+ this.component.displayMail({}, withAttachments);
+
+ var attachmentLink = $(this.component.$node.find('.attachmentsArea li').html());
+ var expectedLink = '/attachment/912ec803b2ce49e4a541068d495ab570?encoding=base64&filename=filename.txt';
+ expect(attachmentLink.attr('href')) .toBe(expectedLink);
+ });
+
function creatingEvent(event, keyCode) {
var e = $.Event(event);
e.which = keyCode;