This is an automated email from the ASF dual-hosted git repository.
ababiichuk 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 3ad2ab8 AMBARI-25112 Cover errors utils with unit tests. (ababiichuk)
3ad2ab8 is described below
commit 3ad2ab8fb49e4f330fa4b4a2e23c8c68de27f161
Author: aBabiichuk <[email protected]>
AuthorDate: Tue Jan 22 18:38:40 2019 +0200
AMBARI-25112 Cover errors utils with unit tests. (ababiichuk)
---
ambari-web/app/assets/test/tests.js | 2 +
ambari-web/test/utils/errors/assertions_test.js | 654 +++++++++++++++++++++++
ambari-web/test/utils/errors/definitions_test.js | 127 +++++
3 files changed, 783 insertions(+)
diff --git a/ambari-web/app/assets/test/tests.js
b/ambari-web/app/assets/test/tests.js
index 68ce6c1..e1808da 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -233,6 +233,8 @@ var files = [
'test/utils/db_test',
'test/utils/ember_computed_test',
'test/utils/ember_reopen_test',
+ 'test/utils/errors/assertions_test',
+ 'test/utils/errors/definitions_test',
'test/utils/form_field_test',
'test/utils/file_utils_test',
'test/utils/handlebars_helpers_test',
diff --git a/ambari-web/test/utils/errors/assertions_test.js
b/ambari-web/test/utils/errors/assertions_test.js
new file mode 100644
index 0000000..276deba
--- /dev/null
+++ b/ambari-web/test/utils/errors/assertions_test.js
@@ -0,0 +1,654 @@
+/**
+ * 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('utils/errors/assertions');
+
+describe('Error assertions', function () {
+ describe('#App.assert', function () {
+ var errorCases = [
+ {
+ args: [null, false],
+ errorType: Error,
+ desc: '',
+ title: 'default error object, no description'
+ },
+ {
+ args: ['desc0', false],
+ errorType: Error,
+ desc: ' Info: desc0',
+ title: 'default error object, custom description'
+ },
+ {
+ args: [null, false, TypeError],
+ errorType: TypeError,
+ desc: '',
+ title: 'custom error object, no description'
+ },
+ {
+ args: ['desc1', false, TypeError],
+ errorType: TypeError,
+ desc: ' Info: desc1',
+ title: 'custom error object, custom description'
+ }
+ ];
+ errorCases.forEach(function (test) {
+ it(test.title, function () {
+ var testFunction = function () {
+ App.assert.apply(null, test.args);
+ };
+ expect(testFunction).to.throw(test.errorType, test.desc);
+ });
+ });
+ it('no error', function () {
+ expect(App.assert.bind(null, 'desc2', true)).to.not.throw();
+ });
+ });
+
+ describe('#App.assertExists', function () {
+ var errorCases = [
+ {
+ value: null,
+ desc: 'desc0',
+ title: 'null'
+ },
+ {
+ value: undefined,
+ desc: 'desc1',
+ title: 'undefined'
+ }
+ ],
+ noErrorCases = [
+ {
+ value: [],
+ title: 'empty array'
+ },
+ {
+ value: [0],
+ title: 'non-empty array'
+ },
+ {
+ value: {},
+ title: 'empty object'
+ },
+ {
+ value: {
+ a: ''
+ },
+ title: 'non-empty object'
+ },
+ {
+ value: Em.Object.create(),
+ title: 'empty Ember object'
+ },
+ {
+ value: Em.Object.create({
+ a: ''
+ }),
+ title: 'non-empty Ember object'
+ },
+ {
+ value: 0,
+ title: '0'
+ },
+ {
+ value: 1,
+ title: 'non-zero number'
+ },
+ {
+ value: NaN,
+ title: 'NaN'
+ },
+ {
+ value: Infinity,
+ title: 'Infinity'
+ },
+ {
+ value: false,
+ title: 'false'
+ },
+ {
+ value: true,
+ title: 'true'
+ },
+ {
+ value: '',
+ title: 'empty string'
+ },
+ {
+ value: '0',
+ title: 'non-empty string'
+ },
+ {
+ value: ' ',
+ title: 'spaces-only string'
+ },
+ {
+ value: new Number(0),
+ title: 'number object'
+ },
+ {
+ value: new String(''),
+ title: 'string object'
+ },
+ {
+ value: new Boolean(false),
+ title: 'boolean object'
+ },
+ {
+ value: new Number(1),
+ title: 'object of non-zero number'
+ },
+ {
+ value: new String('a'),
+ title: 'object of non-empty string'
+ },
+ {
+ value: new Boolean(true),
+ title: 'object of true boolean'
+ }
+ ];
+ errorCases.forEach(function (test) {
+ it(test.title, function () {
+ expect(App.assertExists.bind(null, test.value,
test.desc)).to.throw(App.NotNullTypeError, test.desc);
+ });
+ });
+ noErrorCases.forEach(function (test) {
+ it(test.title, function () {
+ expect(App.assertExists.bind(null, test.value, 'desc')).to.not.throw();
+ });
+ });
+ });
+
+ describe('#App.assertObject', function () {
+ var errorCases = [
+ {
+ value: null,
+ desc: 'desc0',
+ title: 'null'
+ },
+ {
+ value: undefined,
+ desc: 'desc1',
+ title: 'undefined'
+ },
+ {
+ value: 1,
+ desc: 'desc2',
+ title: 'number'
+ },
+ {
+ value: NaN,
+ desc: 'desc3',
+ title: 'NaN'
+ },
+ {
+ value: Infinity,
+ desc: 'desc4',
+ title: 'Infinity'
+ },
+ {
+ value: true,
+ desc: 'desc5',
+ title: 'boolean'
+ },
+ {
+ value: 'a',
+ desc: 'desc6',
+ title: 'string'
+ },
+ {
+ value: function () {
+ },
+ desc: 'desc7',
+ title: 'function'
+ }
+ ],
+ noErrorCases = [
+ {
+ value: [],
+ title: 'array'
+ },
+ {
+ value: {},
+ title: 'object'
+ },
+ {
+ value: new Date(),
+ title: 'date'
+ },
+ {
+ value: new RegExp(),
+ title: 'regexp'
+ },
+ {
+ value: Em.Object.create(),
+ title: 'Ember object'
+ },
+ {
+ value: Em.View.create(),
+ title: 'extended Ember object'
+ },
+ {
+ value: new Error(),
+ title: 'error object'
+ },
+ {
+ value: new Number(1),
+ title: 'number object'
+ },
+ {
+ value: new String('a'),
+ title: 'string object'
+ },
+ {
+ value: new Boolean(true),
+ title: 'boolean object'
+ }
+ ];
+ errorCases.forEach(function (test) {
+ it(test.title, function () {
+ expect(App.assertObject.bind(null, test.value,
test.desc)).to.throw(App.ObjectTypeError, test.desc);
+ });
+ });
+ noErrorCases.forEach(function (test) {
+ it(test.title, function () {
+ expect(App.assertObject.bind(null, test.value, 'desc')).to.not.throw();
+ });
+ });
+ });
+
+ describe('#App.assertEmberObject', function () {
+ var errorCases = [
+ {
+ value: null,
+ desc: 'desc0',
+ title: 'null'
+ },
+ {
+ value: undefined,
+ desc: 'desc1',
+ title: 'undefined'
+ },
+ {
+ value: 1,
+ desc: 'desc2',
+ title: 'number'
+ },
+ {
+ value: NaN,
+ desc: 'desc3',
+ title: 'NaN'
+ },
+ {
+ value: Infinity,
+ desc: 'desc4',
+ title: 'Infinity'
+ },
+ {
+ value: true,
+ desc: 'desc5',
+ title: 'boolean'
+ },
+ {
+ value: 'a',
+ desc: 'desc6',
+ title: 'string'
+ },
+ {
+ value: function () {
+ },
+ desc: 'desc7',
+ title: 'function'
+ },
+ {
+ value: [],
+ desc: 'desc8',
+ title: 'array'
+ },
+ {
+ value: {},
+ desc: 'desc9',
+ title: 'object'
+ },
+ {
+ value: new Date(),
+ desc: 'desc10',
+ title: 'date'
+ },
+ {
+ value: new RegExp(),
+ desc: 'desc11',
+ title: 'regexp'
+ },
+ {
+ value: new Error(),
+ desc: 'desc12',
+ title: 'error object'
+ },
+ {
+ value: Em.Object,
+ desc: 'desc13',
+ title: 'Ember object constructor'
+ },
+ {
+ value: Em.View,
+ desc: 'desc14',
+ title: 'extended Ember object constructor'
+ },
+ {
+ value: new Number(1),
+ desc: 'desc15',
+ title: 'number object'
+ },
+ {
+ value: new String('a'),
+ desc: 'desc16',
+ title: 'string object'
+ },
+ {
+ value: new Boolean(true),
+ desc: 'desc17',
+ title: 'boolean object'
+ }
+ ],
+ noErrorCases = [
+ {
+ value: Em.Object.create(),
+ title: 'Ember object'
+ },
+ {
+ value: Em.View.create(),
+ title: 'extended Ember object'
+ }
+ ];
+ errorCases.forEach(function (test) {
+ it(test.title, function () {
+ expect(App.assertEmberObject.bind(null, test.value,
test.desc)).to.throw(App.EmberObjectTypeError, test.desc);
+ });
+ });
+ noErrorCases.forEach(function (test) {
+ it(test.title, function () {
+ expect(App.assertEmberObject.bind(null, test.value,
'desc')).to.not.throw();
+ });
+ });
+ });
+
+ describe('#App.assertArray', function () {
+ var errorCases = [
+ {
+ value: null,
+ desc: 'desc0',
+ title: 'null'
+ },
+ {
+ value: undefined,
+ desc: 'desc1',
+ title: 'undefined'
+ },
+ {
+ value: 1,
+ desc: 'desc2',
+ title: 'number'
+ },
+ {
+ value: NaN,
+ desc: 'desc3',
+ title: 'NaN'
+ },
+ {
+ value: Infinity,
+ desc: 'desc4',
+ title: 'Infinity'
+ },
+ {
+ value: true,
+ desc: 'desc5',
+ title: 'boolean'
+ },
+ {
+ value: 'a',
+ desc: 'desc6',
+ title: 'string'
+ },
+ {
+ value: function () {
+ },
+ desc: 'desc7',
+ title: 'function'
+ },
+ {
+ value: {},
+ desc: 'desc8',
+ title: 'object'
+ },
+ {
+ value: new Date(),
+ desc: 'desc9',
+ title: 'date'
+ },
+ {
+ value: new RegExp(),
+ desc: 'desc10',
+ title: 'regexp'
+ },
+ {
+ value: new Error(),
+ desc: 'desc11',
+ title: 'error object'
+ },
+ {
+ value: Em.Object,
+ desc: 'desc12',
+ title: 'Ember object constructor'
+ },
+ {
+ value: Em.View,
+ desc: 'desc13',
+ title: 'extended Ember object constructor'
+ },
+ {
+ value: Em.Object.create(),
+ desc: 'desc14',
+ title: 'Ember object'
+ },
+ {
+ value: Em.View.create(),
+ desc: 'desc15',
+ title: 'extended Ember object'
+ },
+ {
+ value: new Number(1),
+ desc: 'desc16',
+ title: 'number object'
+ },
+ {
+ value: new Boolean(true),
+ desc: 'desc17',
+ title: 'boolean object'
+ },
+ {
+ value: {
+ setInterval: Em.K,
+ 0: 'a',
+ length: 1
+ },
+ desc: 'desc18',
+ title: 'object with setInterval property'
+ },
+ {
+ value: (function () {
+ var value = 0;
+ value.length = 0;
+ return value;
+ })(),
+ desc: 'desc19',
+ title: 'non-object with length property'
+ }
+ ],
+ noErrorCases = [
+ {
+ value: [],
+ title: 'array'
+ },
+ {
+ value: Em.A(),
+ title: 'Ember array'
+ },
+ {
+ value: {
+ 0: 'a',
+ length: 1
+ },
+ title: 'array-like object'
+ },
+ {
+ value: Em.Object.create({
+ 0: 'a',
+ length: 1
+ }),
+ title: 'array-like Ember object'
+ },
+ {
+ value: new String('a'),
+ title: 'string object'
+ }
+ ];
+ errorCases.forEach(function (test) {
+ it(test.title, function () {
+ expect(App.assertArray.bind(null, test.value,
test.desc)).to.throw(App.ArrayTypeError, test.desc);
+ });
+ });
+ noErrorCases.forEach(function (test) {
+ it(test.title, function () {
+ expect(App.assertArray.bind(null, test.value, 'desc')).to.not.throw();
+ });
+ });
+ });
+
+ describe('#App.assertFunction', function () {
+ var errorCases = [
+ {
+ value: null,
+ desc: 'desc0',
+ title: 'null'
+ },
+ {
+ value: undefined,
+ desc: 'desc1',
+ title: 'undefined'
+ },
+ {
+ value: 1,
+ desc: 'desc2',
+ title: 'number'
+ },
+ {
+ value: NaN,
+ desc: 'desc3',
+ title: 'NaN'
+ },
+ {
+ value: Infinity,
+ desc: 'desc4',
+ title: 'Infinity'
+ },
+ {
+ value: true,
+ desc: 'desc5',
+ title: 'boolean'
+ },
+ {
+ value: 'a',
+ desc: 'desc6',
+ title: 'string'
+ },
+ {
+ value: [],
+ desc: 'desc7',
+ title: 'array'
+ },
+ {
+ value: {},
+ desc: 'desc8',
+ title: 'object'
+ },
+ {
+ value: new Date(),
+ desc: 'desc9',
+ title: 'date'
+ },
+ {
+ value: new RegExp(),
+ desc: 'desc10',
+ title: 'regexp'
+ },
+ {
+ value: Em.Object.create(),
+ desc: 'desc11',
+ title: 'Ember object'
+ },
+ {
+ value: Em.View.create(),
+ desc: 'desc12',
+ title: 'extended Ember object'
+ },
+ {
+ value: new Error(),
+ desc: 'desc13',
+ title: 'error object'
+ },
+ {
+ value: new Number(1),
+ desc: 'desc14',
+ title: 'number object'
+ },
+ {
+ value: new String('a'),
+ desc: 'desc15',
+ title: 'string object'
+ },
+ {
+ value: new Boolean(true),
+ desc: 'desc16',
+ title: 'boolean object'
+ }
+ ],
+ noErrorCases = [
+ {
+ value: function () {
+ },
+ title: 'function'
+ },
+ {
+ value: new Function(),
+ title: 'function from constructor'
+ }
+ ];
+ errorCases.forEach(function (test) {
+ it(test.title, function () {
+ expect(App.assertFunction.bind(null, test.value,
test.desc)).to.throw(App.FunctionTypeError, test.desc);
+ });
+ });
+ noErrorCases.forEach(function (test) {
+ it(test.title, function () {
+ expect(App.assertFunction.bind(null, test.value,
'desc')).to.not.throw();
+ });
+ });
+ });
+});
diff --git a/ambari-web/test/utils/errors/definitions_test.js
b/ambari-web/test/utils/errors/definitions_test.js
new file mode 100644
index 0000000..5d3ba65
--- /dev/null
+++ b/ambari-web/test/utils/errors/definitions_test.js
@@ -0,0 +1,127 @@
+/**
+ * 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('utils/errors/definitions');
+
+describe('Error definitions', function () {
+ describe('#App.NotNullTypeError', function () {
+ var cases = [
+ {
+ input: null,
+ result: 'Not null expected. ',
+ title: 'default message'
+ },
+ {
+ input: 'Error',
+ result: 'Not null expected. Error',
+ title: 'custom message'
+ }
+ ];
+ cases.forEach(function (test) {
+ it(test.title, function () {
+ var errorObject = new App.NotNullTypeError(test.input);
+ expect(errorObject.message).to.equal(test.result);
+ });
+ });
+ });
+
+ describe('#App.ObjectTypeError', function () {
+ var cases = [
+ {
+ input: null,
+ result: 'Object expected. ',
+ title: 'default message'
+ },
+ {
+ input: 'Error',
+ result: 'Object expected. Error',
+ title: 'custom message'
+ }
+ ];
+ cases.forEach(function (test) {
+ it(test.title, function () {
+ var errorObject = new App.ObjectTypeError(test.input);
+ expect(errorObject.message).to.equal(test.result);
+ });
+ });
+ });
+
+ describe('#App.ArrayTypeError', function () {
+ var cases = [
+ {
+ input: null,
+ result: 'Array expected. ',
+ title: 'default message'
+ },
+ {
+ input: 'Error',
+ result: 'Array expected. Error',
+ title: 'custom message'
+ }
+ ];
+ cases.forEach(function (test) {
+ it(test.title, function () {
+ var errorObject = new App.ArrayTypeError(test.input);
+ expect(errorObject.message).to.equal(test.result);
+ });
+ });
+ });
+
+ describe('#App.FunctionTypeError', function () {
+ var cases = [
+ {
+ input: null,
+ result: 'Function expected. ',
+ title: 'default message'
+ },
+ {
+ input: 'Error',
+ result: 'Function expected. Error',
+ title: 'custom message'
+ }
+ ];
+ cases.forEach(function (test) {
+ it(test.title, function () {
+ var errorObject = new App.FunctionTypeError(test.input);
+ expect(errorObject.message).to.equal(test.result);
+ });
+ });
+ });
+
+ describe('#App.EmberObjectTypeError', function () {
+ var cases = [
+ {
+ input: null,
+ result: 'Ember object expected. ',
+ title: 'default message'
+ },
+ {
+ input: 'Error',
+ result: 'Ember object expected. Error',
+ title: 'custom message'
+ }
+ ];
+ cases.forEach(function (test) {
+ it(test.title, function () {
+ var errorObject = new App.EmberObjectTypeError(test.input);
+ expect(errorObject.message).to.equal(test.result);
+ });
+ });
+ });
+});