table_server_view_mixin_test.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. var App = require('app');
  19. require('mixins/common/table_server_view_mixin');
  20. describe('App.MainConfigHistoryView', function() {
  21. var view = Em.View.create(App.TableServerViewMixin, {
  22. filteredCount: 0,
  23. totalCount: 0,
  24. content: [],
  25. filteredContent: [],
  26. refresh: Em.K,
  27. saveFilterConditions: Em.K,
  28. controller: Em.Object.create({
  29. name: 'mainConfigHistoryController',
  30. paginationProps: [
  31. {
  32. name: 'displayLength',
  33. value: '25'
  34. },
  35. {
  36. name: 'startIndex',
  37. value: 0
  38. }
  39. ]
  40. })
  41. });
  42. describe('#pageContent', function() {
  43. beforeEach(function(){
  44. view.propertyDidChange('pageContent');
  45. });
  46. it('filtered content is empty', function() {
  47. view.set('filteredContent', []);
  48. expect(view.get('pageContent')).to.be.empty;
  49. });
  50. it('filtered content contain one item', function() {
  51. view.set('filteredCount', 1);
  52. view.set('filteredContent', [Em.Object.create()]);
  53. expect(view.get('pageContent')).to.eql([Em.Object.create()]);
  54. });
  55. it('filtered content contain two unsorted items', function() {
  56. view.set('filteredCount', 2);
  57. view.set('filteredContent', [
  58. Em.Object.create({index:2}),
  59. Em.Object.create({index:1})
  60. ]);
  61. expect(view.get('pageContent')).to.eql([
  62. Em.Object.create({index:1}),
  63. Em.Object.create({index:2})
  64. ]);
  65. });
  66. });
  67. describe('#updatePagination', function() {
  68. beforeEach(function () {
  69. sinon.spy(view, 'refresh');
  70. sinon.stub(App.db, 'setDisplayLength', Em.K);
  71. sinon.stub(App.db, 'setStartIndex', Em.K);
  72. });
  73. afterEach(function () {
  74. view.refresh.restore();
  75. App.db.setStartIndex.restore();
  76. App.db.setDisplayLength.restore();
  77. });
  78. it('displayLength is correct', function() {
  79. view.set('displayLength', '50');
  80. view.set('startIndex', null);
  81. view.updatePagination();
  82. expect(view.refresh.calledOnce).to.be.true;
  83. expect(App.db.setStartIndex.called).to.be.false;
  84. expect(App.db.setDisplayLength.calledWith('mainConfigHistoryController', '50')).to.be.true;
  85. expect(view.get('controller.paginationProps').findProperty('name', 'startIndex').value).to.equal(0);
  86. expect(view.get('controller.paginationProps').findProperty('name', 'displayLength').value).to.equal('50');
  87. });
  88. it('startIndex is correct', function() {
  89. view.set('displayLength', null);
  90. view.set('startIndex', 10);
  91. view.updatePagination();
  92. expect(view.refresh.calledOnce).to.be.true;
  93. expect(App.db.setStartIndex.calledWith('mainConfigHistoryController', 10)).to.be.true;
  94. expect(App.db.setDisplayLength.called).to.be.false;
  95. expect(view.get('controller.paginationProps').findProperty('name', 'startIndex').value).to.equal(10);
  96. expect(view.get('controller.paginationProps').findProperty('name', 'displayLength').value).to.equal('50');
  97. });
  98. it('displayLength and startIndex are correct', function() {
  99. view.set('displayLength', '100');
  100. view.set('startIndex', 20);
  101. view.updatePagination();
  102. expect(view.refresh.calledOnce).to.be.true;
  103. expect(App.db.setStartIndex.calledWith('mainConfigHistoryController', 20)).to.be.true;
  104. expect(App.db.setDisplayLength.calledWith('mainConfigHistoryController', '100')).to.be.true;
  105. expect(view.get('controller.paginationProps').findProperty('name', 'startIndex').value).to.equal(20);
  106. expect(view.get('controller.paginationProps').findProperty('name', 'displayLength').value).to.equal('100');
  107. });
  108. it('displayLength and startIndex are null', function() {
  109. view.set('displayLength', null);
  110. view.set('startIndex', null);
  111. view.updatePagination();
  112. expect(view.refresh.calledOnce).to.be.true;
  113. expect(App.db.setStartIndex.called).to.be.false;
  114. expect(App.db.setDisplayLength.called).to.be.false;
  115. expect(view.get('controller.paginationProps').findProperty('name', 'startIndex').value).to.equal(20);
  116. expect(view.get('controller.paginationProps').findProperty('name', 'displayLength').value).to.equal('100');
  117. });
  118. });
  119. describe('#updateFilter()', function() {
  120. beforeEach(function () {
  121. sinon.stub(view, 'saveFilterConditions', Em.K);
  122. sinon.stub(view, 'refresh', Em.K);
  123. sinon.spy(view, 'updateFilter');
  124. });
  125. afterEach(function () {
  126. view.saveFilterConditions.restore();
  127. view.updateFilter.restore();
  128. view.refresh.restore();
  129. });
  130. it('filteringComplete is false', function() {
  131. this.clock = sinon.useFakeTimers();
  132. view.set('filteringComplete', false);
  133. view.updateFilter(1, '', 'string');
  134. expect(view.get('controller.resetStartIndex')).to.be.false;
  135. expect(view.saveFilterConditions.calledWith(1, '', 'string', false)).to.be.true;
  136. view.set('filteringComplete', true);
  137. this.clock.tick(view.get('filterWaitingTime'));
  138. expect(view.updateFilter.calledWith(1, '', 'string')).to.be.true;
  139. this.clock.restore();
  140. });
  141. it('filteringComplete is true', function() {
  142. view.set('filteringComplete', true);
  143. view.updateFilter(1, '', 'string');
  144. expect(view.get('controller.resetStartIndex')).to.be.true;
  145. expect(view.refresh.calledOnce).to.be.true;
  146. });
  147. });
  148. describe('#resetStartIndex()', function() {
  149. it('resetStartIndex is false and filteredCount is 0', function() {
  150. view.set('filteredCount', 0);
  151. view.set('controller.resetStartIndex', false);
  152. view.set('startIndex', 0);
  153. view.resetStartIndex();
  154. expect(view.get('startIndex')).to.equal(0);
  155. });
  156. it('resetStartIndex is true and filteredCount is 0', function() {
  157. view.set('filteredCount', 0);
  158. view.set('controller.resetStartIndex', true);
  159. view.set('startIndex', 0);
  160. view.resetStartIndex();
  161. expect(view.get('startIndex')).to.equal(0);
  162. });
  163. it('resetStartIndex is false and filteredCount is 5', function() {
  164. view.set('filteredCount', 5);
  165. view.set('controller.resetStartIndex', false);
  166. view.set('startIndex', 0);
  167. view.resetStartIndex();
  168. expect(view.get('startIndex')).to.equal(0);
  169. });
  170. it('resetStartIndex is true and filteredCount is 5', function() {
  171. view.set('controller.resetStartIndex', true);
  172. view.set('filteredCount', 5);
  173. view.set('startIndex', 0);
  174. view.resetStartIndex();
  175. expect(view.get('startIndex')).to.equal(1);
  176. });
  177. });
  178. });