1
1
///<reference path="../node_modules/@types/jasmine/index.d.ts"/>
2
2
import { SimpleChange , Component } from "@angular/core" ;
3
- import { DataTable , PageEvent } from "./DataTable" ;
3
+ import { DataTable , PageEvent , SortEvent } from "./DataTable" ;
4
4
import { TestBed , ComponentFixture } from "@angular/core/testing" ;
5
5
import { By } from "@angular/platform-browser" ;
6
6
import * as _ from "lodash" ;
@@ -13,13 +13,13 @@ class TestComponent {
13
13
14
14
describe ( "DataTable directive tests" , ( ) => {
15
15
let datatable : DataTable ;
16
- let datatableFixture : ComponentFixture < DataTable > ;
16
+ let fixture : ComponentFixture < TestComponent > ;
17
17
18
18
beforeEach ( ( ) => {
19
19
TestBed . configureTestingModule ( {
20
20
declarations : [ DataTable , TestComponent ]
21
21
} ) ;
22
- let fixture = TestBed . createComponent ( TestComponent ) ;
22
+ fixture = TestBed . createComponent ( TestComponent ) ;
23
23
datatable = fixture . debugElement . query ( By . directive ( DataTable ) ) . injector . get ( DataTable ) as DataTable ;
24
24
25
25
datatable . inputData = [
@@ -123,6 +123,117 @@ describe("DataTable directive tests", ()=> {
123
123
expect ( datatable . getSort ( ) ) . toEqual ( { sortBy : "id" , sortOrder : "desc" } ) ;
124
124
} ) ;
125
125
126
+ it ( "should sort data after sorting input value changed" , ( ) => {
127
+ datatable . ngDoCheck ( ) ;
128
+ datatable . sortBy = "id" ;
129
+ datatable . sortOrder = "asc" ;
130
+ datatable . ngOnChanges ( {
131
+ sortBy : new SimpleChange ( null , datatable . sortBy ) ,
132
+ sortOrder : new SimpleChange ( null , datatable . sortOrder )
133
+ } ) ;
134
+ datatable . ngDoCheck ( ) ;
135
+ expect ( datatable . data ) . toEqual ( [
136
+ { id : 1 , name : 'Duck' } ,
137
+ { id : 2 , name : 'ącki' } ,
138
+ { id : 3 , name : 'banana' } ,
139
+ { id : 4 , name : 'Ananas' } ,
140
+ { id : 5 , name : 'Ðrone' }
141
+ ] )
142
+ } ) ;
143
+
144
+ it ( "should fire onSortChange event after sorting input value changed" , ( done ) => {
145
+ datatable . onSortChange . subscribe ( ( event : SortEvent ) => {
146
+ expect ( event . sortBy ) . toEqual ( "id" ) ;
147
+ expect ( event . sortOrder ) . toEqual ( "desc" ) ;
148
+ done ( ) ;
149
+ } ) ;
150
+ datatable . ngDoCheck ( ) ;
151
+ datatable . sortBy = "id" ;
152
+ datatable . sortOrder = "desc" ;
153
+ datatable . ngOnChanges ( {
154
+ sortBy : new SimpleChange ( null , datatable . sortBy ) ,
155
+ sortOrder : new SimpleChange ( null , datatable . sortOrder )
156
+ } ) ;
157
+ datatable . ngDoCheck ( ) ;
158
+
159
+ } ) ;
160
+
161
+ it ( "should set sortOrder to 'asc' if not provided" , ( done ) => {
162
+ datatable . onSortChange . subscribe ( ( event : SortEvent ) => {
163
+ expect ( event . sortBy ) . toEqual ( "id" ) ;
164
+ expect ( event . sortOrder ) . toEqual ( "asc" ) ;
165
+ done ( ) ;
166
+ } ) ;
167
+ datatable . ngDoCheck ( ) ;
168
+ datatable . sortBy = "id" ;
169
+ datatable . ngOnChanges ( {
170
+ sortBy : new SimpleChange ( null , datatable . sortBy )
171
+ } ) ;
172
+ datatable . ngDoCheck ( ) ;
173
+ expect ( datatable . sortOrder ) . toEqual ( "asc" ) ;
174
+ } ) ;
175
+
176
+ it ( "should set sortOrder to 'asc' if provided something else than 'asc' or 'desc'" , ( done ) => {
177
+ datatable . onSortChange . subscribe ( ( event : SortEvent ) => {
178
+ expect ( event . sortBy ) . toEqual ( "id" ) ;
179
+ expect ( event . sortOrder ) . toEqual ( "asc" ) ;
180
+ done ( ) ;
181
+ } ) ;
182
+ datatable . ngDoCheck ( ) ;
183
+ datatable . sortBy = "id" ;
184
+ datatable . sortOrder = "bulb" ;
185
+ datatable . ngOnChanges ( {
186
+ sortBy : new SimpleChange ( null , datatable . sortBy ) ,
187
+ sortOrder : new SimpleChange ( null , datatable . sortOrder )
188
+ } ) ;
189
+ datatable . ngDoCheck ( ) ;
190
+ expect ( datatable . sortOrder ) . toEqual ( "asc" ) ;
191
+ expect ( datatable . data ) . toEqual ( [
192
+ { id : 1 , name : 'Duck' } ,
193
+ { id : 2 , name : 'ącki' } ,
194
+ { id : 3 , name : 'banana' } ,
195
+ { id : 4 , name : 'Ananas' } ,
196
+ { id : 5 , name : 'Ðrone' }
197
+ ] ) ;
198
+ } ) ;
199
+
200
+ it ( "shouldn't change order when only order provided" , ( done ) => {
201
+ done ( ) ;
202
+ datatable . onSortChange . subscribe ( ( ) => {
203
+ done . fail ( "OnSortChange shouldn't been fired" ) ;
204
+ } ) ;
205
+ datatable . ngDoCheck ( ) ;
206
+ datatable . sortOrder = "desc" ;
207
+ datatable . ngOnChanges ( { sortOrder : new SimpleChange ( null , datatable . sortOrder ) } ) ;
208
+ datatable . ngDoCheck ( ) ;
209
+ expect ( datatable . data ) . toEqual ( datatable . inputData ) ;
210
+ } ) ;
211
+
212
+ it ( "should call output event when sorting changed" , ( done ) => {
213
+ datatable . ngDoCheck ( ) ;
214
+ datatable . sortByChange . switchMap ( ( sortBy : string ) => {
215
+ expect ( sortBy ) . toEqual ( "id" ) ;
216
+ return datatable . sortOrderChange ;
217
+ } ) . subscribe ( ( sortOrder : string ) => {
218
+ expect ( sortOrder ) . toEqual ( "desc" ) ;
219
+ done ( ) ;
220
+ } ) ;
221
+
222
+ datatable . setSort ( "id" , "desc" ) ;
223
+ } ) ;
224
+
225
+ it ( "shouldn't call output event when sortOrder fixed" , ( done ) => {
226
+ datatable . ngDoCheck ( ) ;
227
+ datatable . sortOrderChange . subscribe ( ( ) => {
228
+ done . fail ( "Shouldn't call sortOrderChange" ) ;
229
+ } ) ;
230
+ done ( ) ;
231
+ datatable . sortOrder = "bulb" ;
232
+ datatable . ngOnChanges ( { sortOrder : new SimpleChange ( null , datatable . sortOrder ) } ) ;
233
+ datatable . ngDoCheck ( ) ;
234
+ } ) ;
235
+ // Wywołanie outputa gdy zmiana z innej strony
236
+
126
237
it ( "shouldn't refresh data when set page with same settings" , ( ) => {
127
238
datatable . setSort ( "name" , "asc" ) ;
128
239
datatable . ngDoCheck ( ) ;
0 commit comments