@@ -11,42 +11,45 @@ const items = [
11
11
{ username : 'Yiorgos Avraamu' , registered : '2012/01/01' , role : 'Member' , status : 'Active' } ,
12
12
{
13
13
username : 'Friderik Dávid' ,
14
- registered : '2012 /01/21' ,
14
+ registered : '2011 /01/21' ,
15
15
role : 'Staff' ,
16
16
status : 'Active' ,
17
17
_cellClasses : { registered : 'custom-cell-class' }
18
18
} ,
19
19
]
20
+ const customWrapper = createCustomWrapper ( )
20
21
21
- const customWrapper = mount ( Component , {
22
- propsData : {
23
- items,
24
- fields : [
25
- { key : 'username' , _style :'width:40%' , _classes : 'user-custom-class' } ,
26
- 'registered' ,
27
- { key : 'role' , _style :'width:20%;' } ,
28
- { key : 'status' , _style :'width:20%;' } ,
29
- { key : 'show_details' , label :'' , _style :'width:1%' , sorter : false , filter : false } ,
30
- ] ,
22
+ function createCustomWrapper ( ) {
23
+ return mount ( Component , {
24
+ propsData : {
25
+ items,
26
+ fields : [
27
+ { key : 'username' , _style :'width:40%' , _classes : 'user-custom-class' } ,
28
+ 'registered' ,
29
+ { key : 'role' , _style :'width:20%;' } ,
30
+ { key : 'status' , _style :'width:20%;' } ,
31
+ { key : 'show_details' , label :'' , _style :'width:1%' , sorter : false , filter : false } ,
32
+ ] ,
31
33
32
- tableFilter : true ,
33
- itemsPerPageSelect : true ,
34
- addTableClasses : 'additional-table-class' ,
35
- sorter : true ,
36
- small : false ,
37
- dark : true ,
38
- striped : true ,
39
- fixed : false ,
40
- hover : true ,
41
- border : true ,
42
- outlined : true ,
43
- columnFilter : true ,
44
- footer : true ,
45
- sorterValue : { column : 'username' , asc : false } ,
46
- columnFilterValue : { registered : '2012' , 'non_existing' : 'smh' } ,
47
- pagination : true
48
- }
49
- } )
34
+ tableFilter : true ,
35
+ itemsPerPageSelect : true ,
36
+ addTableClasses : 'additional-table-class' ,
37
+ sorter : true ,
38
+ small : false ,
39
+ dark : true ,
40
+ striped : true ,
41
+ fixed : false ,
42
+ hover : true ,
43
+ border : true ,
44
+ outlined : true ,
45
+ columnFilter : true ,
46
+ footer : true ,
47
+ sorterValue : { column : 'username' , asc : false } ,
48
+ columnFilterValue : { registered : '2012' , 'non_existing' : 'smh' } ,
49
+ pagination : true
50
+ }
51
+ } )
52
+ }
50
53
51
54
describe ( ComponentName , ( ) => {
52
55
it ( 'has a name' , ( ) => {
@@ -90,31 +93,36 @@ describe(ComponentName, () => {
90
93
} )
91
94
it ( 'correctly updates items' , ( ) => {
92
95
//test if watcher is not fired by coverage
93
- customWrapper . setProps ( { items : items . slice ( ) } )
94
- expect ( customWrapper . vm . sortedItems . length ) . toBe ( 5 )
95
-
96
- const newItems = items . slice ( 0 , 4 )
97
- customWrapper . setProps ( { items : newItems } )
98
- expect ( customWrapper . vm . sortedItems . length ) . toBe ( 4 )
99
- } )
100
- it ( 'triggers proper events on column input change' , ( ) => {
101
- const input = customWrapper . findAll ( 'tr' ) . at ( 1 ) . find ( 'input' )
102
- const changeEmmited = ( ) => customWrapper . emitted ( ) [ 'update:column-filter-value' ]
103
- const inputEmmited = ( ) => customWrapper . emitted ( ) [ 'column-filter-input' ]
96
+ const localWrapper = createCustomWrapper ( )
97
+ localWrapper . setProps ( { items : items . slice ( ) } )
98
+ expect ( localWrapper . vm . sortedItems . length ) . toBe ( 4 )
104
99
105
- expect ( changeEmmited ( ) ) . not . toBeTruthy ( )
106
- expect ( inputEmmited ( ) ) . not . toBeTruthy ( )
107
- input . trigger ( 'change' )
108
- expect ( changeEmmited ( ) ) . toBeTruthy ( )
100
+ const newItems = items . slice ( 0 , 2 )
101
+ localWrapper . setProps ( { items : newItems } )
102
+ expect ( localWrapper . vm . sortedItems . length ) . toBe ( 2 )
103
+ } )
104
+ it ( 'updates column filter on events depending on lazy modifier' , ( ) => {
105
+ const localWrapper = createCustomWrapper ( )
106
+ const input = localWrapper . findAll ( 'tr' ) . at ( 1 ) . find ( 'input' )
107
+ const updateEmmited = ( ) => localWrapper . emitted ( ) [ 'update:column-filter-value' ]
108
+ localWrapper . setProps ( { columnFilter : { lazy : true } } )
109
109
input . trigger ( 'input' )
110
- expect ( inputEmmited ( ) ) . toBeTruthy ( )
110
+ expect ( updateEmmited ( ) ) . not . toBeTruthy ( )
111
+ localWrapper . setProps ( { columnFilter : true } )
112
+ input . trigger ( 'input' )
113
+ expect ( updateEmmited ( ) ) . toBeTruthy ( )
111
114
} )
112
- it ( 'correctly filter by table filter after input or change event' , ( ) => {
113
- const input = customWrapper . find ( 'input' )
114
- const firstUsername = ( ) => customWrapper . vm . sortedItems [ 0 ] . username
115
- input . setValue ( 'Estavan' )
115
+ it ( 'updates table filter on events depending on lazy modifier' , ( ) => {
116
+ const localWrapper = createCustomWrapper ( )
117
+ const input = localWrapper . find ( 'input' )
118
+ const firstUsername = ( ) => localWrapper . vm . sortedItems [ 0 ] . username
119
+ input . element . value = "Estavan"
120
+ input . trigger ( 'input' )
116
121
expect ( firstUsername ( ) ) . toMatch ( 'Estavan' )
122
+ localWrapper . setProps ( { tableFilter : { lazy : true } } )
117
123
input . element . value = "Chetan"
124
+ input . trigger ( 'input' )
125
+ expect ( firstUsername ( ) ) . toMatch ( 'Estavan' )
118
126
input . trigger ( 'change' )
119
127
expect ( firstUsername ( ) ) . toMatch ( 'Chetan' )
120
128
} )
@@ -128,10 +136,41 @@ describe(ComponentName, () => {
128
136
} )
129
137
expect ( customWrapper . vm . perPageItems ) . toBe ( 13 )
130
138
} )
131
- // it('Sets table filter data correctly', () => {
132
- // customWrapper.setProps({
133
- // tableFilter: { label: 'label'}
134
- // })
135
- // expect(customWrapper.vm.tableFilterData.label).toBe('label')
136
- // })
139
+ it ( 'Disable component sorting and filtering when using \'external\' keys' , ( ) => {
140
+ const localWrapper = createCustomWrapper ( )
141
+ localWrapper . setProps ( {
142
+ tableFilterValue : 'Yiorgos'
143
+ } )
144
+ expect ( localWrapper . vm . sortedItems . length ) . toBe ( 1 )
145
+ localWrapper . setProps ( {
146
+ tableFilter : { external : true }
147
+ } )
148
+ expect ( localWrapper . vm . sortedItems . length ) . toBe ( 4 )
149
+
150
+ localWrapper . setProps ( {
151
+ columnFilter : { external : true } ,
152
+ } )
153
+ expect ( localWrapper . vm . sortedItems . length ) . toBe ( 5 )
154
+
155
+ expect ( localWrapper . vm . sortedItems [ 0 ] . username ) . toBe ( 'Yiorgos Avraamu' )
156
+ localWrapper . setProps ( {
157
+ sorter : { external : true }
158
+ } )
159
+ expect ( localWrapper . vm . sortedItems [ 0 ] . username ) . toBe ( 'Estavan Lykos' )
160
+ } )
161
+ it ( 'Sorter reset mechanism is working properly' , ( ) => {
162
+ const localWrapper = createCustomWrapper ( )
163
+ const click = ( clickCount = 1 ) => {
164
+ for ( let i = 0 ; i < clickCount ; i ++ ) {
165
+ localWrapper . find ( 'tr' ) . findAll ( 'th' ) . at ( 2 ) . trigger ( 'click' )
166
+ }
167
+ }
168
+ localWrapper . setProps ( {
169
+ sorter : { resetable : true }
170
+ } )
171
+ click ( 3 )
172
+ expect ( localWrapper . vm . sorterState . column ) . toBe ( undefined )
173
+ click ( 2 )
174
+ expect ( localWrapper . vm . sorterState . asc ) . toBe ( false )
175
+ } )
137
176
} )
0 commit comments