blob: 88cb23133d90d154fb6c46031e72529e7c659915 [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');
var wizardStep1Controller;
var stacks = [
App.Stack.createRecord({
"id": "HDP-2.4",
"stackName": "HDP",
"stackVersion": "2.4"
}),
App.Stack.createRecord({
"id": "HDP-2.5-2.5.0.0",
"stackName": "HDP",
"stackVersion": "2.5"
}),
App.Stack.createRecord({
"id": "HDP-2.5",
"stackName": "HDP",
"stackVersion": "2.5"
}),
App.Stack.createRecord({
"id": "HDP-2.3.ECS",
"stackName": "HDP",
"stackVersion": "2.3.ECS"
}),
App.Stack.createRecord({
"id": "HDP-2.3",
"stackName": "HDP",
"stackVersion": "2.3"
}),
App.Stack.createRecord({
"id": "HDP-2.2",
"stackName": "HDP",
"stackVersion": "2.2"
}),
App.Stack.createRecord({
"id": "HDP-2.4-2.4.1.1-12345",
"stackName": "HDP",
"stackVersion": "2.4"
})
];
function getController() {
return App.WizardStep1Controller.create({content: Em.Object.create({stacks: stacks}), onNetworkIssuesExist: Em.K});
}
describe('App.WizardStep1Controller', function () {
beforeEach(function() {
wizardStep1Controller = getController();
});
App.TestAliases.testAsComputedFindBy(getController(), 'selectedStack', 'content.stacks', 'isSelected', true);
App.TestAliases.testAsComputedFindBy(getController(), 'selectedStackType', 'availableStackTypes', 'isSelected', true);
App.TestAliases.testAsComputedFilterBy(getController(), 'servicesForSelectedStack', 'selectedStack.stackServices', 'isHidden', false);
App.TestAliases.testAsComputedEveryBy(getController(), 'networkIssuesExist', 'content.stacks', 'stackDefault', true);
App.TestAliases.testAsComputedEqual(getController(), 'isLoadingComplete', 'wizardController.loadStacksRequestsCounter', 0);
describe('#usePublicRepo', function () {
beforeEach(function () {
wizardStep1Controller.get('content.stacks').findProperty('id', 'HDP-2.5-2.5.0.0').setProperties({
isSelected: true,
useRedhatSatellite: true,
usePublicRepo: false,
useLocalRepo: true,
});
wizardStep1Controller.usePublicRepo();
});
it('correct stack is selected', function () {
expect(wizardStep1Controller.get('selectedStack.id')).to.be.equal('HDP-2.5-2.5.0.0');
});
it('`useRedhatSatellite` is set `false`', function () {
expect(wizardStep1Controller.get('selectedStack.useRedhatSatellite')).to.be.false;
});
it('`usePublicRepo` is set `true`', function () {
expect(wizardStep1Controller.get('selectedStack.usePublicRepo')).to.be.true;
});
it('`useLocalRepo` is set `false`', function () {
expect(wizardStep1Controller.get('selectedStack.useLocalRepo')).to.be.false;
});
});
describe('#useLocalRepo', function () {
beforeEach(function () {
wizardStep1Controller.get('content.stacks').findProperty('id', 'HDP-2.5-2.5.0.0').setProperties({
isSelected: true,
usePublicRepo: true,
useLocalRepo: false,
});
wizardStep1Controller.useLocalRepo();
});
it('correct stack is selected', function () {
expect(wizardStep1Controller.get('selectedStack.id')).to.be.equal('HDP-2.5-2.5.0.0');
});
it('`usePublicRepo` is set `false`', function () {
expect(wizardStep1Controller.get('selectedStack.usePublicRepo')).to.be.false;
});
it('`useLocalRepo` is set `true`', function () {
expect(wizardStep1Controller.get('selectedStack.useLocalRepo')).to.be.true;
});
});
describe('#selectStackBy', function () {
it('select by `id`', function () {
wizardStep1Controller.selectStackBy('id', 'HDP-2.5-2.5.0.0');
expect(wizardStep1Controller.get('selectedStack.id')).to.be.equal('HDP-2.5-2.5.0.0');
expect(wizardStep1Controller.get('content.stacks').filterProperty('isSelected')).to.have.property('length').equal(1);
});
it('select by `stackNameVersion`', function () {
wizardStep1Controller.selectStackBy('stackNameVersion', 'HDP-2.5');
expect(wizardStep1Controller.get('selectedStack.id')).to.be.equal('HDP-2.5-2.5.0.0'); // `HDP-2.5-2.5.0.0`-id is before `HDP-2.5`-id
expect(wizardStep1Controller.get('content.stacks').filterProperty('isSelected')).to.have.property('length').equal(1);
});
});
describe('#availableStackTypes', function () {
it('stack types are sorted desc', function () {
expect(wizardStep1Controller.get('availableStackTypes').mapProperty('stackName')).to.be.eql(['HDP-2.5', 'HDP-2.4', 'HDP-2.3.ECS', 'HDP-2.3', 'HDP-2.2']);
});
});
describe('#readInfoIsNotProvided', function () {
Em.A([
{
options: {
uploadFile: {isSelected: false},
enterUrl: {isSelected: false}
},
m: 'url and file are not selected',
e: false
},
{
options: {
uploadFile: {isSelected: false},
enterUrl: {isSelected: true, url: ''}
},
m: 'url is selected but not provided',
e: true
},
{
options: {
uploadFile: {isSelected: false},
enterUrl: {isSelected: true, url: ' url'}
},
m: 'url is selected and provided',
e: false
},
{
options: {
uploadFile: {isSelected: true, file: ''},
enterUrl: {isSelected: false}
},
m: 'file is selected but not provided',
e: true
},
{
options: {
uploadFile: {isSelected: true, file: 'path'},
enterUrl: {isSelected: false}
},
m: 'file is selected and provided',
e: false
}
]).forEach(function (test) {
it(test.m, function () {
wizardStep1Controller.set('optionsToSelect.useLocalRepo', test.options);
expect(wizardStep1Controller.get('readInfoIsNotProvided')).to.be.equal(test.e);
});
});
});
describe('#uploadVdf', function () {
function getModal() {
var controller = getController();
controller.set('optionsToSelect', Em.Object.create({
useLocalRepo: {
enterUrl: {isSelected: true, url: 'apache.org'},
uploadFile: {isSelected: false, file: 'some_file'}
}
}));
return controller.uploadVdf();
}
beforeEach(function () {
this.modal = getModal();
});
describe('#restoreUploadOptions', function () {
beforeEach(function () {
wizardStep1Controller.set('optionsToSelect.useLocalRepo', {
enterUrl: {isSelected: true, url: 'apache.org'},
uploadFile: {isSelected: false, file: 'some_file'}
});
this.modal.restoreUploadOptions();
});
it('`enterUrl.isSelected`', function () {
expect(this.modal.get('controller.optionsToSelect.useLocalRepo.enterUrl.isSelected')).to.be.false;
});
it('`enterUrl.url`', function () {
expect(this.modal.get('controller.optionsToSelect.useLocalRepo.enterUrl.url')).to.be.equal('');
});
it('`uploadFile.isSelected`', function () {
expect(this.modal.get('controller.optionsToSelect.useLocalRepo.uploadFile.isSelected')).to.be.true;
});
it('`uploadFile.file`', function () {
expect(this.modal.get('controller.optionsToSelect.useLocalRepo.uploadFile.file')).to.be.equal('');
});
});
describe('#bodyClass', function () {
beforeEach(function () {
this.body = this.modal.get('bodyClass').create();
});
describe('#uploadFileView', function () {
beforeEach(function() {
this.fileView = this.body.get('uploadFileView').create();
});
describe('#click', function () {
beforeEach(function () {
this.fileView.set('controller', getController());
this.fileView.set('controller.optionsToSelect', {
useLocalRepo: {
enterUrl: {isSelected: true, hasError: true},
uploadFile: {isSelected: false, hasError: true}
}
});
this.fileView.click();
});
it('`enterUrl.isSelected`', function () {
expect(this.fileView.get('controller.optionsToSelect.useLocalRepo.enterUrl.isSelected')).to.be.false;
});
it('`enterUrl.hasError`', function () {
expect(this.fileView.get('controller.optionsToSelect.useLocalRepo.enterUrl.hasError')).to.be.false;
});
it('`uploadFile.isSelected`', function () {
expect(this.fileView.get('controller.optionsToSelect.useLocalRepo.uploadFile.isSelected')).to.be.true;
});
it('`uploadFile.hasError`', function () {
expect(this.fileView.get('controller.optionsToSelect.useLocalRepo.uploadFile.hasError')).to.be.false;
});
});
});
describe('#enterUrlView', function () {
beforeEach(function() {
this.fileView = this.body.get('enterUrlView').create();
});
describe('#click', function () {
beforeEach(function () {
this.fileView.set('controller', getController());
this.fileView.set('controller.optionsToSelect', {
useLocalRepo: {
enterUrl: {isSelected: false, hasError: true},
uploadFile: {isSelected: false, hasError: true}
}
});
this.fileView.click();
});
it('`enterUrl.isSelected`', function () {
expect(this.fileView.get('controller.optionsToSelect.useLocalRepo.enterUrl.isSelected')).to.be.true;
});
it('`enterUrl.hasError`', function () {
expect(this.fileView.get('controller.optionsToSelect.useLocalRepo.enterUrl.hasError')).to.be.false;
});
it('`uploadFile.isSelected`', function () {
expect(this.fileView.get('controller.optionsToSelect.useLocalRepo.uploadFile.isSelected')).to.be.false;
});
it('`uploadFile.hasError`', function () {
expect(this.fileView.get('controller.optionsToSelect.useLocalRepo.uploadFile.hasError')).to.be.false;
});
});
});
});
})
describe('#removeOS', function() {
beforeEach(function () {
wizardStep1Controller.set('selectedStack', {useRedhatSatellite: null});
});
[
{
useRedhatSatellite: false,
e: false,
},
{
useRedhatSatellite: true,
e: true
}
].forEach(function (test) {
it('useRedhatSatellite is ' + JSON.stringify(test.useRedhatSatellite), function () {
wizardStep1Controller.set('selectedStack.useRedhatSatellite', test.useRedhatSatellite);
var os = {isSelected: true};
wizardStep1Controller.removeOS({context: os})
expect(Ember.get(os, 'isSelected')).to.be.equal(test.e);
});
});
});
describe('#addOS', function() {
it('should set `isSelected` to true', function () {
var os = {isSelected: false};
wizardStep1Controller.addOS({context: os})
expect(Ember.get(os, 'isSelected')).to.be.true;
});
});
describe('#onNetworkIssuesExist', function () {
beforeEach(function () {
this.controller = App.WizardStep1Controller.create({content: Em.Object.create({stacks: stacks})});
this.controller.get('content.stacks').setEach('usePublicRepo', true);
this.controller.get('content.stacks').setEach('useLocalRepo', false);
this.controller.reopen({networkIssuesExist: true});
this.controller.onNetworkIssuesExist();
});
it('each stack has `usePublicRepo` false', function() {
expect(this.controller.get('content.stacks').everyProperty('usePublicRepo', false)).to.be.true;
});
it('each stack has `useLocalRepo` true', function() {
expect(this.controller.get('content.stacks').everyProperty('useLocalRepo', true)).to.be.true;
});
});
});