/
people.spec.js
206 lines (178 loc) · 7.25 KB
/
people.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
require('static/script/vendor/filtersortpage.js');
require('static/script/app/person.js');
describe ("Pagination Tests", function(){
var sut, models, first, second, third;
beforeEach(function(){
first = Ember.Object.create({id: 1, username: 'first'});
second = Ember.Object.create({id: 2, username: 'second'});
third = Ember.Object.create({id: 3, username: 'third'});
sut = PersonApp.PersonController.create();
sut.set("content", [first, second, third]);
});
it ("paginated content will return 2 items when itemsPerPage set to 2", function(){
sut.set('itemsPerPage', 2);
sut.set('selectedPage', 1);
var content = sut.get('paginatedContent');
expect(content.get('length')).toEqual(2);
});
it ("paginated content will return 3 items when itemsPerPage set to 3", function(){
sut.set('itemsPerPage', 3);
sut.set('selectedPage', 1);
var content = sut.get('paginatedContent');
expect(content.get('length')).toEqual(3);
});
it ("the first paginated model on the first page is at the zero index", function(){
sut.set('itemsPerPage', 2);
sut.set('selectedPage', 1);
var content = sut.get('paginatedContent');
expect(content.objectAt(0).get('id')).toEqual(1);
});
it ("the second paginated model on the first page is at the one index", function(){
sut.set('itemsPerPage', 2);
sut.set('selectedPage', 1);
var content = sut.get('paginatedContent');
expect(content.objectAt(1).get('id')).toEqual(2);
});
it ("the first paginated model on the second page is at the zero index", function(){
sut.set('itemsPerPage', 2);
sut.set('selectedPage', 2);
var content = sut.get('paginatedContent');
expect(content.objectAt(0).get('id')).toEqual(3);
});
it ("the third paginated model on the first page is legit when itemsPerPage set to 3", function(){
sut.set('itemsPerPage', 3);
sut.set('selectedPage', 1);
var content = sut.get('paginatedContent');
expect(content.objectAt(2).get('id')).toEqual(3);
});
it ("the paginated content is updated when a fourth model is added dynamically", function() {
sut.set('itemsPerPage', 2);
sut.set('selectedPage', 2);
var initial = sut.get('paginatedContent');
expect(initial.get('length')).toEqual(1);
var fourth = Ember.Object.create({id: 4, username: 'new_guy'});
sut.get('content').pushObject(fourth);
var content = sut.get('paginatedContent');
expect(content.get('length')).toEqual(2);
});
it ("the available pages is based on the page configuration", function(){
sut.set('itemsPerPage', 1);
sut.set('selectedPage', 1);
var available = sut.get('availablePages');
expect(available).toEqual(3);
});
it ("the available pages property is one when itemsPerPage is 3", function(){
sut.set('itemsPerPage', 3);
sut.set('selectedPage', 1);
var available = sut.get('availablePages');
expect(available).toEqual(1);
});
it ("the available pages is also based on the number of models in the array", function(){
sut.set('itemsPerPage', 2);
sut.set('selectedPage', 1);
var available = sut.get('availablePages');
expect(available).toEqual(2);
});
it ("the available pages property is updated when a fifth model is added dynamically", function() {
sut.set('itemsPerPage', 2);
sut.set('selectedPage', 1);
var initial = sut.get('availablePages');
expect(initial).toEqual(2);
var fourth = Ember.Object.create({id: 4, username: 'new_guy'});
var fifth = Ember.Object.create({id: 5, username: 'last_one'});
sut.get('content').pushObject(fourth);
sut.get('content').pushObject(fifth);
var available = sut.get('availablePages');
expect(available).toEqual(3);
});
it ("the previous page property returns page with id 1 when the selectedPage is 2", function(){
sut.set('itemsPerPage', 2);
sut.set('selectedPage', 2);
var prev = sut.get('prevPage');
expect(prev.get('id')).toEqual(1);
});
it ("the previous page property returns page with id 1 when the selectedPage is 1", function(){
sut.set('itemsPerPage', 2);
sut.set('selectedPage', 1);
var prev = sut.get('prevPage');
expect(prev.get('id')).toEqual(1);
});
it ("the previous page property is updated when new a new page is selected", function(){
sut.set('itemsPerPage', 1);
sut.set('selectedPage', 3);
var initial = sut.get('prevPage');
expect(initial.get('id')).toEqual(2);
sut.set('selectedPage', 2);
var prev = sut.get('prevPage');
expect(prev.get('id')).toEqual(1);
});
it ("the next page property returns page with id 2 when the selectedPage is 1", function(){
sut.set('itemsPerPage', 2);
sut.set('selectedPage', 1);
var next = sut.get('nextPage');
expect(next.get('id')).toEqual(2);
});
it ("the next page property returns page with id 2 when the selectedPage is 2", function(){
sut.set('itemsPerPage', 2);
sut.set('selectedPage', 2);
var next = sut.get('nextPage');
expect(next.get('id')).toEqual(2);
});
it ("the next page property is updated when new a new page is added", function(){
sut.set('itemsPerPage', 1);
sut.set('selectedPage', 3);
var initial = sut.get('nextPage');
expect(initial.get('id')).toEqual(3);
var fourth = Ember.Object.create({id: 4, username: 'new_guy'});
sut.get('content').pushObject(fourth);
var next = sut.get('nextPage');
expect(next.get('id')).toEqual(4);
});
it ("the next page property is updated when new a new page is selected", function(){
sut.set('itemsPerPage', 1);
sut.set('selectedPage', 1);
var initial = sut.get('nextPage');
expect(initial.get('id')).toEqual(2);
sut.set('selectedPage', 2);
var next = sut.get('nextPage');
expect(next.get('id')).toEqual(3);
});
it ("the current page defaults to 1", function(){
expect(sut.get('currentPage')).toEqual(1);
});
it ("the current page uses the selected page value", function(){
sut.set('selectedPage', 2);
expect(sut.get('currentPage')).toEqual(2);
});
it ("the current page will parseInt the selectedPage value", function(){
sut.set('selectedPage', '010');
expect(sut.get('currentPage')).toEqual(10);
});
it ("will return 3 pages when itemsPerPage is set to 1", function() {
sut.set('itemsPerPage', 1);
sut.set('selectedPage', 1);
var pages = sut.get('pages');
expect(pages.get('length')).toEqual(3);
expect(pages.objectAt(0)).toEqual({'page_id':'1'});
expect(pages.objectAt(1)).toEqual({'page_id':'2'});
expect(pages.objectAt(2)).toEqual({'page_id':'3'});
});
it ("will return 2 pages when itemsPerPage is set to 2", function() {
sut.set('itemsPerPage', 2);
sut.set('selectedPage', 1);
var pages = sut.get('pages');
expect(pages.get('length')).toEqual(2);
expect(pages.objectAt(0)).toEqual({'page_id':'1'});
expect(pages.objectAt(1)).toEqual({'page_id':'2'});
});
it ("will add another page when a fourth item is added dynamically", function() {
sut.set('itemsPerPage', 1);
sut.set('selectedPage', 1);
var initial = sut.get('pages');
expect(initial.get('length')).toEqual(3);
var fourth = Ember.Object.create({id: 4, username: 'new_guy'});
sut.get('content').pushObject(fourth);
var pages = sut.get('pages');
expect(pages.get('length')).toEqual(4);
});
});