tableParamsSpec.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. describe('NgTableParams', function () {
  2. var scope, ctrl, data = [
  3. {name: "Moroni", age: 50, role: 'Administrator'},
  4. {name: "Tiancum", age: 43, role: 'Administrator'},
  5. {name: "Jacob", age: 27, role: 'Administrator'},
  6. {name: "Nephi", age: 29, role: 'Moderator'},
  7. {name: "Enos", age: 34, role: 'User'},
  8. {name: "Tiancum", age: 43, role: 'User'},
  9. {name: "Jacob", age: 27, role: 'User'},
  10. {name: "Nephi", age: 29, role: 'Moderator'},
  11. {name: "Enos", age: 34, role: 'User'},
  12. {name: "Tiancum", age: 43, role: 'Moderator'},
  13. {name: "Jacob", age: 27, role: 'User'},
  14. {name: "Nephi", age: 29, role: 'User'},
  15. {name: "Enos", age: 34, role: 'Moderator'},
  16. {name: "Tiancum", age: 43, role: 'User'},
  17. {name: "Jacob", age: 27, role: 'User'},
  18. {name: "Nephi", age: 29, role: 'User'},
  19. {name: "Enos", age: 34, role: 'User'}
  20. ];
  21. beforeEach(module('ngTable'));
  22. beforeEach(inject(function ($controller, $rootScope) {
  23. scope = $rootScope.$new();
  24. }));
  25. it('NgTableParams should be defined', inject(function (NgTableParams) {
  26. var params = new NgTableParams();
  27. expect(NgTableParams).toBeDefined();
  28. }));
  29. it('NgTableParams test generatePagesArray', inject(function (NgTableParams) {
  30. var params = new NgTableParams();
  31. expect(params.generatePagesArray(1, 30, 10)).toEqual([
  32. { type: 'prev', number: 1, active: false },
  33. { type: 'first', number: 1, active: false, current: true },
  34. { type: 'page', number: 2, active: true, current: false },
  35. { type: 'last', number: 3, active: true, current: false },
  36. { type: 'next', number: 2, active: true }
  37. ]);
  38. expect(params.generatePagesArray(2, 30, 10)).toEqual([
  39. { type: 'prev', number: 1, active: true },
  40. { type: 'first', number: 1, active: true, current: false },
  41. { type: 'page', number: 2, active: false, current: true },
  42. { type: 'last', number: 3, active: true, current: false },
  43. { type: 'next', number: 3, active: true }
  44. ]);
  45. expect(params.generatePagesArray(2, 100, 10)).toEqual([
  46. { type: 'prev', number: 1, active: true },
  47. { type: 'first', number: 1, active: true, current: false },
  48. { type: 'page', number: 2, active: false, current: true },
  49. { type: 'page', number: 3, active: true, current: false },
  50. { type: 'page', number: 4, active: true, current: false },
  51. { type: 'page', number: 5, active: true, current: false },
  52. { type: 'page', number: 6, active: true, current: false },
  53. { type: 'page', number: 7, active: true, current: false },
  54. { type: 'more', active: false },
  55. { type: 'last', number: 10, active: true, current: false },
  56. { type: 'next', number: 3, active: true }
  57. ]);
  58. }));
  59. it('NgTableParams `page` parameter', inject(function (NgTableParams) {
  60. var params = new NgTableParams();
  61. expect(params.page()).toBe(1);
  62. expect(params.page(2)).toEqual(params);
  63. expect(params.page()).toBe(2);
  64. params = new NgTableParams({
  65. page: 3
  66. });
  67. expect(params.page()).toBe(3);
  68. var callCount = 0;
  69. scope.tableParams = params;
  70. scope.$watch('tableParams', function (innerParams) {
  71. callCount++;
  72. expect(innerParams.page()).toBe(4);
  73. });
  74. params.page(4);
  75. scope.$apply();
  76. expect(callCount).toBe(1);
  77. // repeat call
  78. scope.$apply();
  79. expect(callCount).toBe(1);
  80. }));
  81. it('NgTableParams parse url parameters', inject(function (NgTableParams) {
  82. var params = new NgTableParams({
  83. 'sorting[name]': 'asc',
  84. 'sorting[age]': 'desc',
  85. 'filter[name]': 'test',
  86. 'filter[age]': 20
  87. });
  88. expect(params.filter()).toEqual({ 'name': 'test', 'age': 20 });
  89. expect(params.filter({})).toEqual(params);
  90. expect(params.sorting()).toEqual({ 'age': 'desc' }); // sorting only by one column
  91. expect(params.sorting({})).toEqual(params);
  92. }));
  93. it('NgTableParams return url parameters', inject(function (NgTableParams) {
  94. var params = new NgTableParams({
  95. 'sorting[name]': 'asc',
  96. 'sorting[age]': 'desc',
  97. 'filter[name]': 'test',
  98. 'filter[age]': 20
  99. });
  100. expect(params.url()).toEqual({
  101. 'page': '1',
  102. 'count': '1',
  103. 'filter[name]': 'test',
  104. 'filter[age]': 20,
  105. 'sorting[age]': 'desc'
  106. });
  107. expect(params.url(true)).toEqual([
  108. 'page=1',
  109. 'count=1',
  110. 'filter[name]=test',
  111. 'filter[age]=20',
  112. 'sorting[age]=desc'
  113. ]);
  114. }));
  115. it('NgTableParams test orderBy', inject(function (NgTableParams) {
  116. var params = new NgTableParams({
  117. 'sorting[name]': 'asc'
  118. });
  119. expect(params.orderBy()).toEqual([ '+name' ]); // for angular sorting function
  120. params.sorting({ name: 'desc', age: 'asc' });
  121. expect(params.orderBy()).toEqual([ '-name', '+age' ]);
  122. }));
  123. it('NgTableParams test settings', inject(function (NgTableParams) {
  124. var params = new NgTableParams();
  125. expect(params.settings()).toEqual({
  126. $scope: null,
  127. $loading: false,
  128. data: null,
  129. total: 0,
  130. defaultSort : 'desc',
  131. counts: [10, 25, 50, 100],
  132. getData: params.getData,
  133. getGroups: params.getGroups,
  134. filterDelay: 750
  135. });
  136. params = new NgTableParams({}, { total: 100 });
  137. expect(params.settings()).toEqual({
  138. $scope: null,
  139. $loading: false,
  140. data: null,
  141. total: 100,
  142. defaultSort : 'desc',
  143. counts: [10, 25, 50, 100],
  144. getData: params.getData,
  145. getGroups: params.getGroups,
  146. filterDelay: 750
  147. });
  148. }));
  149. it('NgTableParams test getData', inject(function ($q, NgTableParams) {
  150. var params = new NgTableParams();
  151. $defer = $q.defer();
  152. $defer.promise.then(function(data) {
  153. expect(data).toEqual([]);
  154. });
  155. params.getData($defer);
  156. }));
  157. it('NgTableParams test grouping', inject(function ($q, NgTableParams) {
  158. var params = new NgTableParams();
  159. params.getData = function ($defer) {
  160. $defer.resolve(data);
  161. };
  162. $defer = $q.defer();
  163. $defer.promise.then(function (data) {
  164. expect(data).toEqual([
  165. {
  166. value: 'Administrator',
  167. data: [
  168. {name: "Moroni", age: 50, role: 'Administrator'},
  169. {name: "Tiancum", age: 43, role: 'Administrator'},
  170. {name: "Jacob", age: 27, role: 'Administrator'}
  171. ]
  172. },
  173. {
  174. value: 'Moderator',
  175. data: [
  176. {name: "Nephi", age: 29, role: 'Moderator'},
  177. {name: "Nephi", age: 29, role: 'Moderator'},
  178. {name: "Tiancum", age: 43, role: 'Moderator'},
  179. {name: "Enos", age: 34, role: 'Moderator'}
  180. ]
  181. },
  182. {
  183. value: 'User',
  184. data: [
  185. {name: "Enos", age: 34, role: 'User'},
  186. {name: "Tiancum", age: 43, role: 'User'},
  187. {name: "Jacob", age: 27, role: 'User'},
  188. {name: "Enos", age: 34, role: 'User'},
  189. {name: "Jacob", age: 27, role: 'User'},
  190. {name: "Nephi", age: 29, role: 'User'},
  191. {name: "Tiancum", age: 43, role: 'User'},
  192. {name: "Jacob", age: 27, role: 'User'},
  193. {name: "Nephi", age: 29, role: 'User'},
  194. {name: "Enos", age: 34, role: 'User'}
  195. ]
  196. }
  197. ]);
  198. });
  199. params.getGroups($defer, 'role');
  200. $defer = $q.defer();
  201. $defer.promise.then(function (data) {
  202. expect(data).toEqual([
  203. {
  204. value: 50,
  205. data: [
  206. {name: "Moroni", age: 50, role: 'Administrator'}
  207. ]
  208. },
  209. {
  210. value: 43,
  211. data: [
  212. {name: "Tiancum", age: 43, role: 'Administrator'},
  213. {name: "Tiancum", age: 43, role: 'User'},
  214. {name: "Tiancum", age: 43, role: 'Moderator'},
  215. {name: "Tiancum", age: 43, role: 'User'}
  216. ]
  217. },
  218. {
  219. value: 27,
  220. data: [
  221. {name: "Jacob", age: 27, role: 'Administrator'},
  222. {name: "Jacob", age: 27, role: 'User'},
  223. {name: "Jacob", age: 27, role: 'User'},
  224. {name: "Jacob", age: 27, role: 'User'}
  225. ]
  226. },
  227. {
  228. value: 29,
  229. data: [
  230. {name: "Nephi", age: 29, role: 'Moderator'},
  231. {name: "Nephi", age: 29, role: 'Moderator'},
  232. {name: "Nephi", age: 29, role: 'User'},
  233. {name: "Nephi", age: 29, role: 'User'}
  234. ]
  235. },
  236. {
  237. value: 34,
  238. data: [
  239. {name: "Enos", age: 34, role: 'User'},
  240. {name: "Enos", age: 34, role: 'User'},
  241. {name: "Enos", age: 34, role: 'Moderator'},
  242. {name: "Enos", age: 34, role: 'User'}
  243. ]
  244. }
  245. ]);
  246. });
  247. params.getGroups($defer, 'age');
  248. }));
  249. it('ngTableParams test defaults', inject(function ($q, ngTableParams, ngTableDefaults) {
  250. ngTableDefaults.params = {
  251. count: 2
  252. };
  253. ngTableDefaults.settings = {
  254. counts: []
  255. };
  256. var params = new ngTableParams();
  257. expect(params.count()).toEqual(2);
  258. expect(params.page()).toEqual(1);
  259. var settings = params.settings()
  260. expect(settings.counts.length).toEqual(0);
  261. expect(settings.filterDelay).toEqual(750);
  262. }));
  263. });