layui.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. /**
  2. * @file layui - 测试
  3. * @author xuexb <fe.xiaowu@gmail.com>
  4. */
  5. /* global layui */
  6. /* eslint-disable max-nested-callbacks */
  7. var $ = layui.$;
  8. describe('layui', function () {
  9. it('version', function () {
  10. expect(layui.v).to.be.a('string');
  11. expect(layui.v).to.not.be.empty;
  12. });
  13. it('layui.config', function () {
  14. expect(layui.config()).to.deep.equal(layui);
  15. expect(layui.config({
  16. testName: 'layui'
  17. })).to.deep.equal(layui);
  18. expect(layui.cache.testName).to.equal('layui');
  19. });
  20. describe('layui.router', function () {
  21. var defaultData = {
  22. path: [],
  23. search: {},
  24. hash: ''
  25. };
  26. it('default params', function () {
  27. expect(layui.router).to.be.a('function');
  28. expect(layui.router()).to.be.a('object').and.deep.equal(defaultData);
  29. });
  30. it('error router', function () {
  31. [
  32. null,
  33. '',
  34. '#123',
  35. '123',
  36. '##'
  37. ].forEach(function (key) {
  38. expect(layui.router(key)).to.deep.equal(defaultData);
  39. });
  40. });
  41. it('router querystring', function () {
  42. expect(layui.router('#/a=1/b=2/c=')).to.deep.equal($.extend({}, defaultData, {
  43. search: {
  44. a: '1',
  45. b: '2',
  46. c: ''
  47. }
  48. }));
  49. expect(layui.router('#/a=测试/b=2').search).to.deep.equal({
  50. a: '测试',
  51. b: '2'
  52. });
  53. // todo
  54. // urlencode
  55. // urldecode
  56. });
  57. it('router hash', function () {
  58. expect(layui.router('#/name#layui')).to.deep.equal($.extend({}, defaultData, {
  59. hash: '#layui',
  60. path: ['name']
  61. }));
  62. expect(layui.router('#/name#layui').hash).to.equal('#layui');
  63. expect(layui.router('#/name#layui=1').hash).to.equal('#layui=1');
  64. expect(layui.router('#/name##layui').hash).to.equal('##layui');
  65. expect(layui.router('#/name=1#layui').hash).to.equal('#layui');
  66. expect(layui.router('#/name=1/b=2#layui').hash).to.equal('#layui');
  67. });
  68. it('router path', function () {
  69. expect(layui.router('#/a/b/c=2#hash')).to.deep.equal({
  70. path: ['a', 'b'],
  71. search: {
  72. c: '2'
  73. },
  74. hash: '#hash'
  75. });
  76. });
  77. });
  78. describe('layui.each', function () {
  79. it('check params', function () {
  80. expect(layui.each).to.be.a('function');
  81. expect(layui.each()).to.deep.equal(layui);
  82. expect(layui.each({})).to.deep.equal(layui);
  83. expect(layui.each([])).to.deep.equal(layui);
  84. expect(layui.each({}, function () {})).to.deep.equal(layui);
  85. expect(layui.each([], function () {})).to.deep.equal(layui);
  86. });
  87. it('null params', function (done) {
  88. var index = 0;
  89. layui.each(null, function (index) {
  90. index += 1;
  91. });
  92. setTimeout(function () {
  93. expect(index).to.equal(0);
  94. done();
  95. });
  96. });
  97. it('object each', function (done) {
  98. layui.each({
  99. name: 'layui'
  100. }, function (key, value) {
  101. expect(this + '').to.deep.equal(value).and.equal('layui');
  102. expect(key).to.equal('name');
  103. done();
  104. });
  105. });
  106. it('array each', function (done) {
  107. layui.each([
  108. 'layui'
  109. ], function (index, value) {
  110. expect(this + '').to.deep.equal(value).and.equal('layui')
  111. expect(index).to.equal(0);
  112. done();
  113. });
  114. });
  115. it('break array each', function () {
  116. var arr = new Array(100).join(',').split(',');
  117. var flag = -1;
  118. layui.each(arr, function (index) {
  119. flag = index;
  120. if (index > 5) {
  121. return true;
  122. }
  123. });
  124. expect(flag).to.equal(6);
  125. flag = -1;
  126. layui.each(arr, function (index) {
  127. flag = index;
  128. if (index > 5) {
  129. return false;
  130. }
  131. });
  132. expect(flag).to.equal(99);
  133. });
  134. it('break object each', function () {
  135. var obj = {
  136. name: 'layui',
  137. version: '2.x'
  138. };
  139. var flag = null;
  140. layui.each(obj, function (key) {
  141. flag = key;
  142. return true;
  143. });
  144. expect(flag).to.equal('name');
  145. flag = null;
  146. layui.each(obj, function (key) {
  147. flag = key;
  148. return false;
  149. });
  150. expect(flag).to.equal('version');
  151. });
  152. });
  153. });
  154. /* eslint-enable max-nested-callbacks */