You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ak...@apache.org on 2018/08/23 19:28:07 UTC
[ambari] branch trunk updated: AMBARI-24529. Add unit tests for
centralized configs logic (akovalenko)
This is an automated email from the ASF dual-hosted git repository.
akovalenko pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push:
new 7053df7 AMBARI-24529. Add unit tests for centralized configs logic (akovalenko)
7053df7 is described below
commit 7053df76887100e732f7ac4e1962bcad15d968c7
Author: Aleksandr Kovalenko <ak...@apache.org>
AuthorDate: Thu Aug 23 16:05:07 2018 +0300
AMBARI-24529. Add unit tests for centralized configs logic (akovalenko)
---
ambari-web/test/controllers/wizard/step7_test.js | 317 +++++++++++++++++++++++
1 file changed, 317 insertions(+)
diff --git a/ambari-web/test/controllers/wizard/step7_test.js b/ambari-web/test/controllers/wizard/step7_test.js
index f308002..044fa48 100644
--- a/ambari-web/test/controllers/wizard/step7_test.js
+++ b/ambari-web/test/controllers/wizard/step7_test.js
@@ -2105,6 +2105,323 @@ describe('App.InstallerStep7Controller', function () {
});
+ describe('#initTabs', function () {
+
+ beforeEach(function () {
+ sinon.stub(installerStep7Controller, 'setSkippedTabs', Em.K);
+ });
+
+ afterEach(function () {
+ installerStep7Controller.setSkippedTabs.restore();
+ });
+
+ it('should call setSkippedTabs', function () {
+ installerStep7Controller.initTabs();
+ expect(installerStep7Controller.setSkippedTabs.calledOnce).to.be.true;
+ });
+
+ });
+
+ describe('#setSkippedTabs', function () {
+
+ beforeEach(function () {
+ installerStep7Controller.reopen({
+ tabs: [
+ Em.Object.create({
+ name: 'credentials',
+ displayName: 'Credentials',
+ icon: 'glyphicon-lock',
+ isActive: false,
+ isDisabled: false,
+ isSkipped: false,
+ validateOnSwitch: false,
+ tabView: App.CredentialsTabOnStep7View
+ }),
+ Em.Object.create({
+ name: 'databases',
+ displayName: 'Databases',
+ icon: 'glyphicon-align-justify',
+ isActive: false,
+ isDisabled: false,
+ isSkipped: false,
+ validateOnSwitch: false,
+ tabView: App.DatabasesTabOnStep7View
+ }),
+ ],
+ });
+ installerStep7Controller.set('content.selectedServiceNames', Em.A(["HDFS", "YARN", "MAPREDUCE2", "TEZ", "ZOOKEEPER", "AMBARI_METRICS", "SMARTSENSE"]));
+ });
+
+ afterEach(function () {
+ App.Tab.find.restore();
+ });
+
+ it('set tab "credentials"\'s properties "isDisabled" and "isSkipped" to false', function () {
+ sinon.stub(App.Tab, 'find').returns([
+ Em.Object.create({themeName: 'credentials', serviceName: 'AMBARI_METRICS',}),
+ Em.Object.create({themeName: 'credentials', serviceName: 'SMARTSENSE',})
+ ]);
+ installerStep7Controller.setSkippedTabs();
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'credentials').get('isDisabled')).to.be.equal(false);
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'credentials').get('isSkipped')).to.be.equal(false);
+ });
+
+ it('set tab "credentials"\'s properties "isDisabled" and "isSkipped" to true', function () {
+ sinon.stub(App.Tab, 'find').returns([
+ Em.Object.create({themeName: 'credentials'}),
+ Em.Object.create({themeName: 'credentials'})
+ ]);
+ installerStep7Controller.setSkippedTabs();
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'credentials').get('isDisabled')).to.be.equal(true);
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'credentials').get('isSkipped')).to.be.equal(true);
+ });
+
+ it('set tab "databases"\'s properties "isDisabled" and "isSkipped" to false', function () {
+ sinon.stub(App.Tab, 'find').returns([
+ Em.Object.create({themeName: 'database', serviceName: 'AMBARI_METRICS'}),
+ Em.Object.create({themeName: 'database', serviceName: 'SMARTSENSE'})
+ ]);
+ installerStep7Controller.setSkippedTabs();
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'databases').get('isDisabled')).to.be.equal(false);
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'databases').get('isSkipped')).to.be.equal(false);
+ });
+
+ it('set tab "databases"\'s properties "isDisabled" and "isSkipped" to true', function () {
+ sinon.stub(App.Tab, 'find').returns([
+ Em.Object.create({themeName: 'database'}),
+ Em.Object.create({themeName: 'database'})
+ ]);
+ installerStep7Controller.setSkippedTabs();
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'databases').get('isDisabled')).to.be.equal(true);
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'databases').get('isSkipped')).to.be.equal(true);
+ })
+
+ });
+
+ describe('#currentTabIndex', function () {
+
+ it('get current Tabs Index return 0 because first tab is active', function () {
+ installerStep7Controller.reopen({
+ tabs: [
+ Em.Object.create({name: 'credentials', isActive: true}),
+ Em.Object.create({name: 'databases', isActive: false}),
+ ],
+ });
+ expect(installerStep7Controller.get('currentTabIndex')).to.be.equal(0);
+ });
+
+ it('get current Tabs Index return 1 because second tab is active', function () {
+ installerStep7Controller.reopen({
+ tabs: [
+ Em.Object.create({name: 'credentials', isActive: false}),
+ Em.Object.create({name: 'databases', isActive: true}),
+ ],
+ });
+ expect(installerStep7Controller.get('currentTabIndex')).to.be.equal(1);
+ });
+
+ it('get current Tab Index return -1', function () {
+ installerStep7Controller.reopen({
+ tabs: [
+ Em.Object.create({name: 'credentials', isActive: false}),
+ Em.Object.create({name: 'databases', isActive: false}),
+ ],
+ });
+ expect(installerStep7Controller.get('currentTabIndex')).to.be.equal(-1);
+ })
+
+ });
+
+ describe('#currentTabName', function () {
+
+ it('should return current tab name', function () {
+ installerStep7Controller.reopen({
+ tabs: [
+ Em.Object.create({name: 'credentials', isActive: true,}),
+ Em.Object.create({name: 'databases', isActive: false}),
+ ],
+ });
+ expect(installerStep7Controller.get('currentTabName')).to.be.equal('credentials');
+ });
+
+ it('should return current tab name', function () {
+ installerStep7Controller.reopen({
+ tabs: [
+ Em.Object.create({name: 'credentials', isActive: false,}),
+ Em.Object.create({name: 'databases', isActive: true}),
+ ],
+ });
+ expect(installerStep7Controller.get('currentTabName')).to.be.equal('databases');
+ });
+
+ });
+
+ describe('#selectTab', function () {
+
+ it('tab "isActive" property stay "false"', function () {
+ var event = {context: Ember.Object.create({isDisabled: true, isActive: false})};
+ installerStep7Controller.selectTab(event);
+ expect(event.context.get('isActive')).to.be.equal(false);
+ });
+
+ it('tab "isActive" property changed to "true"', function () {
+ var event = {
+ context: Ember.Object.create({isDisabled: false, isActive: false})
+ };
+ installerStep7Controller.selectTab(event);
+ expect(event.context.get('isActive')).to.be.equal(true);
+ });
+
+ });
+
+ describe('#isNextDisabled', function () {
+
+ it('if tabName is "credentials" return value based on credentialsTabNextEnabled', function () {
+ installerStep7Controller.reopen({tabs: [Em.Object.create({name: 'credentials', isActive: true})], credentialsTabNextEnabled: false});
+ expect(installerStep7Controller.get('isNextDisabled')).to.be.equal(true);
+ });
+
+ it('if tabName is "credentials" return value based on credentialsTabNextEnabled', function () {
+ installerStep7Controller.reopen({tabs: [Em.Object.create({name: 'credentials', isActive: true})], credentialsTabNextEnabled: true});
+ expect(installerStep7Controller.get('isNextDisabled')).to.be.equal(false);
+ });
+
+ it('if tabName is "databases" return value based on databasesTabNextEnabled', function () {
+ installerStep7Controller.reopen({tabs: [Em.Object.create({name: 'databases', isActive: true})], databasesTabNextEnabled: false});
+ expect(installerStep7Controller.get('isNextDisabled')).to.be.equal(true);
+ });
+
+ it('if tabName is "databases" return value based on databasesTabNextEnabled', function () {
+ installerStep7Controller.reopen({tabs: [Em.Object.create({name: 'databases', isActive: true})], databasesTabNextEnabled: true});
+ expect(installerStep7Controller.get('isNextDisabled')).to.be.equal(false);
+ });
+
+ it('if tabName is "all-configurations" return value based on isSubmitDisabled', function () {
+ installerStep7Controller.reopen({tabs: [Em.Object.create({name: 'all-configurations', isActive: true})], isSubmitDisabled: true});
+ expect(installerStep7Controller.get('isNextDisabled')).to.be.equal(true);
+ });
+
+ it('if tabName is "all-configurations" return value based on isSubmitDisabled', function () {
+ installerStep7Controller.reopen({tabs: [Em.Object.create({name: 'all-configurations', isActive: true})], isSubmitDisabled: false});
+ expect(installerStep7Controller.get('isNextDisabled')).to.be.equal(false);
+ });
+
+ it('if tabName is not "credentials", "databases", "all-configurations" return false', function () {
+ installerStep7Controller.reopen({tabs: [Em.Object.create({name: 'directories', isActive: true})]});
+ expect(installerStep7Controller.get('isNextDisabled')).to.be.equal(false);
+ });
+
+ });
+
+ describe('#disableTabs', function () {
+
+ beforeEach(function () {
+ installerStep7Controller.reopen({
+ tabs: [
+ Em.Object.create({
+ name: 'credentials',
+ isActive: false,
+ isDisabled: false,
+ isSkipped: true,
+ }),
+ Em.Object.create({
+ name: 'databases',
+ isActive: true,
+ isDisabled: false,
+ isSkipped: false,
+ }),
+ Em.Object.create({
+ name: 'all-configurations',
+ isActive: true,
+ isDisabled: false,
+ isSkipped: false,
+ }),
+ ],
+ });
+ });
+
+ it('set "isDisabled" properties to false in all tabs except with name "credentials"', function () {
+ installerStep7Controller.set('credentialsTabNextEnabled', false);
+ installerStep7Controller.disableTabs();
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'databases').get('isDisabled')).to.be.equal(true);
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'all-configurations').get('isDisabled')).to.be.equal(true);
+ });
+
+ it('don\'t set "isDisabled" properties to false in all tabs because of credentialsTabNextEnabled', function () {
+ installerStep7Controller.set('credentialsTabNextEnabled', true);
+ installerStep7Controller.disableTabs();
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'databases').get('isDisabled')).to.be.equal(false);
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'all-configurations').get('isDisabled')).to.be.equal(false);
+ });
+
+ it('don\'t set "isDisabled" properties to false in all tabs because of credentials "isDisabled" is true', function () {
+ installerStep7Controller.get('tabs').findProperty('name', 'credentials').set('isDisabled', true);
+ installerStep7Controller.set('credentialsTabNextEnabled', true);
+ installerStep7Controller.disableTabs();
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'databases').get('isDisabled')).to.be.equal(false);
+ expect(installerStep7Controller.get('tabs').findProperty('name', 'all-configurations').get('isDisabled')).to.be.equal(false);
+ });
+
+ });
+
+ describe('#showConfigProperty', function () {
+
+ it('set props "isActive" to true in entered showConfigProperty event and "false" in all another stepConfigs', function() {
+ var event = {context: Ember.Object.create({
+ serviceName: 'AMBARI_METRICS',
+ name: 'all-configurations',
+ isActive: false,
+ })};
+ installerStep7Controller.set('stepConfigs', Em.A([
+ Em.Object.create({serviceName: 'HDFS', isActive: true, configGroups: [{},{}]}),
+ Em.Object.create({serviceName: 'AMBARI_METRICS', isActive: false, configGroups: [{},{}]}),
+ Em.Object.create({serviceName: 'MAPREDUCE2', isActive: true, configGroups: [{},{}]}),
+ ]));
+ installerStep7Controller.set('filterColumns', [
+ {selected: true},
+ {selected: false},
+ {selected: true}
+ ]);
+ installerStep7Controller.showConfigProperty(event);
+ expect(installerStep7Controller.get('filterColumns').everyProperty('selected', false)).to.be.equal(true);
+ expect(installerStep7Controller.get('stepConfigs').findProperty('serviceName', 'HDFS').get('isActive')).to.be.equal(false);
+ expect(installerStep7Controller.get('stepConfigs').findProperty('serviceName', 'AMBARI_METRICS').get('isActive')).to.be.equal(true);
+ });
+
+ });
+
+ describe('#setIssues', function () {
+
+ beforeEach(function () {
+ sinon.stub(installerStep7Controller, 'ringBell', Em.K);
+ });
+
+ afterEach(function() {
+ installerStep7Controller.ringBell.restore();
+ });
+
+ it('should not ring bell if validations counter doesn\'t change', function() {
+ installerStep7Controller.set('validationsCounter', 3);
+ installerStep7Controller.set('stepConfigs', [
+ {configsWithErrors: {length: 1}},
+ {configsWithErrors: {length: 2}}
+ ]);
+ installerStep7Controller.setIssues();
+ expect(installerStep7Controller.ringBell.called).to.be.equal(false);
+ });
+
+ it('should ring bell if validations counter changes', function() {
+ installerStep7Controller.set('validationsCounter', 4);
+ installerStep7Controller.set('stepConfigs', [
+ {configsWithErrors: {length: 2}},
+ {configsWithErrors: {length: 3}}
+ ]);
+ installerStep7Controller.setIssues();
+ expect(installerStep7Controller.ringBell.called).to.be.equal(true);
+ });
+
+ });
+
App.TestAliases.testAsComputedEqual(installerStep7Controller, 'isInstallWizard', 'content.controllerName', 'installerController');
App.TestAliases.testAsComputedEqual(installerStep7Controller, 'isAddServiceWizard', 'content.controllerName', 'addServiceController');