@@ -11,42 +11,45 @@ const items = [
1111 { username : 'Yiorgos Avraamu' , registered : '2012/01/01' , role : 'Member' , status : 'Active' } ,
1212 {
1313 username : 'Friderik Dávid' ,
14- registered : '2012 /01/21' ,
14+ registered : '2011 /01/21' ,
1515 role : 'Staff' ,
1616 status : 'Active' ,
1717 _cellClasses : { registered : 'custom-cell-class' }
1818 } ,
1919]
20+ const customWrapper = createCustomWrapper ( )
2021
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+ ] ,
3133
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+ }
5053
5154describe ( ComponentName , ( ) => {
5255 it ( 'has a name' , ( ) => {
@@ -90,31 +93,36 @@ describe(ComponentName, () => {
9093 } )
9194 it ( 'correctly updates items' , ( ) => {
9295 //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 )
10499
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 } } )
109109 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 ( )
111114 } )
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' )
116121 expect ( firstUsername ( ) ) . toMatch ( 'Estavan' )
122+ localWrapper . setProps ( { tableFilter : { lazy : true } } )
117123 input . element . value = "Chetan"
124+ input . trigger ( 'input' )
125+ expect ( firstUsername ( ) ) . toMatch ( 'Estavan' )
118126 input . trigger ( 'change' )
119127 expect ( firstUsername ( ) ) . toMatch ( 'Chetan' )
120128 } )
@@ -128,10 +136,41 @@ describe(ComponentName, () => {
128136 } )
129137 expect ( customWrapper . vm . perPageItems ) . toBe ( 13 )
130138 } )
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+ } )
137176} )
0 commit comments