You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by on...@apache.org on 2014/05/19 14:09:28 UTC
git commit: AMBARI-5805. Unit test for steps sub-views.
(onechiporenko)
Repository: ambari
Updated Branches:
refs/heads/trunk 109682544 -> 221ae2f23
AMBARI-5805. Unit test for steps sub-views. (onechiporenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/221ae2f2
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/221ae2f2
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/221ae2f2
Branch: refs/heads/trunk
Commit: 221ae2f2350e275521837ed76e2e5edb51e6b467
Parents: 1096825
Author: Oleg Nechiporenko <on...@apache.org>
Authored: Mon May 19 15:07:10 2014 +0300
Committer: Oleg Nechiporenko <on...@apache.org>
Committed: Mon May 19 15:07:10 2014 +0300
----------------------------------------------------------------------
ambari-web/app/assets/test/tests.js | 1 +
.../views/wizard/step3/hostLogPopupBody_view.js | 20 +-
.../wizard/step3/hostWarningPopupBody_view.js | 3 +-
.../views/wizard/step9/hostLogPopupBody_view.js | 2 +-
.../test/controllers/wizard/step8_test.js | 2 +-
.../wizard/step3/hostLogPopupBody_view_test.js | 18 ++
.../step3/hostWarningPopupBody_view_test.js | 199 +++++++++++++++++++
.../wizard/step9/hostLogPopupBody_view_test.js | 114 +++++++++++
8 files changed, 348 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/221ae2f2/ambari-web/app/assets/test/tests.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js
index d079252..ec8650e 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -157,6 +157,7 @@ require('test/views/main/charts/heatmap/heatmap_rack_test');
require('test/views/main/service/info/config_test');
require('test/views/common/configs/services_config_test');
require('test/views/wizard/step3/hostLogPopupBody_view_test');
+require('test/views/wizard/step3/hostWarningPopupBody_view_test');
require('test/views/wizard/step3/hostWarningPopupFooter_view_test');
require('test/views/wizard/step0_view_test');
require('test/views/wizard/step1_view_test');
http://git-wip-us.apache.org/repos/asf/ambari/blob/221ae2f2/ambari-web/app/views/wizard/step3/hostLogPopupBody_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/wizard/step3/hostLogPopupBody_view.js b/ambari-web/app/views/wizard/step3/hostLogPopupBody_view.js
index 0cca32d..c3e0bed 100644
--- a/ambari-web/app/views/wizard/step3/hostLogPopupBody_view.js
+++ b/ambari-web/app/views/wizard/step3/hostLogPopupBody_view.js
@@ -43,11 +43,12 @@ App.WizardStep3HostLogPopupBody = Em.View.extend({
textArea: Em.TextArea.extend({
didInsertElement: function () {
- var element = $(this.get('element'));
- element.width($(this.get('parentView').get('element')).width() - 10);
- element.height($(this.get('parentView').get('element')).height());
- element.select();
- element.css('resize', 'none');
+ /* istanbul ignore next: simple DOM manipulations */
+ $(this.get('element'))
+ .width($(this.get('parentView').get('element')).width() - 10)
+ .height($(this.get('parentView').get('element')).height())
+ .select()
+ .css('resize', 'none');
},
/**
@@ -73,15 +74,18 @@ App.WizardStep3HostLogPopupBody = Em.View.extend({
$(this).text(self.get('isTextArea') ? Em.I18n.t('installer.step3.hostLogPopup.highlight') : Em.I18n.t('installer.step3.hostLogPopup.copy'));
self.set('isTextArea', !self.get('isTextArea'));
});
- $(this.get('element')).find('.content-area').mouseenter(
+ /* istanbul ignore next: difficult to test */
+ $(this.get('element')).find('.content-area')
+ .mouseenter(
function () {
$(this).css('border', '1px solid #dcdcdc');
button.css('visibility', 'visible');
- }).mouseleave(
+ })
+ .mouseleave(
function () {
$(this).css('border', 'none');
button.css('visibility', 'hidden');
- })
+ });
}
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/221ae2f2/ambari-web/app/views/wizard/step3/hostWarningPopupBody_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/wizard/step3/hostWarningPopupBody_view.js b/ambari-web/app/views/wizard/step3/hostWarningPopupBody_view.js
index d28fcf4..9b42cfe 100644
--- a/ambari-web/app/views/wizard/step3/hostWarningPopupBody_view.js
+++ b/ambari-web/app/views/wizard/step3/hostWarningPopupBody_view.js
@@ -319,10 +319,11 @@ App.WizardStep3HostWarningPopupBody = Em.View.extend({
* Show popup with selected hostnames
* @param {object} hosts
* @method showHostsPopup
+ * @return {App.ModalPopup}
*/
showHostsPopup: function (hosts) {
$('.tooltip').hide();
- App.ModalPopup.show({
+ return App.ModalPopup.show({
header: Em.I18n.t('installer.step3.hostWarningsPopup.allHosts'),
bodyClass: Em.View.extend({
hosts: hosts.context,
http://git-wip-us.apache.org/repos/asf/ambari/blob/221ae2f2/ambari-web/app/views/wizard/step9/hostLogPopupBody_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/wizard/step9/hostLogPopupBody_view.js b/ambari-web/app/views/wizard/step9/hostLogPopupBody_view.js
index dd05b59..f0c0785 100644
--- a/ambari-web/app/views/wizard/step9/hostLogPopupBody_view.js
+++ b/ambari-web/app/views/wizard/step9/hostLogPopupBody_view.js
@@ -148,7 +148,7 @@ App.WizardStep9HostLogPopupBodyView = Em.View.extend({
} else if (taskInfo.get('status') == 'in_progress') {
taskInfo.set('icon', 'icon-cogs');
} else if (taskInfo.get('status') == 'completed') {
- taskInfo.set('icon', ' icon-ok');
+ taskInfo.set('icon', 'icon-ok');
} else if (taskInfo.get('status') == 'failed') {
taskInfo.set('icon', 'icon-exclamation-sign');
} else if (taskInfo.get('status') == 'aborted') {
http://git-wip-us.apache.org/repos/asf/ambari/blob/221ae2f2/ambari-web/test/controllers/wizard/step8_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/wizard/step8_test.js b/ambari-web/test/controllers/wizard/step8_test.js
index 057c69b..c2eea7a 100644
--- a/ambari-web/test/controllers/wizard/step8_test.js
+++ b/ambari-web/test/controllers/wizard/step8_test.js
@@ -518,7 +518,7 @@ describe('App.WizardStep8Controller', function () {
],
removed: Em.A(['hive_ambari_host', 'hive_ambari_database', 'hive_existing_oracle_host',
'hive_existing_oracle_database', 'hive_existing_mysql_host', 'hive_existing_mysql_database']),
- hive_database_type: 'postgresql',
+ hive_database_type: 'postgres',
m: 'hive_database: Existing PostgreSQL Database',
host: 'h1'
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/221ae2f2/ambari-web/test/views/wizard/step3/hostLogPopupBody_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/wizard/step3/hostLogPopupBody_view_test.js b/ambari-web/test/views/wizard/step3/hostLogPopupBody_view_test.js
index 934c3f8..2275a6c 100644
--- a/ambari-web/test/views/wizard/step3/hostLogPopupBody_view_test.js
+++ b/ambari-web/test/views/wizard/step3/hostLogPopupBody_view_test.js
@@ -29,6 +29,24 @@ describe('App.WizardStep3HostLogPopupBody', function() {
});
});
+ describe('#textArea', function() {
+
+ var v;
+
+ beforeEach(function() {
+ v = view.get('textArea').create();
+ });
+
+ describe('#value', function() {
+ it('should be equal to content', function() {
+ var c = 'Relax, you are doing fine';
+ v.set('content', c);
+ expect(v.get('value')).to.equal(c);
+ });
+ });
+
+ });
+
describe('#bootLog', function() {
it('should be equal to parentView.host.bootLog', function() {
var log = 'i wanna play a game';
http://git-wip-us.apache.org/repos/asf/ambari/blob/221ae2f2/ambari-web/test/views/wizard/step3/hostWarningPopupBody_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/wizard/step3/hostWarningPopupBody_view_test.js b/ambari-web/test/views/wizard/step3/hostWarningPopupBody_view_test.js
new file mode 100644
index 0000000..840ce97
--- /dev/null
+++ b/ambari-web/test/views/wizard/step3/hostWarningPopupBody_view_test.js
@@ -0,0 +1,199 @@
+/**
+ * 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 lazyloading = require('utils/lazy_loading');
+require('views/wizard/step3/hostWarningPopupBody_view');
+var view;
+
+describe('App.WizardStep3HostWarningPopupBody', function() {
+
+ beforeEach(function() {
+ view = App.WizardStep3HostWarningPopupBody.create({
+ didInsertElement: Em.K,
+ $: function() {
+ return Em.Object.create({
+ toggle: Em.K
+ })
+ }
+ });
+ });
+
+ describe('#onToggleBlock', function() {
+ it('should toggle', function() {
+ var context = Em.Object.create({isCollapsed: false});
+ view.onToggleBlock({context: context});
+ expect(context.get('isCollapsed')).to.equal(true);
+ view.onToggleBlock({context: context});
+ expect(context.get('isCollapsed')).to.equal(false);
+ });
+ });
+
+ describe('#showHostsPopup', function() {
+ it('should call App.ModalPopup.show', function() {
+ sinon.stub(App.ModalPopup, 'show', Em.K);
+ view.showHostsPopup({context: []});
+ expect(App.ModalPopup.show.calledOnce).to.equal(true);
+ App.ModalPopup.show.restore();
+ });
+ });
+
+ describe('#categoryWarnings', function() {
+ it('should return empty array', function() {
+ var warningsByHost = null;
+ view.reopen({warningsByHost: warningsByHost});
+ expect(view.get('categoryWarnings')).to.eql([]);
+ });
+ it('should return filtered warnings', function() {
+ var warningsByHost = [
+ {name: 'c', warnings: [{}, {}, {}]},
+ {name: 'd', warnings: [{}]}
+ ];
+ view.reopen({warningsByHost: warningsByHost, category: 'c'});
+ expect(view.get('categoryWarnings.length')).to.equal(3);
+ });
+ });
+
+ describe('#warningHostsNamesCount', function() {
+ it('should parse warnings', function() {
+ view.set('bodyController', Em.Object.create({
+ repoCategoryWarnings: [
+ {hostsNames: ['h1', 'h4']}
+ ],
+ diskCategoryWarnings: [
+ {hostsNames: ['h2', 'h5']}
+ ],
+ warningsByHost: [
+ {},
+ { name: 'h1', warnings: [{}, {}, {}] },
+ { name: 'h2', warnings: [{}, {}, {}] },
+ { name: 'h3', warnings: [] }
+ ]
+ }));
+ expect(view.warningHostsNamesCount()).to.equal(4);
+ });
+ });
+
+ describe('#hostSelectView', function() {
+
+ var v;
+
+ beforeEach(function() {
+ v = view.get('hostSelectView').create();
+ });
+
+ describe('#click', function() {
+ Em.A([
+ {
+ isLoaded: false,
+ isLazyLoading: true,
+ e: true
+ },
+ {
+ isLoaded: true,
+ isLazyLoading: true,
+ e: false
+ },
+ {
+ isLoaded: false,
+ isLazyLoading: false,
+ e: false
+ },
+ {
+ isLoaded: true,
+ isLazyLoading: false,
+ e: false
+ }
+ ]).forEach(function (test) {
+ it('isLoaded: ' + test.isLoaded.toString() + ', isLazyLoading: ' + test.isLazyLoading.toString(), function () {
+ v.reopen({
+ isLoaded: test.isLoaded,
+ isLazyLoading: test.isLazyLoading
+ });
+ sinon.spy(lazyloading, 'run');
+ v.click();
+ if (test.e) {
+ expect(lazyloading.run.calledOnce).to.equal(true);
+ }
+ else {
+ expect(lazyloading.run.called).to.equal(false);
+ }
+ lazyloading.run.restore();
+ });
+ });
+ });
+
+ });
+
+ describe('#contentInDetails', function() {
+ var content = [
+ {category: 'firewall', warnings: [{name: 'n1'}, {name: 'n2'}, {name: 'n3'}]},
+ {category: 'fileFolders', warnings: [{name: 'n4'}, {name: 'n5'}, {name: 'n6'}]},
+ {
+ category: 'process',
+ warnings: [
+ {name: 'n7', hosts:['h1', 'h2'], user: 'u1', pid: 'pid1'},
+ {name: 'n8', hosts:['h2'], user: 'u2', pid: 'pid2'},
+ {name: 'n9', hosts:['h3'], user: 'u1', pid: 'pid3'}
+ ]
+ },
+ {category: 'package', warnings: [{name: 'n10'}, {name: 'n11'}, {name: 'n12'}]},
+ {category: 'service', warnings: [{name: 'n13'}, {name: 'n14'}, {name: 'n15'}]},
+ {category: 'user', warnings: [{name: 'n16'}, {name: 'n17'}, {name: 'n18'}]}
+ ], warningsByHost = [
+ {},
+ {name: 'c', warnings: [{}, {}, {}]},
+ {name: 'd', warnings: [{}]}
+ ];
+ beforeEach(function() {
+ view.reopen({content: content, warningsByHost: warningsByHost});
+ });
+ it('should map hosts', function() {
+ var newContent = view.get('contentInDetails');
+ expect(newContent.contains('c d')).to.equal(true);
+ });
+ it('should map firewall warnings', function() {
+ var newContent = view.get('contentInDetails');
+ expect(newContent.contains('n1<br>n2<br>n3')).to.equal(true);
+ });
+ it('should map fileFolders warnings', function() {
+ var newContent = view.get('contentInDetails');
+ expect(newContent.contains('n4 n5 n6')).to.equal(true);
+ });
+ it('should map process warnings', function() {
+ var newContent = view.get('contentInDetails');
+ expect(newContent.contains('(h1,u1,pid1)')).to.equal(true);
+ expect(newContent.contains('(h2,u1,pid1)')).to.equal(true);
+ expect(newContent.contains('(h2,u2,pid2)')).to.equal(true);
+ expect(newContent.contains('(h3,u1,pid3)')).to.equal(true);
+ });
+ it('should map package warnings', function() {
+ var newContent = view.get('contentInDetails');
+ expect(newContent.contains('n10 n11 n12')).to.equal(true);
+ });
+ it('should map service warnings', function() {
+ var newContent = view.get('contentInDetails');
+ expect(newContent.contains('n13 n14 n15')).to.equal(true);
+ });
+ it('should map user warnings', function() {
+ var newContent = view.get('contentInDetails');
+ expect(newContent.contains('n16 n17 n18')).to.equal(true);
+ });
+ });
+
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/221ae2f2/ambari-web/test/views/wizard/step9/hostLogPopupBody_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/wizard/step9/hostLogPopupBody_view_test.js b/ambari-web/test/views/wizard/step9/hostLogPopupBody_view_test.js
index 918d3d9..530727c 100644
--- a/ambari-web/test/views/wizard/step9/hostLogPopupBody_view_test.js
+++ b/ambari-web/test/views/wizard/step9/hostLogPopupBody_view_test.js
@@ -142,4 +142,118 @@ describe('App.WizardStep9HostLogPopupBodyView', function() {
});
});
+ describe('#tasks', function() {
+ var testTask = {
+ Tasks: {
+ status: 'init',
+ id: 1,
+ request_id: 2,
+ role: 'PIG',
+ stderr: 'stderr',
+ stdout: 'stdout',
+ host_name: 'host1',
+ command: 'Cmd'
+ }
+ };
+
+ it('should map tasks', function() {
+ view.set('parentView.host.logTasks', [testTask]);
+ var t = view.get('tasks');
+ expect(t.length).to.equal(1);
+ var first = t[0];
+ expect(first.get('id')).to.equal(1);
+ expect(first.get('requestId')).to.equal(2);
+ expect(first.get('command')).to.equal('cmd');
+ expect(first.get('role')).to.equal('Pig');
+ expect(first.get('stderr')).to.equal('stderr');
+ expect(first.get('stdout')).to.equal('stdout');
+ expect(first.get('isVisible')).to.equal(true);
+ expect(first.get('hostName')).to.equal('host1');
+ });
+
+ it('should set cog icon', function() {
+ var t = Em.copy(testTask);
+ t.Tasks.status = 'pending';
+ view.set('parentView.host.logTasks', [t]);
+ var first = view.get('tasks')[0];
+ expect(first.get('icon')).to.equal('icon-cog');
+ });
+
+ it('should set cog icon (2)', function() {
+ var t = Em.copy(testTask);
+ t.Tasks.status = 'queued';
+ view.set('parentView.host.logTasks', [t]);
+ var first = view.get('tasks')[0];
+ expect(first.get('icon')).to.equal('icon-cog');
+ });
+
+ it('should set cogs icon', function() {
+ var t = Em.copy(testTask);
+ t.Tasks.status = 'in_progress';
+ view.set('parentView.host.logTasks', [t]);
+ var first = view.get('tasks')[0];
+ expect(first.get('icon')).to.equal('icon-cogs');
+ });
+
+ it('should set ok icon', function() {
+ var t = Em.copy(testTask);
+ t.Tasks.status = 'completed';
+ view.set('parentView.host.logTasks', [t]);
+ var first = view.get('tasks')[0];
+ expect(first.get('icon')).to.equal('icon-ok');
+ });
+
+ it('should set icon-exclamation-sign icon', function() {
+ var t = Em.copy(testTask);
+ t.Tasks.status = 'failed';
+ view.set('parentView.host.logTasks', [t]);
+ var first = view.get('tasks')[0];
+ expect(first.get('icon')).to.equal('icon-exclamation-sign');
+ });
+
+ it('should set minus icon', function() {
+ var t = Em.copy(testTask);
+ t.Tasks.status = 'aborted';
+ view.set('parentView.host.logTasks', [t]);
+ var first = view.get('tasks')[0];
+ expect(first.get('icon')).to.equal('icon-minus');
+ });
+
+ it('should set time icon', function() {
+ var t = Em.copy(testTask);
+ t.Tasks.status = 'timedout';
+ view.set('parentView.host.logTasks', [t]);
+ var first = view.get('tasks')[0];
+ expect(first.get('icon')).to.equal('icon-time');
+ });
+
+ });
+
+ describe('#toggleTaskLog', function() {
+ it('isLogWrapHidden is true', function() {
+ var taskInfo = {
+ id: 1,
+ requestId: 2
+ };
+ view.set('isLogWrapHidden', true);
+ view.set('parentView.c', Em.Object.create({loadCurrentTaskLog: Em.K}));
+ sinon.spy(view.get('parentView.c'), 'loadCurrentTaskLog');
+ view.toggleTaskLog({context: taskInfo});
+ expect(view.get('isLogWrapHidden')).to.equal(false);
+ expect(view.get('parentView.c.currentOpenTaskId')).to.equal(taskInfo.id);
+ expect(view.get('parentView.c.currentOpenTaskRequestId')).to.equal(taskInfo.requestId);
+ expect(view.get('parentView.c').loadCurrentTaskLog.calledOnce).to.equal(true);
+ view.get('parentView.c').loadCurrentTaskLog.restore();
+ });
+ it('isLogWrapHidden is false', function() {
+ var taskInfo = {};
+ view.set('isLogWrapHidden', false);
+ view.set('parentView.c', Em.Object.create({loadCurrentTaskLog: Em.K}));
+ view.toggleTaskLog({context: taskInfo});
+ expect(view.get('isLogWrapHidden')).to.equal(true);
+ expect(view.get('parentView.c.currentOpenTaskId')).to.equal(0);
+ expect(view.get('parentView.c.currentOpenTaskRequestId')).to.equal(0);
+ });
+ });
+
});
\ No newline at end of file