UNPKG

cmps

Version:

cmps is not only a server tool but also a powerful tool to design & make your component/UI quickly and best.

128 lines (125 loc) 5.15 kB
/** * Unit Test for __name__ */ NEJ.define([ 'base/util', '../component.js', './caseIns.js', './caseApi.js', './caseEvt.js' ], function ( u, Component, insCases, apiCases, evtCases ) { // use expect style BDD var expect = chai.expect; var ut = {}; /** * Regular 组件常规属性验证器初始化 * * @param {Object} def - 默认属性信息 * @param {Object} ret - 待验证结果 * @returns {Function} 验证执行函数 */ ut.setupProChecker = function (def, ret) { ret = u._$merge({}, def, ret); return function (expect, inst) { u._$forIn(ret, function (value, key) { expect(inst.data[key]).to.eql(value, key); }); }; }; /** * Regular 组件计算属性验证器初始化 * * @param {Object} def - 默认属性信息 * @param {Object} ret - 待验证结果 * @returns {Function} 验证执行函数 */ ut.setupComputedChecker = function (def, ret) { ret = u._$merge({}, def, ret); return function (expect, inst) { u._$forIn(ret, function (value, key) { expect(inst.$get(key)).to.eql(value, key); }); }; } // define ALL test describe('Unit Test for component __name__', function () { // define instance test describe('Unit Test for New Instance', function () { // FIXME set default value config var defPro = {}, defCpt = {}; // instance Base var caseName = "shoule be ok for new instance with data"; u._$forEach(insCases, function (item) { if (item.staticInsApi && item.staticInsApi.length) { caseName = "shoule be ok for static new instance api" + item.staticInsApi; } it(caseName, function () { var inst = ""; // static instance or not if (item.staticInsApi && item.staticInsApi.length) { Component[staticInsApi]({ data: item.data }); } else { inst = new Component({ data: item.data }); } expect(inst).to.be.an.instanceof(Component); // check property ut.setupProChecker(defPro, item.expPro)(expect, inst); // check computed property ut.setupComputedChecker(defCpt, item.expCpt)(expect, inst); }); }); }); // define API test describe('Unit Test for Used API', function () { var defPro = {}, defCpt = {}; var caseName = "shoule be ok for instance API "; u._$forEach(apiCases, function (item) { if (item.api && item.api.length) { it(caseName + item.api, function () { var inst = new Component({ data: item.data }); if (item.expReturn) { expect(inst[item.api].apply(inst, item.params || [])).to.eql(item.expReturn); } else { inst[item.api].apply(inst, item.params || []); } ut.setupProChecker(defPro, item.expPro)(expect, inst); ut.setupComputedChecker(defCpt, item.expCpt)(expect, inst); }); } }); }); // define Event test describe('Unit Test for Event', function () { var caseName = "shoule be ok for instance event on "; u._$forEach(evtCases, function (item) { if (item.targetEvt) { it(caseName + item.targetEvt, function (done) { var inst = new Component({ data: item.data }); inst.$on(item.targetEvt, function (event) { expect(event).to.eql(item.expEvt); done(); }); var method = item.trigger.shift(); inst[method].apply(inst, item.trigger); }); } }); }); }); });