1
0
mirror of https://github.com/moparisthebest/mail synced 2024-12-01 21:32:17 -05:00
mail/test/unit/controller/app/action-bar-ctrl-test.js

223 lines
6.2 KiB
JavaScript
Raw Normal View History

'use strict';
2014-11-26 07:43:10 -05:00
var Email = require('../../../../src/js/email/email'),
Dialog = require('../../../../src/js/util/dialog'),
StatusDisplay = require('../../../../src/js/util/status-display'),
ActionBarCtrl = require('../../../../src/js/controller/app/action-bar');
describe('Action Bar Controller unit test', function() {
2014-11-26 07:43:10 -05:00
var scope, actionBarCtrl, emailMock, dialogMock, statusDisplayMock;
beforeEach(function() {
2014-11-26 07:43:10 -05:00
emailMock = sinon.createStubInstance(Email);
dialogMock = sinon.createStubInstance(Dialog);
statusDisplayMock = sinon.createStubInstance(StatusDisplay);
angular.module('actionbartest', []);
2014-11-26 07:43:10 -05:00
angular.mock.module('actionbartest');
angular.mock.inject(function($rootScope, $controller) {
scope = $rootScope.$new();
scope.state = {
mailList: {
updateStatus: function() {}
}
};
scope.state.nav = {
currentFolder: {
type: 'Inbox',
path: 'INBOX',
messages: [{
checked: true
}, {
checked: false
}]
}
};
scope.state.read = {
open: true
};
actionBarCtrl = $controller(ActionBarCtrl, {
2014-11-26 07:43:10 -05:00
$scope: scope,
email: emailMock,
dialog: dialogMock,
statusDisplay: statusDisplayMock
});
});
});
2014-11-26 07:43:10 -05:00
afterEach(function() {});
describe('deleteMessage', function() {
it('should not delete without a selected mail', function() {
scope.deleteMessage();
});
it('should delete the selected mail', function() {
2014-11-26 07:43:10 -05:00
emailMock.deleteMessage.yields();
scope.deleteMessage({});
2014-11-26 07:43:10 -05:00
expect(emailMock.deleteMessage.calledOnce).to.be.true;
expect(scope.state.read.open).to.be.false;
});
});
describe('deleteCheckedMessages', function() {
var deleteMessageStub;
beforeEach(function() {
deleteMessageStub = sinon.stub(scope, 'deleteMessage');
});
afterEach(function() {
deleteMessageStub.restore();
});
it('should delete the selected mail', function() {
scope.deleteCheckedMessages();
expect(deleteMessageStub.calledOnce).to.be.true;
});
});
describe('moveMessage', function() {
it('should not move without a selected mail', function() {
scope.moveMessage();
});
it('should move the selected mail', function() {
2014-11-26 07:43:10 -05:00
emailMock.moveMessage.yields();
scope.moveMessage({}, {});
2014-11-26 07:43:10 -05:00
expect(emailMock.moveMessage.calledOnce).to.be.true;
expect(scope.state.read.open).to.be.false;
});
});
describe('moveCheckedMessages', function() {
var moveMessageStub;
beforeEach(function() {
moveMessageStub = sinon.stub(scope, 'moveMessage');
});
afterEach(function() {
moveMessageStub.restore();
});
it('should delete the selected mail', function() {
scope.moveCheckedMessages();
expect(moveMessageStub.calledOnce).to.be.true;
});
});
2014-12-02 04:55:22 -05:00
describe('getJunkFolder', function() {
it('should work', function() {
scope.account = {
folders: [{
type: 'Junk'
}]
};
var folder = scope.getJunkFolder();
expect(folder).to.exist;
});
it('should fail', function() {
scope.account = {
folders: [{
type: 'NotJunk'
}]
};
var folder = scope.getJunkFolder();
expect(folder).to.not.exist;
expect(dialogMock.error.calledOnce).to.be.true;
});
});
describe('markMessage', function() {
2014-12-02 12:36:15 -05:00
it('should not mark without a selected mail', function() {
scope.markMessage();
});
2014-12-02 12:36:15 -05:00
it('should not mark when old and new changes are equivalent', function() {
scope.markMessage({
unread: false
}, false);
scope.markMessage({
unread: true
}, true);
});
it('should mark the selected mail', function() {
2014-11-26 07:43:10 -05:00
emailMock.setFlags.yields();
scope.markMessage({}, true);
2014-11-26 07:43:10 -05:00
expect(emailMock.setFlags.calledOnce).to.be.true;
expect(scope.state.read.open).to.be.false;
});
});
describe('markCheckedMessages', function() {
var markMessageStub;
beforeEach(function() {
markMessageStub = sinon.stub(scope, 'markMessage');
});
afterEach(function() {
markMessageStub.restore();
});
2014-12-02 12:36:15 -05:00
it('should mark the selected mail', function() {
scope.markCheckedMessages();
expect(markMessageStub.calledOnce).to.be.true;
});
});
2014-12-02 12:36:15 -05:00
describe('flagMessage', function() {
it('should not flag without a selected mail', function() {
scope.flagMessage();
});
it('should not flag when old and new changes are equivalent', function() {
scope.flagMessage({
flagged: false
}, false);
scope.flagMessage({
flagged: true
}, true);
});
it('should flag the selected mail', function() {
emailMock.setFlags.yields();
scope.flagMessage({}, true);
expect(emailMock.setFlags.calledOnce).to.be.true;
});
});
describe('flagCheckedMessages', function() {
var flagMessageStub;
beforeEach(function() {
flagMessageStub = sinon.stub(scope, 'flagMessage');
});
afterEach(function() {
flagMessageStub.restore();
});
it('should delete the selected mail', function() {
scope.flagCheckedMessages();
expect(flagMessageStub.calledOnce).to.be.true;
});
});
});