commit
						58f01788b3
					
				@ -72,6 +72,13 @@ module.exports = function (config) {
 | 
			
		||||
        // list of files to exclude
 | 
			
		||||
        exclude: [],
 | 
			
		||||
 | 
			
		||||
        client: {
 | 
			
		||||
            mocha: {
 | 
			
		||||
                // mocha测试超时6秒
 | 
			
		||||
                timeout: 1000 * 6
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        // preprocess matching files before serving them to the browser
 | 
			
		||||
        // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
 | 
			
		||||
 | 
			
		||||
@ -415,7 +415,7 @@
 | 
			
		||||
    
 | 
			
		||||
    //如果是数字,按大小排序,如果是非数字,按字典序排序
 | 
			
		||||
    clone.sort(function(o1, o2){
 | 
			
		||||
      var isNum = /^\d+$/
 | 
			
		||||
      var isNum = /^-?\d+$/
 | 
			
		||||
      ,v1 = o1[key]
 | 
			
		||||
      ,v2 = o2[key];
 | 
			
		||||
      
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,7 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* global layui */
 | 
			
		||||
/* eslint-disable max-nested-callbacks, fecs-indent */
 | 
			
		||||
 | 
			
		||||
var laytpl = layui.laytpl;
 | 
			
		||||
 | 
			
		||||
@ -226,3 +227,4 @@ describe('laytpl', function () {
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
/* eslint-enable max-nested-callbacks, fecs-indent */
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										339
									
								
								test/layui.js
									
									
									
									
									
								
							
							
						
						
									
										339
									
								
								test/layui.js
									
									
									
									
									
								
							@ -4,7 +4,7 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* global layui */
 | 
			
		||||
/* eslint-disable max-nested-callbacks */
 | 
			
		||||
/* eslint-disable max-nested-callbacks, fecs-indent */
 | 
			
		||||
 | 
			
		||||
var $ = layui.$;
 | 
			
		||||
 | 
			
		||||
@ -123,7 +123,7 @@ describe('layui', function () {
 | 
			
		||||
      layui.each([
 | 
			
		||||
        'layui'
 | 
			
		||||
      ], function (index, value) {
 | 
			
		||||
        expect(this + '').to.deep.equal(value).and.equal('layui')
 | 
			
		||||
        expect(this + '').to.deep.equal(value).and.equal('layui');
 | 
			
		||||
        expect(index).to.equal(0);
 | 
			
		||||
        done();
 | 
			
		||||
      });
 | 
			
		||||
@ -170,5 +170,338 @@ describe('layui', function () {
 | 
			
		||||
      expect(flag).to.equal('version');
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('layui.img', function () {
 | 
			
		||||
    var base64 = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
 | 
			
		||||
    it('success callback', function (done) {
 | 
			
		||||
      layui.img(base64, function (img) {
 | 
			
		||||
        expect(img).to.not.undefined;
 | 
			
		||||
        expect(typeof(img)).to.equal('object', '是img对象');
 | 
			
		||||
        expect(img.nodeType).to.equal(1, 'img标签节点');
 | 
			
		||||
 | 
			
		||||
        // 在ie11中不通过, 原因目前不明
 | 
			
		||||
        // expect(img.width).to.equal(1);
 | 
			
		||||
        // expect(img.height).to.equal(1);
 | 
			
		||||
        done();
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('error callback', function (done) {
 | 
			
		||||
      layui.img('/404/404.gif', function () {}, function (e) {
 | 
			
		||||
        expect(e).to.not.undefined;
 | 
			
		||||
        done();
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // 先删除, 因为没有哪个图片是决定不变的
 | 
			
		||||
    // it('http 200', function (done) {
 | 
			
		||||
    //   layui.img('https://www.baidu.com/img/bd_logo1.png', function (img) {
 | 
			
		||||
    //     expect(img).to.not.undefined;
 | 
			
		||||
    //     done();
 | 
			
		||||
    //   });
 | 
			
		||||
    // });
 | 
			
		||||
 | 
			
		||||
    it('http 404', function (done) {
 | 
			
		||||
      layui.img('http://www.404.xx/logo.404.gif', function () {}, function (e) {
 | 
			
		||||
        expect(e).to.not.undefined;
 | 
			
		||||
        done();
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('load complete', function (done) {
 | 
			
		||||
      layui.img(base64, function () {
 | 
			
		||||
        layui.img(base64, function (img) {
 | 
			
		||||
          expect(img).to.not.undefined;
 | 
			
		||||
          done();
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('layui.hint', function () {
 | 
			
		||||
    expect(layui.hint).to.be.a('function');
 | 
			
		||||
    expect(layui.hint()).to.be.a('object');
 | 
			
		||||
    expect(layui.hint().error).to.be.a('function');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('layui.stope', function () {
 | 
			
		||||
    it('stopPropagation', function (done) {
 | 
			
		||||
      layui.stope({
 | 
			
		||||
        stopPropagation: function (e) {
 | 
			
		||||
          expect(e).to.be.undefined;
 | 
			
		||||
          done();
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('cancelBubble', function () {
 | 
			
		||||
      var event = {};
 | 
			
		||||
      layui.stope(event);
 | 
			
		||||
      expect(event.cancelBubble).to.be.true;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // ie中不支持
 | 
			
		||||
    // it('window.event', function () {
 | 
			
		||||
    //   var old = window.event;
 | 
			
		||||
    //   var event = window.event = {};
 | 
			
		||||
    //   layui.stope();
 | 
			
		||||
    //   expect(event.cancelBubble).to.be.true;
 | 
			
		||||
    //   window.event = old;
 | 
			
		||||
    // });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('layui.onevent', function () {
 | 
			
		||||
    it('check params and return value', function () {
 | 
			
		||||
      expect(layui.onevent).to.be.a('function');
 | 
			
		||||
      expect(layui.onevent()).to.deep.equal(layui);
 | 
			
		||||
      expect(layui.onevent([], [], [])).to.deep.equal(layui);
 | 
			
		||||
      expect(layui.onevent({}, {}, {})).to.deep.equal(layui);
 | 
			
		||||
 | 
			
		||||
      var result = layui.onevent('test-' + Date.now(), 'click', function () {});
 | 
			
		||||
      expect(result).to.deep.equal(layui);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('bind event', function (done) {
 | 
			
		||||
      var id = 'test-bind-event';
 | 
			
		||||
      var data = {
 | 
			
		||||
        name: 'layui'
 | 
			
		||||
      };
 | 
			
		||||
      var result = layui.onevent(id, 'click', function (param) {
 | 
			
		||||
        expect(result).to.deep.equal(this).and.equal(layui);
 | 
			
		||||
        expect(param).to.deep.equal(data);
 | 
			
		||||
        done();
 | 
			
		||||
      });
 | 
			
		||||
      layui.event(id, 'click', data);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('coverage of the same name event', function () {
 | 
			
		||||
      var id = 'test-same-event';
 | 
			
		||||
      var index = 0;
 | 
			
		||||
      layui.onevent(id, 'click', function () {
 | 
			
		||||
        index = 1;
 | 
			
		||||
      });
 | 
			
		||||
      layui.onevent(id, 'click', function () {
 | 
			
		||||
        index = 2;
 | 
			
		||||
      });
 | 
			
		||||
      layui.event(id, 'click');
 | 
			
		||||
      expect(index).to.equal(2);
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('layui.event', function () {
 | 
			
		||||
    it('trigger event', function (done) {
 | 
			
		||||
      layui.onevent('test-trigger', 'click(*)', function (data) {
 | 
			
		||||
        expect(data).to.be.true;
 | 
			
		||||
        done();
 | 
			
		||||
      });
 | 
			
		||||
      layui.event('test-trigger', 'click(*)', true);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('trigger multiple', function () {
 | 
			
		||||
      var index = 0;
 | 
			
		||||
      var id = 'test-trigger-multiple';
 | 
			
		||||
      layui.onevent(id, 'nav', function () {
 | 
			
		||||
        index += 1;
 | 
			
		||||
      });
 | 
			
		||||
      layui.event(id, 'nav');
 | 
			
		||||
      layui.event(id, 'nav');
 | 
			
		||||
      layui.event(id, 'nav');
 | 
			
		||||
      expect(index).to.equal(3);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // todo多个事件
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('layui.sort', function () {
 | 
			
		||||
    var numberData = [
 | 
			
		||||
      {
 | 
			
		||||
        name: 1
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: 3
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: 2
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    it('check params and return value', function () {
 | 
			
		||||
      // 由于没有值参数, 导致 JSON.parse 失败
 | 
			
		||||
      expect(function () {
 | 
			
		||||
        layui.sort();
 | 
			
		||||
      }).to.throw();
 | 
			
		||||
 | 
			
		||||
      expect(layui.sort({})).to.deep.equal({});
 | 
			
		||||
      expect(layui.sort({
 | 
			
		||||
        name: 'layui'
 | 
			
		||||
      })).to.deep.equal({
 | 
			
		||||
        name: 'layui'
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      expect(layui.sort([{
 | 
			
		||||
        name: 'layui'
 | 
			
		||||
      }], 'name')).to.deep.equal([{
 | 
			
		||||
        name: 'layui'
 | 
			
		||||
      }]);
 | 
			
		||||
 | 
			
		||||
      expect(layui.sort([{
 | 
			
		||||
        name: 'layui'
 | 
			
		||||
      }], 'name', true)).to.deep.equal([{
 | 
			
		||||
        name: 'layui'
 | 
			
		||||
      }]);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // 测试是否污染原数据
 | 
			
		||||
    it('clone object', function () {
 | 
			
		||||
      var clone = layui.sort(numberData, 'name');
 | 
			
		||||
 | 
			
		||||
      // 往clone对象添加
 | 
			
		||||
      clone.push('layui');
 | 
			
		||||
 | 
			
		||||
      expect(clone).to.have.lengthOf(4);
 | 
			
		||||
      expect(numberData).to.have.lengthOf(3);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('format value number', function () {
 | 
			
		||||
      var result = layui.sort([
 | 
			
		||||
        {
 | 
			
		||||
          key: '1'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          key: '-1'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          key: 2
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          key: 3
 | 
			
		||||
        }
 | 
			
		||||
      ], 'key');
 | 
			
		||||
      expect(result).to.deep.equal([
 | 
			
		||||
        {
 | 
			
		||||
          key: '-1'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          key: '1'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          key: 2
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          key: 3
 | 
			
		||||
        }
 | 
			
		||||
      ]);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('asc order', function () {
 | 
			
		||||
      var result = layui.sort(numberData, 'name');
 | 
			
		||||
      expect(result).to.deep.equal([
 | 
			
		||||
        {
 | 
			
		||||
          name: 1
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: 2
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: 3
 | 
			
		||||
        }
 | 
			
		||||
      ]);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('desc order', function () {
 | 
			
		||||
      var result = layui.sort(numberData, 'name', true);
 | 
			
		||||
      expect(result).to.deep.equal([
 | 
			
		||||
        {
 | 
			
		||||
          name: 3
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: 2
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: 1
 | 
			
		||||
        }
 | 
			
		||||
      ]);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('error data', function () {
 | 
			
		||||
      var data = [
 | 
			
		||||
        // null,
 | 
			
		||||
        {
 | 
			
		||||
          name: 5
 | 
			
		||||
        },
 | 
			
		||||
        {},
 | 
			
		||||
        [],
 | 
			
		||||
        'test',
 | 
			
		||||
        {
 | 
			
		||||
          name: '3'
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
      expect(layui.sort(data, 'name')).to.deep.equal([
 | 
			
		||||
        {},
 | 
			
		||||
        [],
 | 
			
		||||
        'test',
 | 
			
		||||
        {
 | 
			
		||||
          name: '3'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: 5
 | 
			
		||||
        }
 | 
			
		||||
      ]);
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('layui.device', function () {
 | 
			
		||||
    expect(layui.device).to.be.a('function');
 | 
			
		||||
    expect(layui.device()).to.be.a('object');
 | 
			
		||||
    expect(layui.device().ie).to.be.not.undefined;
 | 
			
		||||
    expect(layui.device().ios).to.be.not.undefined;
 | 
			
		||||
    expect(layui.device().android).to.be.not.undefined;
 | 
			
		||||
    expect(layui.device().weixin).to.be.a('boolean');
 | 
			
		||||
    expect(layui.device('weixin').weixin).to.be.false;
 | 
			
		||||
    expect(layui.device('.*')['.*']).to.be.not.empty;
 | 
			
		||||
    expect(layui.device('layui.com')['layui.com']).to.be.false;
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('layui.getStyle', function () {
 | 
			
		||||
    it('real test', function () {
 | 
			
		||||
      var elem = $('<div />').css({
 | 
			
		||||
        position: 'fixed',
 | 
			
		||||
        zIndex: 10
 | 
			
		||||
      }).appendTo('body').get(0);
 | 
			
		||||
 | 
			
		||||
      expect(layui.getStyle(elem, 'position')).to.equal('fixed');
 | 
			
		||||
      expect(layui.getStyle(elem, 'z-index')).to.equal('10');
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('mock currentStyle', function (done) {
 | 
			
		||||
      var node = {
 | 
			
		||||
        currentStyle: {
 | 
			
		||||
          getPropertyValue: function (name) {
 | 
			
		||||
            expect(name).to.equal('layui');
 | 
			
		||||
            done();
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      };
 | 
			
		||||
      layui.getStyle(node, 'layui');
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('layui.extend', function () {
 | 
			
		||||
    expect(layui.extend).to.be.a('function');
 | 
			
		||||
    expect(layui.extend()).to.deep.equal(layui);
 | 
			
		||||
    expect(layui.extend({
 | 
			
		||||
      v: 'v',
 | 
			
		||||
      util: 'util'
 | 
			
		||||
    })).to.deep.equal(layui);
 | 
			
		||||
 | 
			
		||||
    var id = 'test-extend-' + Date.now();
 | 
			
		||||
    var data = {};
 | 
			
		||||
    data[id] = id;
 | 
			
		||||
    expect(layui.modules[id]).to.be.undefined;
 | 
			
		||||
    layui.extend(data);
 | 
			
		||||
    expect(layui.modules[id]).to.be.not.undefined;
 | 
			
		||||
    expect(layui.modules[id]).to.equal(id);
 | 
			
		||||
    delete layui.modules[id];
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
/* eslint-enable max-nested-callbacks */
 | 
			
		||||
/* eslint-enable max-nested-callbacks, fecs-indent */
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user