blob: 8fa3480b90158d0e2ae41dbd1e6002cf4c9aa23f [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('views/common/modal_popups/cluster_check_popup');
describe('App.showClusterCheckPopup', function () {
var isCallbackExecuted,
callback = function () {
isCallbackExecuted = true;
},
cases = [
{
inputData: {
data: {
items: [
{
UpgradeChecks: {
id: 'p0',
status: 'PASS'
}
},
{
UpgradeChecks: {
id: 'p1',
status: 'PASS'
}
}
]
}
},
result: {
primary: Em.I18n.t('common.proceedAnyway'),
secondary: Em.I18n.t('common.cancel'),
header: ' '
},
bodyResult: {
failTitle: undefined,
failAlert: undefined,
warningTitle: undefined,
warningAlert: undefined,
fails: [],
warnings: [],
hasConfigsMergeConflicts: false,
isAllPassed: true
},
isCallbackExecuted: false,
title: 'no fails, no warnings, no popup customization'
},
{
inputData: {
data: {
items: [
{
UpgradeChecks: {
id: 'w0',
status: 'WARNING',
check: 'w0 check',
failed_on: 'w0 failed',
reason: 'w0 reason'
}
},
{
UpgradeChecks: {
id: 'w1',
status: 'WARNING',
check: 'w1 check',
failed_on: 'w1 failed',
reason: 'w1 reason'
}
}
]
},
popup: {
header: 'checks',
failTitle: 'fail',
failAlert: 'something has failed',
warningTitle: 'warning',
warningAlert: 'something is not good',
callback: callback
}
},
result: {
primary: Em.I18n.t('common.proceedAnyway'),
secondary: Em.I18n.t('common.cancel'),
header: 'checks'
},
bodyResult: {
failTitle: 'fail',
failAlert: 'something has failed',
warningTitle: 'warning',
warningAlert: 'something is not good',
fails: [],
warnings: [
{
check: 'w0 check',
failed_on: 'w0 failed',
reason: 'w0 reason'
},
{
check: 'w1 check',
failed_on: 'w1 failed',
reason: 'w1 reason'
}
],
hasConfigsMergeConflicts: false,
isAllPassed: false
},
isCallbackExecuted: true,
title: 'no fails, default buttons, callback executed'
},
{
inputData: {
data: {
items: [
{
UpgradeChecks: {
id: 'f0',
status: 'FAIL',
check: 'f0 check',
failed_on: 'f0 failed',
reason: 'f0 reason'
}
},
{
UpgradeChecks: {
id: 'f1',
status: 'FAIL',
check: 'f1 check',
failed_on: 'f1 failed',
reason: 'f1 reason'
}
}
]
},
popup: {
callback: callback,
noCallbackCondition: true
}
},
result: {
primary: Em.I18n.t('common.dismiss'),
secondary: false,
header: ' '
},
bodyResult: {
failTitle: undefined,
failAlert: undefined,
warningTitle: undefined,
warningAlert: undefined,
fails: [
{
check: 'f0 check',
failed_on: 'f0 failed',
reason: 'f0 reason'
},
{
check: 'f1 check',
failed_on: 'f1 failed',
reason: 'f1 reason'
}
],
warnings: [],
hasConfigsMergeConflicts: false,
isAllPassed: false
},
isCallbackExecuted: false,
title: 'fails detected, default buttons, callback not executed'
},
{
inputData: {
data: {
items: [
{
UpgradeChecks: {
id: 'p0',
status: 'PASS'
}
},
{
UpgradeChecks: {
id: 'p1',
status: 'PASS'
}
}
]
},
popup: {
primary: 'ok',
secondary: 'cancel'
},
configs: [
{
name: 'c0',
wasModified: false
},
{
name: 'c1',
wasModified: true
}
]
},
result: {
primary: 'ok',
secondary: 'cancel',
header: ' '
},
bodyResult: {
failTitle: undefined,
failAlert: undefined,
warningTitle: undefined,
warningAlert: undefined,
fails: [],
warnings: [],
hasConfigsMergeConflicts: true,
hasConfigsRecommendations: true,
isAllPassed: false
},
configsResult: [
{
name: 'c0',
wasModified: false
}
],
configRecommendResult: [
{
name: 'c1',
wasModified: true
}
],
isCallbackExecuted: false,
title: 'configs merge conflicts detected, custom buttons'
}
];
beforeEach(function () {
isCallbackExecuted = false;
sinon.stub(App, 'tooltip', Em.K);
});
afterEach(function () {
App.tooltip.restore();
});
cases.forEach(function (item) {
describe(item.title, function () {
var popup;
var popupBody;
beforeEach(function () {
popup = App.showClusterCheckPopup(item.inputData.data, item.inputData.popup, item.inputData.configs);
popupBody = popup.bodyClass.create();
popup.onPrimary();
});
describe('result', function () {
Em.keys(item.result).forEach(function (key) {
it(key, function () {
expect(popup[key]).to.equal(item.result[key]);
});
});
});
describe('bodyResult', function () {
Em.keys(item.bodyResult).forEach(function (key) {
it(key, function () {
expect(popupBody[key]).to.eql(item.bodyResult[key]);
});
});
});
it('callbackExecuted', function () {
expect(isCallbackExecuted).to.equal(item.isCallbackExecuted);
});
if (item.bodyResult.hasConfigsMergeConflicts) {
it('hasConfigsMergeConflicts = true', function () {
var configsMergeTable = popupBody.configsMergeTable.create();
expect(configsMergeTable.configs).to.eql(item.configsResult);
});
}
if (item.bodyResult.hasConfigsRecommendations) {
it('hasConfigsRecommendations = true', function () {
var configsRecommendTable = popupBody.configsRecommendTable.create();
expect(configsRecommendTable.configs).to.eql(item.configRecommendResult);
});
}
});
});
});