@@ -2,47 +2,53 @@ import defaultSortCompare from './default-sort-compare'
22
33describe ( 'table/helpers/default-sort-compare' , ( ) => {
44 it ( 'sorts numbers correctly' , async ( ) => {
5- expect ( defaultSortCompare ( { a : 1 } , { a : 2 } , 'a' ) ) . toBe ( - 1 )
6- expect ( defaultSortCompare ( { a : 2 } , { a : 1 } , 'a' ) ) . toBe ( 1 )
7- expect ( defaultSortCompare ( { a : 1 } , { a : 1 } , 'a' ) ) . toBe ( 0 )
8- expect ( defaultSortCompare ( { a : - 1 } , { a : 1 } , 'a' ) ) . toBe ( - 1 )
9- expect ( defaultSortCompare ( { a : 1 } , { a : - 1 } , 'a' ) ) . toBe ( 1 )
10- expect ( defaultSortCompare ( { a : 0 } , { a : 0 } , 'a' ) ) . toBe ( 0 )
11- expect ( defaultSortCompare ( { a : 1.234 } , { a : 1.567 } , 'a' ) ) . toBe ( - 1 )
12- expect ( defaultSortCompare ( { a : 1.561 } , { a : 1.234 } , 'a' ) ) . toBe ( 1 )
5+ const options = { sortBy : 'a' }
6+ expect ( defaultSortCompare ( { a : 1 } , { a : 2 } , options ) ) . toBe ( - 1 )
7+ expect ( defaultSortCompare ( { a : 2 } , { a : 1 } , options ) ) . toBe ( 1 )
8+ expect ( defaultSortCompare ( { a : 1 } , { a : 1 } , options ) ) . toBe ( 0 )
9+ expect ( defaultSortCompare ( { a : - 1 } , { a : 1 } , options ) ) . toBe ( - 1 )
10+ expect ( defaultSortCompare ( { a : 1 } , { a : - 1 } , options ) ) . toBe ( 1 )
11+ expect ( defaultSortCompare ( { a : 0 } , { a : 0 } , options ) ) . toBe ( 0 )
12+ expect ( defaultSortCompare ( { a : 1.234 } , { a : 1.567 } , options ) ) . toBe ( - 1 )
13+ expect ( defaultSortCompare ( { a : 1.561 } , { a : 1.234 } , options ) ) . toBe ( 1 )
1314 } )
1415
1516 it ( 'sorts dates correctly' , async ( ) => {
1617 const date1 = { a : new Date ( 2020 , 1 , 1 ) }
1718 const date2 = { a : new Date ( 1999 , 11 , 31 ) }
1819 const date3 = { a : new Date ( 1999 , 1 , 1 ) }
1920 const date4 = { a : new Date ( 1999 , 1 , 1 , 12 , 12 , 12 , 12 ) }
21+ const options = { sortBy : 'a' }
2022
21- expect ( defaultSortCompare ( date1 , date2 , 'a' ) ) . toBe ( 1 )
22- expect ( defaultSortCompare ( date1 , date1 , 'a' ) ) . toBe ( 0 )
23- expect ( defaultSortCompare ( date2 , date1 , 'a' ) ) . toBe ( - 1 )
24- expect ( defaultSortCompare ( date2 , date3 , 'a' ) ) . toBe ( 1 )
25- expect ( defaultSortCompare ( date3 , date2 , 'a' ) ) . toBe ( - 1 )
26- expect ( defaultSortCompare ( date3 , date4 , 'a' ) ) . toBe ( - 1 )
27- expect ( defaultSortCompare ( date4 , date3 , 'a' ) ) . toBe ( 1 )
28- expect ( defaultSortCompare ( date4 , date4 , 'a' ) ) . toBe ( 0 )
23+ expect ( defaultSortCompare ( date1 , date2 , options ) ) . toBe ( 1 )
24+ expect ( defaultSortCompare ( date1 , date1 , options ) ) . toBe ( 0 )
25+ expect ( defaultSortCompare ( date2 , date1 , options ) ) . toBe ( - 1 )
26+ expect ( defaultSortCompare ( date2 , date3 , options ) ) . toBe ( 1 )
27+ expect ( defaultSortCompare ( date3 , date2 , options ) ) . toBe ( - 1 )
28+ expect ( defaultSortCompare ( date3 , date4 , options ) ) . toBe ( - 1 )
29+ expect ( defaultSortCompare ( date4 , date3 , options ) ) . toBe ( 1 )
30+ expect ( defaultSortCompare ( date4 , date4 , options ) ) . toBe ( 0 )
2931 } )
3032
3133 it ( 'sorts strings correctly' , async ( ) => {
34+ const options = { sortBy : 'a' }
35+
3236 // Note: string comparisons are locale based
33- expect ( defaultSortCompare ( { a : 'a' } , { a : 'b' } , 'a' ) ) . toBe ( - 1 )
34- expect ( defaultSortCompare ( { a : 'b' } , { a : 'a' } , 'a' ) ) . toBe ( 1 )
35- expect ( defaultSortCompare ( { a : 'a' } , { a : 'a' } , 'a' ) ) . toBe ( 0 )
36- expect ( defaultSortCompare ( { a : 'a' } , { a : 'aaa' } , 'a' ) ) . toBe ( - 1 )
37- expect ( defaultSortCompare ( { a : 'aaa' } , { a : 'a' } , 'a' ) ) . toBe ( 1 )
37+ expect ( defaultSortCompare ( { a : 'a' } , { a : 'b' } , options ) ) . toBe ( - 1 )
38+ expect ( defaultSortCompare ( { a : 'b' } , { a : 'a' } , options ) ) . toBe ( 1 )
39+ expect ( defaultSortCompare ( { a : 'a' } , { a : 'a' } , options ) ) . toBe ( 0 )
40+ expect ( defaultSortCompare ( { a : 'a' } , { a : 'aaa' } , options ) ) . toBe ( - 1 )
41+ expect ( defaultSortCompare ( { a : 'aaa' } , { a : 'a' } , options ) ) . toBe ( 1 )
3842 } )
3943
4044 it ( 'sorts by nested key correctly' , async ( ) => {
45+ const options = { sortBy : 'a.b' }
46+
4147 // Note: string comparisons are locale based
42- expect ( defaultSortCompare ( { a : { b : 'a' } } , { a : { b : 'b' } } , 'a.b' ) ) . toBe ( - 1 )
43- expect ( defaultSortCompare ( { a : { b : 'b' } } , { a : { b : 'a' } } , 'a.b' ) ) . toBe ( 1 )
44- expect ( defaultSortCompare ( { a : { b : 'a' } } , { a : { b : 'a' } } , 'a.b' ) ) . toBe ( 0 )
45- expect ( defaultSortCompare ( { a : { b : 'a' } } , { a : { b : 'aaa' } } , 'a.b' ) ) . toBe ( - 1 )
48+ expect ( defaultSortCompare ( { a : { b : 'a' } } , { a : { b : 'b' } } , options ) ) . toBe ( - 1 )
49+ expect ( defaultSortCompare ( { a : { b : 'b' } } , { a : { b : 'a' } } , options ) ) . toBe ( 1 )
50+ expect ( defaultSortCompare ( { a : { b : 'a' } } , { a : { b : 'a' } } , options ) ) . toBe ( 0 )
51+ expect ( defaultSortCompare ( { a : { b : 'a' } } , { a : { b : 'aaa' } } , options ) ) . toBe ( - 1 )
4652 } )
4753
4854 it ( 'sorts using provided formatter correctly' , async ( ) => {
@@ -53,34 +59,37 @@ describe('table/helpers/default-sort-compare', () => {
5359 . reverse ( )
5460 . join ( '' )
5561 }
56- expect ( defaultSortCompare ( { a : 'ab' } , { a : 'b' } , 'a' ) ) . toBe ( - 1 )
57- expect ( defaultSortCompare ( { a : 'ab' } , { a : 'b' } , 'a' , false , formatter ) ) . toBe ( 1 )
62+
63+ expect ( defaultSortCompare ( { a : 'ab' } , { a : 'b' } , { sortBy : 'a' } ) ) . toBe ( - 1 )
64+ expect ( defaultSortCompare ( { a : 'ab' } , { a : 'b' } , { sortBy : 'a' , formatter } ) ) . toBe ( 1 )
5865 } )
5966
6067 it ( 'sorts nulls always last when sor-null-lasst is set' , async ( ) => {
6168 const x = { a : 'ab' }
6269 const y = { a : null }
6370 const z = { }
6471 const w = { a : '' }
65- const u = undefined
72+ const options = { sortBy : 'a' , localeOptions : { numeric : true } }
73+ const optionsNullLast = { ...options , nullLast : true }
6674
6775 // Without nullLast set (false)
68- expect ( defaultSortCompare ( x , y , 'a' , u , u , { numeric : true } , u , false ) ) . toBe ( 1 )
69- expect ( defaultSortCompare ( y , x , 'a' , u , u , { numeric : true } , u , false ) ) . toBe ( - 1 )
70- expect ( defaultSortCompare ( x , z , 'a' , u , u , { numeric : true } , u , false ) ) . toBe ( 1 )
71- expect ( defaultSortCompare ( z , x , 'a' , u , u , { numeric : true } , u , false ) ) . toBe ( - 1 )
72- expect ( defaultSortCompare ( y , z , 'a' , u , u , { numeric : true } , u , false ) ) . toBe ( 0 )
73- expect ( defaultSortCompare ( z , y , 'a' , u , u , { numeric : true } , u , false ) ) . toBe ( 0 )
74- expect ( defaultSortCompare ( x , w , 'a' , u , u , { numeric : true } , u , false ) ) . toBe ( 1 )
75- expect ( defaultSortCompare ( w , x , 'a' , u , u , { numeric : true } , u , false ) ) . toBe ( - 1 )
76+ expect ( defaultSortCompare ( x , y , options ) ) . toBe ( 1 )
77+ expect ( defaultSortCompare ( y , x , options ) ) . toBe ( - 1 )
78+ expect ( defaultSortCompare ( x , z , options ) ) . toBe ( 1 )
79+ expect ( defaultSortCompare ( z , x , options ) ) . toBe ( - 1 )
80+ expect ( defaultSortCompare ( y , z , options ) ) . toBe ( 0 )
81+ expect ( defaultSortCompare ( z , y , options ) ) . toBe ( 0 )
82+ expect ( defaultSortCompare ( x , w , options ) ) . toBe ( 1 )
83+ expect ( defaultSortCompare ( w , x , options ) ) . toBe ( - 1 )
84+
7685 // With nullLast set
77- expect ( defaultSortCompare ( x , y , 'a' , u , u , { numeric : true } , u , true ) ) . toBe ( - 1 )
78- expect ( defaultSortCompare ( y , x , 'a' , u , u , { numeric : true } , u , true ) ) . toBe ( 1 )
79- expect ( defaultSortCompare ( x , z , 'a' , u , u , { numeric : true } , u , true ) ) . toBe ( - 1 )
80- expect ( defaultSortCompare ( z , x , 'a' , u , u , { numeric : true } , u , true ) ) . toBe ( 1 )
81- expect ( defaultSortCompare ( y , z , 'a' , u , u , { numeric : true } , u , true ) ) . toBe ( 0 )
82- expect ( defaultSortCompare ( z , y , 'a' , u , u , { numeric : true } , u , true ) ) . toBe ( 0 )
83- expect ( defaultSortCompare ( x , w , 'a' , u , u , { numeric : true } , u , true ) ) . toBe ( - 1 )
84- expect ( defaultSortCompare ( w , x , 'a' , u , u , { numeric : true } , u , true ) ) . toBe ( 1 )
86+ expect ( defaultSortCompare ( x , y , optionsNullLast ) ) . toBe ( - 1 )
87+ expect ( defaultSortCompare ( y , x , optionsNullLast ) ) . toBe ( 1 )
88+ expect ( defaultSortCompare ( x , z , optionsNullLast ) ) . toBe ( - 1 )
89+ expect ( defaultSortCompare ( z , x , optionsNullLast ) ) . toBe ( 1 )
90+ expect ( defaultSortCompare ( y , z , optionsNullLast ) ) . toBe ( 0 )
91+ expect ( defaultSortCompare ( z , y , optionsNullLast ) ) . toBe ( 0 )
92+ expect ( defaultSortCompare ( x , w , optionsNullLast ) ) . toBe ( - 1 )
93+ expect ( defaultSortCompare ( w , x , optionsNullLast ) ) . toBe ( 1 )
8594 } )
8695} )
0 commit comments