blob: 5b98b9ccb447964b94d14db13e0356f4d254dbf6 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var App = require('app');
require('messages');
require('views/main/alert_definitions_view');
var view;
function getView() {
return App.MainAlertDefinitionsView.create({
controller: Em.Object.create()
});
}
describe('App.MainAlertDefinitionsView', function () {
beforeEach(function () {
view = getView();
sinon.stub(App.db, 'setFilterConditions', Em.K);
sinon.stub(App.db, 'getFilterConditions').returns([]);
sinon.stub(App.db, 'getDisplayLength', Em.K);
sinon.stub(App.db, 'setStartIndex', Em.K);
sinon.stub(view, 'initFilters', Em.K);
});
afterEach(function () {
App.db.setFilterConditions.restore();
App.db.getFilterConditions.restore();
App.db.getDisplayLength.restore();
App.db.setStartIndex.restore();
view.initFilters.restore();
});
App.TestAliases.testAsComputedAlias(getView(), 'totalCount', 'content.length', 'number');
describe('#willInsertElement', function () {
beforeEach(function(){
sinon.stub(view, 'clearFilterConditionsFromLocalStorage', Em.K);
sinon.stub(App.db, 'getSortingStatuses').returns([
{
name: "summary",
status: "sorting"
}
]);
sinon.stub(App.db, 'setSortingStatuses');
});
afterEach(function(){
view.clearFilterConditionsFromLocalStorage.restore();
App.db.getSortingStatuses.restore();
App.db.setSortingStatuses.restore();
});
it('should call clearFilterCondition if controller.showFilterConditionsFirstLoad is false', function () {
view.set('controller', {showFilterConditionsFirstLoad: false, content: []});
view.willInsertElement();
expect(view.clearFilterConditionsFromLocalStorage.calledOnce).to.be.true;
});
it('should not call clearFilterCondition if controller.showFilterConditionsFirstLoad is true', function () {
view.set('controller', {showFilterConditionsFirstLoad: true, content: []});
view.willInsertElement();
expect(view.clearFilterConditionsFromLocalStorage.calledOnce).to.be.false;
});
it('showFilterConditionsFirstLoad is true', function () {
view.set('controller', {showFilterConditionsFirstLoad: true, name: 'ctrl1'});
view.willInsertElement();
expect(App.db.setSortingStatuses.calledWith('ctrl1',
[
{
name: "summary",
status: "sorting"
},
{
name: "summary",
status: "sorting_desc"
}
])).to.be.true;
});
});
describe("#didInsertElement()", function () {
beforeEach(function() {
sinon.stub(Em.run, 'next', Em.clb);
sinon.stub(view, 'contentObsOnce');
sinon.stub(view, 'tooltipsUpdater');
view.didInsertElement();
});
afterEach(function() {
Em.run.next.restore();
view.contentObsOnce.restore();
view.tooltipsUpdater.restore();
});
it("isInitialRendering should be false", function() {
expect(view.get('isInitialRendering')).to.be.false;
});
it("contentObsOnce should be called", function() {
expect(view.contentObsOnce.calledOnce).to.be.true;
});
it("tooltipsUpdater should be called", function() {
expect(view.tooltipsUpdater.calledOnce).to.be.true;
});
});
describe("#willDestroyElement()", function () {
var container = {
tooltip: Em.K
};
beforeEach(function() {
sinon.stub(window, '$').returns(container);
sinon.stub(view, 'removeObserver');
sinon.stub(container, 'tooltip');
view.willDestroyElement();
});
afterEach(function() {
window.$.restore();
view.removeObserver.restore();
container.tooltip.restore();
});
it("tooltip should be destroyed", function() {
expect(container.tooltip.calledWith('destroy')).to.be.true;
});
it("removeObserver should be called", function() {
expect(view.removeObserver.calledWith('pageContent.length', view, 'tooltipsUpdater')).to.be.true;
});
});
describe("#saveStartIndex()", function () {
it("App.db.setStartIndex should be called", function() {
view.set('controller.name', 'ctrl1');
view.set('startIndex', 1);
view.saveStartIndex();
expect(App.db.setStartIndex.calledWith('ctrl1', 1)).to.be.true;
});
});
describe("#clearStartIndex()", function () {
it("App.db.setStartIndex should be called", function() {
view.set('controller.name', 'ctrl1');
view.clearStartIndex();
expect(App.db.setStartIndex.calledWith('ctrl1', null)).to.be.true;
});
});
describe("#paginationLeftClass", function() {
it("startIndex is 2", function() {
view.set('startIndex', 2);
expect(view.get('paginationLeftClass')).to.equal('paginate_previous');
});
it("startIndex is 1", function() {
view.set('startIndex', 1);
expect(view.get('paginationLeftClass')).to.equal('paginate_disabled_previous');
});
it("startIndex is 0", function() {
view.set('startIndex', 0);
expect(view.get('paginationLeftClass')).to.equal('paginate_disabled_previous');
});
});
describe("#paginationRightClass", function() {
it("endIndex more than filteredCount", function() {
view.reopen({
endIndex: 4,
filteredCount: 3
});
expect(view.get('paginationRightClass')).to.equal('paginate_disabled_next');
});
it("endIndex equal to filteredCount", function() {
view.reopen({
endIndex: 4,
filteredCount: 4
});
expect(view.get('paginationRightClass')).to.equal('paginate_disabled_next');
});
it("endIndex less than filteredCount", function() {
view.reopen({
endIndex: 3,
filteredCount: 4
});
view.propertyDidChange('paginationRightClass');
expect(view.get('paginationRightClass')).to.equal('paginate_next');
});
});
describe("#previousPage()", function () {
beforeEach(function() {
sinon.stub(view, 'tooltipsUpdater');
});
afterEach(function() {
view.tooltipsUpdater.restore();
});
it("tooltipsUpdater should be called", function() {
view.previousPage();
expect(view.tooltipsUpdater.calledOnce).to.be.true;
});
});
describe("#nextPage()", function () {
beforeEach(function() {
sinon.stub(view, 'tooltipsUpdater');
});
afterEach(function() {
view.tooltipsUpdater.restore();
});
it("tooltipsUpdater should be called", function() {
view.nextPage();
expect(view.tooltipsUpdater.calledOnce).to.be.true;
});
});
describe("#tooltipsUpdater", function () {
beforeEach(function() {
sinon.stub(Em.run, 'next', function(context, callback) {
callback();
});
sinon.stub(App, 'tooltip');
});
afterEach(function() {
Em.run.next.restore();
App.tooltip.restore();
});
it("App.tooltip should be called", function() {
view.tooltipsUpdater();
expect(App.tooltip.calledOnce).to.be.true;
});
});
describe("#updateFilter()", function () {
beforeEach(function() {
sinon.stub(view, 'tooltipsUpdater');
});
afterEach(function() {
view.tooltipsUpdater.restore();
});
it("tooltipsUpdater should be called", function() {
view.updateFilter(1, 'val1', 'type1');
expect(view.tooltipsUpdater.calledOnce).to.be.true;
});
});
describe('#contentObsOnce', function () {
var toArray = function () {
return [{}];
},
cases = [
{
controllerContent: null,
isAlertsLoaded: false,
content: [],
title: 'no content in controller, alerts data not loaded'
},
{
controllerContent: null,
isAlertsLoaded: true,
content: [],
title: 'no content in controller, alerts data loaded'
},
{
controllerContent: {
toArray: toArray
},
isAlertsLoaded: false,
content: [],
title: 'content set in controller, alerts data not loaded'
},
{
controllerContent: {
toArray: toArray
},
isAlertsLoaded: true,
content: [{}],
title: 'content set in controller, alerts data loaded'
}
];
cases.forEach(function (item) {
describe(item.title, function () {
beforeEach(function () {
var controller = {
content: item.controllerContent
};
sinon.stub(App.AlertDefinition, 'getSortDefinitionsByStatus', function () {
return Em.K;
});
sinon.stub(view, 'contentObs', Em.K);
sinon.stub(App, 'get', function (key) {
if (key === 'router.clusterController.isAlertsLoaded') {
return item.isAlertsLoaded;
}
return Em.get(App, key);
});
view.set('controller', controller);
view.contentObsOnce();
});
afterEach(function () {
view.contentObs.restore();
App.get.restore();
App.AlertDefinition.getSortDefinitionsByStatus.restore();
});
it('view.content', function () {
expect(view.get('content')).to.eql(item.content);
});
});
});
});
});