blob: e0b8efca2de3ac8030147f24cb3f302c7aebcb42 [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('models/cluster');
require('controllers/wizard');
require('controllers/installer');
describe('App.InstallerController', function () {
var installerController = App.InstallerController.create();
after(function () {
installerController.destroy();
});
describe('#init', function () {
var c;
beforeEach(function () {
c = App.InstallerController.create({});
});
it('all steps are disabled by default', function () {
expect(c.get('isStepDisabled.length')).to.be.above(0);
expect(c.get('isStepDisabled').everyProperty('value', true)).to.be.ok;
});
});
describe('#getCluster', function() {
it ('Should return merged clusterStatusTemplate', function() {
installerController.set('clusterStatusTemplate', {
name: 'template'
});
expect(installerController.getCluster()).to.eql({
name: 'template'
});
});
});
describe('#getHosts', function() {
it ('Should return empty array', function() {
expect(installerController.getHosts()).to.eql([]);
});
});
describe('#loadServices', function() {
it ('Should resolve nothing', function() {
var res = installerController.loadServices();
res.then(function(data){
expect(data).to.be.undefined;
});
});
});
describe('#cancelInstall', function() {
var mock = {
goToAdminView: sinon.spy()
};
beforeEach(function() {
sinon.stub(App.router, 'get').returns(mock);
});
afterEach(function() {
App.router.get.restore();
});
it('goToAdminView should be called', function() {
var popup = installerController.cancelInstall();
popup.onPrimary();
expect(mock.goToAdminView.calledOnce).to.be.true;
});
});
describe('#checkRepoURL', function() {
var stacks = Em.A([
Em.Object.create({
isSelected: false
}),
Em.Object.create({
isSelected: true,
reload: false,
id: 'nn-cc',
stackNameVersion: 'nn-cc',
repositories: Em.A([
Em.Object.create({
isSelected: true,
isEmpty: false
})
]),
operatingSystems: Em.A([
Em.Object.create({
isSelected: true,
isEmpty: false,
repositories: Em.A([
Em.Object.create({
isEmpty: false,
errorTitle: '1',
errorContent: '1',
validation: '',
showRepo: true
})
])
})
])
})
]);
var wizard = Em.Object.create({
skipValidationChecked: true
});
it ('Should reload installed stacks', function() {
installerController.set('content.stacks', stacks);
installerController.checkRepoURL(wizard);
var expected = [
{
"isSelected": false
},
{
"isSelected": true,
"reload": true,
"id": "nn-cc",
"stackNameVersion": 'nn-cc',
"repositories": [
{
"isSelected": true,
"isEmpty": false
}
],
"operatingSystems": [
{
"isSelected": true,
"isEmpty": false,
"repositories": [
{
"isEmpty": false,
"errorTitle": "",
"errorContent": "",
"validation": "INPROGRESS",
"showRepo": true
}
]
}
]
}
];
var res = JSON.parse(JSON.stringify(installerController.get('content.stacks')));
expect(res).to.be.eql(expected);
});
});
describe('#checkRepoURLSuccessCallback', function() {
var stacks = Em.A([
Em.Object.create({
isSelected: false
}),
Em.Object.create({
isSelected: true,
reload: false,
id: 'nn-cc',
repositories: Em.A([
Em.Object.create({
repoId: 11,
isSelected: true,
isEmpty: false
})
]),
operatingSystems: Em.A([
Em.Object.create({
isSelected: true,
isEmpty: false,
id: 1,
repositories: Em.A([
Em.Object.create({
repoId: 11,
isEmpty: false,
errorTitle: '1',
errorContent: '1',
validation: '',
showRepo: true
})
])
})
])
})
]);
var resolve = false;
var data = {
osId: 1,
repoId: 11,
dfd: {
resolve: function() {
resolve = true;
}
}
};
it ('Should check stacks for success', function() {
installerController.set('content.stacks', stacks);
installerController.checkRepoURLSuccessCallback(null,null,data);
var expected = [
{
"isSelected": false
},
{
"isSelected": true,
"reload": false,
"id": "nn-cc",
"repositories": [
{
"repoId": 11,
"isSelected": true,
"isEmpty": false
}
],
"operatingSystems": [
{
"isSelected": true,
"isEmpty": false,
"id": 1,
"repositories": [
{
"repoId": 11,
"isEmpty": false,
"errorTitle": "1",
"errorContent": "1",
"validation": "OK",
"showRepo": true
}
]
}
]
}
];
var res = JSON.parse(JSON.stringify(installerController.get('content.stacks')));
expect(resolve).to.be.true;
expect(res).to.be.eql(expected);
});
});
describe('#checkRepoURLErrorCallback', function() {
var stacks = Em.A([
Em.Object.create({
isSelected: false
}),
Em.Object.create({
isSelected: true,
reload: false,
id: 'nn-cc',
repositories: Em.A([
Em.Object.create({
repoId: 11,
isSelected: true
})
]),
operatingSystems: Em.A([
Em.Object.create({
isSelected: true,
id: 1,
repositories: Em.A([
Em.Object.create({
repoId: 11,
errorTitle: '1',
errorContent: '1',
validation: ''
})
])
})
])
})
]);
var resolve = false;
var data = {
osId: 1,
repoId: 11,
dfd: {
reject: function() {
resolve = true;
}
}
};
it ('Should check stacks for error', function() {
var req = {
status: 500,
statusText: 'error'
};
installerController.set('content.stacks', stacks);
installerController.checkRepoURLErrorCallback(req,{},{},{},data);
var expected = [
{
"isSelected": false
},
{
"isSelected": true,
"reload": false,
"id": "nn-cc",
"repositories": [
{
"repoId": 11,
"isSelected": true
}
],
"operatingSystems": [
{
"isSelected": true,
"id": 1,
"repositories": [
{
"repoId": 11,
"errorTitle": "500:error",
"errorContent": "",
"validation": "INVALID"
}
]
}
]
}
];
var res = JSON.parse(JSON.stringify(installerController.get('content.stacks')));
expect(resolve).to.be.true;
expect(res).to.be.eql(expected);
});
});
describe('#setLowerStepsDisable', function() {
beforeEach(function () {
var steps = Em.A([
Em.Object.create({
step: 0,
value: false
}),
Em.Object.create({
step: 1,
value: false
}),
Em.Object.create({
step: 2,
value: false
}),
Em.Object.create({
step: 3,
value: false
}),
Em.Object.create({
step: 4,
value: false
})
]);
installerController.set('isStepDisabled', steps);
installerController.setLowerStepsDisable(3);
});
it ('Should disable lower steps', function() {
var expected = [
{
"step": 0,
"value": true
},
{
"step": 1,
"value": true
},
{
"step": 2,
"value": true
},
{
"step": 3,
"value": false
},
{
"step": 4,
"value": false
}
];
var res = JSON.parse(JSON.stringify(installerController.get('isStepDisabled')));
expect(res).to.eql(expected);
});
});
describe('#setStepsEnable', function() {
beforeEach(function () {
var steps = Em.A([
Em.Object.create({
step: 0,
value: false
}),
Em.Object.create({
step: 1,
value: false
}),
Em.Object.create({
step: 2,
value: false
}),
Em.Object.create({
step: 3,
value: false
}),
Em.Object.create({
step: 4,
value: false
})
]);
installerController.set('isStepDisabled', steps);
installerController.totalSteps = steps.length - 1;
installerController.set('currentStep',2);
});
it ('Should enable next steps', function() {
var expected = [
{
"step": 0,
"value": false
},
{
"step": 1,
"value": true
},
{
"step": 2,
"value": true
},
{
"step": 3,
"value": true
},
{
"step": 4,
"value": true
}
];
var res = JSON.parse(JSON.stringify(installerController.get('isStepDisabled')));
expect(res).to.eql(expected);
});
});
describe('#loadMap', function() {
describe('Should load cluster', function() {
var loadCluster = false;
var checker = {
load: function() {
loadCluster = true;
}
};
beforeEach(function () {
installerController.loadMap['0'][0].callback.call(checker);
});
it('cluster info is loaded', function () {
expect(loadCluster).to.be.true;
});
});
describe('Should load stacks', function() {
var loadStacks = false;
var checker = {
loadStacks: function() {
return {
done: function(callback) {
callback(true);
}
};
}
};
beforeEach(function () {
sinon.spy(checker, 'loadStacks');
installerController.loadMap['1'][0].callback.call(checker);
});
afterEach(function() {
checker.loadStacks.restore();
});
it('should call loadStacks, stack info not loaded', function () {
expect(checker.loadStacks.calledOnce).to.be.true;
});
});
describe('Should load stacks async', function() {
var checker = {
loadStacksVersions: Em.K
};
beforeEach(function () {
sinon.stub(checker, 'loadStacksVersions').returns({
done: Em.clb
});
});
afterEach(function() {
checker.loadStacksVersions.restore();
});
it('stack versions are loaded', function () {
installerController.loadMap['1'][1].callback.call(checker, true).then(function(data){
expect(data).to.be.true;
});
expect(checker.loadStacksVersions.called).to.be.false;
});
it('should call loadStacksVersions, stack versions not loaded', function () {
installerController.loadMap['1'][1].callback.call(checker, false).then(function(data){
expect(data).to.be.true;
});
expect(checker.loadStacksVersions.calledOnce).to.be.true;
});
});
describe('Should load installOptions', function() {
var installOptions = false;
var checker = {
load: function() {
installOptions = true;
}
};
beforeEach(function () {
installerController.loadMap['2'][0].callback.call(checker);
});
it('install option are loaded', function () {
expect(installOptions).to.be.true;
});
});
describe('Should load loadConfirmedHosts', function() {
var loadConfirmedHosts = false;
var checker = {
loadConfirmedHosts: function() {
loadConfirmedHosts = true;
}
};
beforeEach(function () {
installerController.loadMap['3'][0].callback.call(checker);
});
it('confirmed hosts are loaded', function () {
expect(loadConfirmedHosts).to.be.true;
});
});
describe('Should load loadServices', function() {
var loadServices = false;
var checker = {
loadServices: function() {
loadServices = true;
}
};
beforeEach(function () {
installerController.loadMap['4'][0].callback.call(checker);
});
it('services are loaded', function () {
expect(loadServices).to.be.true;
});
});
describe('Should load loadServices (2)', function() {
var setSkipSlavesStep = false;
var loadMasterComponentHosts = false;
var loadConfirmedHosts = false;
var loadComponentsFromConfigs = false;
var loadRecommendations = false;
var checker = {
setSkipSlavesStep: function() {
setSkipSlavesStep = true;
},
loadMasterComponentHosts: function() {
loadMasterComponentHosts = true;
},
loadConfirmedHosts: function() {
loadConfirmedHosts = true;
},
loadComponentsFromConfigs: function() {
loadComponentsFromConfigs = true;
},
loadRecommendations: function() {
loadRecommendations = true;
}
};
beforeEach(function () {
installerController.loadMap['5'][0].callback.call(checker);
});
it('confirmed hosts are loaded', function() {
expect(loadConfirmedHosts).to.be.true;
});
it('`skipSlavesStep` is loaded', function() {
expect(setSkipSlavesStep).to.be.true;
});
it('master components hosts are loaded', function() {
expect(loadMasterComponentHosts).to.be.true;
});
it('components added via configs are loaded', function () {
expect(loadComponentsFromConfigs).to.be.true;
});
it('recommendations are loaded', function() {
expect(loadRecommendations).to.be.true;
});
});
describe ('Should load serviceConfigGroups', function() {
var loadServiceConfigGroups = false;
var loadServiceConfigProperties = false;
var loadCurrentHostGroups = false;
var loadRecommendationsConfigs = false;
var loadComponentsFromConfigs = false;
var loadConfigThemes = false;
var checker = {
loadServiceConfigGroups: function() {
loadServiceConfigGroups = true;
},
loadServiceConfigProperties: function() {
loadServiceConfigProperties = true;
return $.Deferred().resolve().promise();
},
loadCurrentHostGroups: function() {
loadCurrentHostGroups = true;
},
loadRecommendationsConfigs: function() {
loadRecommendationsConfigs = true;
},
loadComponentsFromConfigs: function() {
loadComponentsFromConfigs = true;
},
loadConfigThemes: function() {
loadConfigThemes = true;
return $.Deferred().resolve().promise();
}
};
beforeEach(function () {
installerController.loadMap['7'][0].callback.call(checker);
});
it('config groups are loaded', function () {
expect(loadServiceConfigGroups).to.be.true;
});
it('config properties are loaded', function () {
expect(loadServiceConfigProperties).to.be.true;
});
it('current host groups are loaded', function () {
expect(loadCurrentHostGroups).to.be.true;
});
it('recommendations are loaded', function () {
expect(loadRecommendationsConfigs).to.be.true;
});
it('components added via configs are loaded', function () {
expect(loadComponentsFromConfigs).to.be.true;
});
it('config themes are loaded', function () {
expect(loadConfigThemes).to.be.true;
});
});
describe('Should load clients', function() {
var loadSlaveComponentHosts = false;
var loadClients = false;
var loadRecommendations = false;
var loadComponentsFromConfigs = false;
var checker = {
loadSlaveComponentHosts: function() {
loadSlaveComponentHosts = true;
},
loadClients: function() {
loadClients = true;
},
loadComponentsFromConfigs: function() {
loadComponentsFromConfigs = true;
},
loadRecommendations: function() {
loadRecommendations = true;
}
};
beforeEach(function () {
installerController.loadMap['6'][0].callback.call(checker);
});
it('slave components hosts are loaded', function () {
expect(loadSlaveComponentHosts).to.be.true;
});
it('clients are loaded', function () {
expect(loadClients).to.be.true;
});
it('components added via configs are loaded', function () {
expect(loadComponentsFromConfigs).to.be.true;
});
it('recommendations are loaded', function () {
expect(loadRecommendations).to.be.true;
});
});
});
describe('#removeHosts', function() {
var hostsDb = {
'h1': {},
'h2': {},
'h3': {},
'h4': {}
};
beforeEach(function () {
sinon.stub(installerController, 'getDBProperty').returns(hostsDb);
});
afterEach(function () {
installerController.getDBProperty.restore();
});
it ('Should remove hosts from the list', function() {
var hosts = Em.A([
{
name: 'h1'
},
{
name: 'h2'
},
{
name: 'h3'
}
]);
installerController.removeHosts(hosts);
expect(hostsDb).to.eql({
'h4': {}
});
});
});
describe('#allHosts', function() {
it ('Should return hosts', function() {
var hosts = {
'h1': {
hostComponents: Em.A([])
}
};
var masterComponentHosts = Em.A([
{
hostName: 'h1',
component: 'component',
display_name: 'n1'
}
]);
var slaveComponentHosts = Em.A([
{
hosts: Em.A([
{
hostName: 'h1'
}
])
}
]);
installerController.set('content.hosts', hosts);
installerController.set('content.masterComponentHosts', masterComponentHosts);
installerController.set('content.slaveComponentHosts', slaveComponentHosts);
var res = JSON.parse(JSON.stringify(installerController.get('allHosts')));
expect(res).to.eql([
{
"hostComponents": [
{
"componentName": "component",
"displayName": "n1"
},
{}
]
}
]);
});
});
describe('#saveServices', function() {
it ('Should return correct names', function() {
var stepController = Em.A([
Em.Object.create({
isInstalled: true,
isSelected: true,
serviceName: 'i1'
}),
Em.Object.create({
isInstalled: false,
isSelected: true,
serviceName: 'i2'
}),
Em.Object.create({
isInstalled: true,
isSelected: false,
serviceName: 'i3'
})
]);
installerController.saveServices(stepController);
expect(installerController.get('content.selectedServiceNames')).to.eql(['i1','i2']);
expect(installerController.get('content.installedServiceNames')).to.eql(['i1','i3']);
});
});
describe('#saveClients', function() {
var stepController;
beforeEach(function () {
stepController = Em.Object.create({
content: Em.A([
Em.Object.create({
isInstalled: true,
isSelected: true,
serviceName: 'i1',
serviceComponents: Em.A([
Em.Object.create({
isClient: true,
componentName: 'name',
displayName: 'dname'
})
])
}),
Em.Object.create({
isInstalled: false,
isSelected: true,
serviceName: 'i2',
serviceComponents: Em.A([
Em.Object.create({
isClient: false
})
])
}),
Em.Object.create({
isInstalled: true,
isSelected: false,
serviceName: 'i3',
serviceComponents: Em.A([
Em.Object.create({
isClient: false
})
])
})
])
});
});
it ('Should return correct clients names', function() {
installerController.saveClients(stepController);
var res = JSON.parse(JSON.stringify(installerController.get('content.clients')));
expect(res).to.eql([
{
"component_name": "name",
"display_name": "dname",
"isInstalled": false
}
]);
});
});
describe('#saveMasterComponentHosts', function() {
beforeEach(function () {
sinon.stub(installerController, 'getDBProperty').returns({
'h1': {
id: 11
},
'h3': {
id: 13
},
'h2': {
id: 12
}
});
});
afterEach(function () {
installerController.getDBProperty.restore();
});
it ('Should return hosts', function() {
var stepController = Em.Object.create({
selectedServicesMasters: Em.A([
Em.Object.create({
display_name: 'n1',
component_name: 'c1',
serviceId: 1,
selectedHost: 'h1'
})
])
});
installerController.saveMasterComponentHosts(stepController);
expect(installerController.get('content.masterComponentHosts')).to.eql([
{
"display_name": "n1",
"component": "c1",
"serviceId": 1,
"isInstalled": false,
"host_id": 11
}
]);
});
});
describe('#loadConfirmedHosts', function() {
beforeEach(function () {
sinon.stub(installerController, 'getDBProperty').returns({
'h1': {
id: 11
},
'h3': {
id: 13
},
'h2': {
id: 12
}
});
});
afterEach(function () {
installerController.getDBProperty.restore();
});
it ('Should load hosts from db', function() {
installerController.loadConfirmedHosts();
expect(installerController.get('content.hosts')).to.eql({
'h1': {
id: 11
},
'h3': {
id: 13
},
'h2': {
id: 12
}
});
});
});
describe('#loadMasterComponentHosts', function() {
beforeEach(function () {
sinon.stub(installerController, 'getDBProperties', function() {
return {
masterComponentHosts: Em.A([
{
hostName: '',
host_id: 11
}
]),
hosts: {
'h1': {
id: 11
},
'h3': {
id: 13
},
'h2': {
id: 12
}
}
}
});
});
afterEach(function () {
installerController.getDBProperties.restore();
});
it ('Should load hosts', function() {
installerController.loadMasterComponentHosts();
expect(installerController.get('content.masterComponentHosts')).to.eql([
{
"hostName": "h1",
"host_id": 11
}
]);
});
});
describe('#loadSlaveComponentHosts', function() {
beforeEach(function () {
sinon.stub(installerController, 'getDBProperties', function() {
return {
hosts: {
'h1': {
id: 11
},
'h3': {
id: 13
},
'h2': {
id: 12
}
},
slaveComponentHosts: Em.A([
{
hosts: Em.A([
{
hostName: '',
host_id: 11
}
])
}
])
};
});
});
afterEach(function () {
installerController.getDBProperties.restore();
});
it ('Should load slave hosts', function() {
installerController.loadSlaveComponentHosts();
expect(installerController.get('content.slaveComponentHosts')).to.eql([
{
"hosts": [
{
"hostName": "h1",
"host_id": 11
}
]
}
]);
});
});
describe('#getServerVersionSuccessCallback', function () {
var cases = [
{
osFamily: 'redhat5',
expected: false
},
{
osFamily: 'redhat6',
expected: true
},
{
osFamily: 'suse11',
expected: false
}
],
title = 'App.isManagedMySQLForHiveEnabled should be {0} for {1}';
cases.forEach(function (item) {
it(title.format(item.expected, item.osFamily), function () {
installerController.getServerVersionSuccessCallback({
'RootServiceComponents': {
'component_version': '',
'properties': {
'server.os_family': item.osFamily
}
}
});
expect(App.get('isManagedMySQLForHiveEnabled')).to.equal(item.expected);
});
});
});
describe('#validateJDKVersion', function() {
var tests = [
{
isCustomJDK: false,
ambariProperties: {
'java.version': '1.8'
},
successCallbackCalled: false,
popupCalled: true,
stacks: [Em.Object.create({
minJdkVersion: '1.6',
maxJdkVersion: '1.7',
isSelected: true
})],
m: 'JDK 1.8, stack supports 1.6-1.7 popup should be displayed'
},
{
isCustomJDK: false,
ambariProperties: {
'java.version': '1.8'
},
successCallbackCalled: true,
popupCalled: false,
stacks: [Em.Object.create({
minJdkVersion: '1.6',
maxJdkVersion: '1.8',
isSelected: true
})],
m: 'JDK 1.8, stack supports 1.7-1.8 procceed installation without warning'
},
{
isCustomJDK: false,
ambariProperties: {
'java.version': '1.5'
},
successCallbackCalled: false,
popupCalled: true,
stacks: [Em.Object.create({
minJdkVersion: '1.6',
maxJdkVersion: '1.8',
isSelected: true
})],
m: 'JDK 1.5, stack supports 1.6-1.8, popup should be displayed'
},
{
isCustomJDK: false,
ambariProperties: {
'java.version': '1.5'
},
successCallbackCalled: true,
popupCalled: false,
stacks: [Em.Object.create({
minJdkVersion: null,
maxJdkVersion: null,
isSelected: true
})],
m: 'JDK 1.5, stack supports max and min are null, procceed installation without warning'
},
{
isCustomJDK: false,
ambariProperties: {
'java.version': '1.5'
},
successCallbackCalled: true,
popupCalled: false,
stacks: [Em.Object.create({
minJdkVersion: '1.5',
maxJdkVersion: null,
isSelected: true
})],
m: 'JDK 1.5, stack supports max is missed and min is 1.5, procceed installation without warning'
},
{
isCustomJDK: false,
ambariProperties: {
'java.version': '1.6'
},
successCallbackCalled: false,
popupCalled: true,
stacks: [Em.Object.create({
minJdkVersion: '1.5',
maxJdkVersion: null,
isSelected: true
})],
m: 'JDK 1.6, stack supports max is missed and min is 1.5, popup should be displayed'
},
{
isCustomJDK: false,
ambariProperties: {
'java.version': '1.5'
},
successCallbackCalled: true,
popupCalled: false,
stacks: [Em.Object.create({
minJdkVersion: null,
maxJdkVersion: '1.5',
isSelected: true
})],
m: 'JDK 1.5, stack supports max 1.5 and min is missed, procceed installation without warning'
},
{
isCustomJDK: false,
ambariProperties: {
'java.version': '1.5'
},
successCallbackCalled: false,
popupCalled: true,
stacks: [Em.Object.create({
minJdkVersion: null,
maxJdkVersion: '1.8',
isSelected: true
})],
m: 'JDK 1.5, stack supports max 1.8 and min is missed, popup should be displayed'
},
{
isCustomJDK: false,
ambariProperties: {
'java.version': '1.8'
},
successCallbackCalled: true,
popupCalled: false,
stacks: [Em.Object.create({
isSelected: true
})],
m: 'JDK 1.8, min, max jdk missed in stack definition, procceed installation without warning'
},
{
isCustomJDK: true,
ambariProperties: {
'java.version': '1.8'
},
successCallbackCalled: true,
popupCalled: false,
stacks: [Em.Object.create({
minJdkVersion: '1.6',
maxJdkVersion: '1.8',
isSelected: true
})],
m: 'JDK 1.8, custom jdk location used, procceed installation without warning'
}
];
tests.forEach(function(test) {
describe(test.m, function() {
var successCallback;
beforeEach(function () {
sinon.stub(App.Stack, 'find').returns(test.stacks);
sinon.stub(App.router, 'get').withArgs('clusterController.isCustomJDK').returns(test.isCustomJDK)
.withArgs('clusterController.ambariProperties').returns(test.ambariProperties);
sinon.stub(App, 'showConfirmationPopup', Em.K);
successCallback = sinon.spy();
installerController.validateJDKVersion(successCallback);
});
afterEach(function () {
App.router.get.restore();
App.Stack.find.restore();
App.showConfirmationPopup.restore();
});
it('successCallback is ' + (test.successCallbackCalled ? '' : 'not') + ' called', function () {
expect(successCallback.called).to.be.equal(test.successCallbackCalled);
});
it('App.showConfirmationPopup. is ' + (test.popupCalled ? '' : 'not') + ' called', function () {
expect(App.showConfirmationPopup.called).to.be.equal(test.popupCalled);
});
});
});
});
describe('#postVersionDefinitionFileErrorCallback', function () {
beforeEach(function () {
sinon.stub(App, 'showAlertPopup', Em.K);
});
afterEach(function () {
App.showAlertPopup.restore();
});
it('should delete VDF-data', function () {
App.db.setLocalRepoVDFData({});
expect(App.db.getLocalRepoVDFData()).to.not.be.an.object;
installerController.postVersionDefinitionFileErrorCallback({}, {}, {}, {}, {dfd: $.Deferred()});
expect(App.db.getLocalRepoVDFData()).to.be.undefined;
});
});
describe('#finish', function() {
beforeEach(function() {
sinon.stub(installerController, 'setCurrentStep');
sinon.stub(installerController, 'clearStorageData');
sinon.stub(installerController, 'clearServiceConfigProperties');
sinon.stub(App.themesMapper, 'resetModels');
installerController.finish();
});
afterEach(function() {
installerController.setCurrentStep.restore();
installerController.clearStorageData.restore();
installerController.clearServiceConfigProperties.restore();
App.themesMapper.resetModels.restore();
});
it('setCurrentStep should be called', function() {
expect(installerController.setCurrentStep.calledWith('0')).to.be.true;
});
it('clearStorageData should be called', function() {
expect(installerController.clearStorageData.calledOnce).to.be.true;
});
it('clearServiceConfigProperties should be called', function() {
expect(installerController.clearServiceConfigProperties.calledOnce).to.be.true;
});
it('App.themesMapper.resetModels should be called', function() {
expect(App.themesMapper.resetModels.calledOnce).to.be.true;
});
});
});