describeComponent('dispatchers/middle_pane_dispatcher', function () {
'use strict';
beforeEach(function() {
this.setupComponent('
');
});
it ('listens to refresh mail list event', function() {
var mailsListRefreshEventSpy = spyOnEvent(document, Pixelated.events.ui.mails.fetchByTag);
this.component.trigger(document, Pixelated.events.dispatchers.middlePane.refreshMailList);
expect(mailsListRefreshEventSpy).toHaveBeenTriggeredOn(document);
});
it ('listens to unselect event', function() {
var mailListUnselectEvent = spyOnEvent(document, Pixelated.events.ui.mails.cleanSelected);
this.component.trigger(document, Pixelated.events.dispatchers.middlePane.cleanSelected);
expect(mailListUnselectEvent).toHaveBeenTriggeredOn(document);
});
it('resets the scrollTop value when asked to', function() {
this.component.select('middlePane').scrollTop(200);
this.component.trigger(document, Pixelated.events.dispatchers.middlePane.resetScroll);
expect(this.component.select('middlePane').scrollTop()).toEqual(0);
});
describe('no emails available', function () {
var noMailsAvailablePane, attachToSpy;
beforeEach(function () {
noMailsAvailablePane = require('mail_view/ui/no_mails_available_pane');
attachToSpy = spyOn(noMailsAvailablePane, 'attachTo');
spyOn(noMailsAvailablePane, 'teardownAll');
});
it('should listen to mails available event and show noMailsAvailablePane', function () {
var mail_list = { mails: []};
this.component.trigger(document, Pixelated.events.mails.available, mail_list);
expect(noMailsAvailablePane.attachTo).toHaveBeenCalled();
});
it('should listen to mails available event and do not show noMailsAvailablePane', function () {
var pretend_to_be_a_mail = {};
var mail_list = { mails: [pretend_to_be_a_mail]};
this.component.trigger(document, Pixelated.events.mails.available, mail_list);
expect(noMailsAvailablePane.attachTo).not.toHaveBeenCalled();
expect(noMailsAvailablePane.teardownAll).toHaveBeenCalled();
});
it('should give search information to component', function () {
var mail_list = { mails: [], tag: 'all', forSearch: 'search'};
this.component.trigger(document, Pixelated.events.mails.available, mail_list);
expect(attachToSpy.calls.mostRecent().args[1]).toEqual({tag: 'all', forSearch: 'search'});
});
});
});