@@ -3,64 +3,89 @@ import { ClassObjectSink, ToggleClassSink } from './class-sink';
33
44describe ( 'Class Sink' , ( ) => {
55
6- describe ( 'Given a class object' , ( ) => {
7-
8- it ( 'sets classes for truthy attributes on sink' , ( ) => {
9- const el = MockElement ( ) ;
10- const sink = ClassObjectSink ( < HTMLElement > el ) ;
11-
12- sink ( {
13- class1 : true ,
14- class2 : 1 ,
15- class3 : 'yes!' ,
16- } ) ;
17- expect ( el . className ) . toContain ( 'class1' ) ;
18- expect ( el . className ) . toContain ( 'class2' ) ;
19- expect ( el . className ) . toContain ( 'class3' ) ;
20- } ) ;
21-
22- it ( 'clears classes for falsy attributes on sink' , ( ) => {
23- const el = MockElement ( { className : 'class1 class2 class3' } ) ;
24- const sink = ClassObjectSink ( < HTMLElement > el ) ;
25- expect ( el . className ) . toContain ( 'class1' ) ;
26- expect ( el . className ) . toContain ( 'class2' ) ;
27- expect ( el . className ) . toContain ( 'class3' ) ;
28-
29- sink ( {
30- class1 : false ,
31- class2 : 0 ,
32- class3 : '' ,
33- } ) ;
34- expect ( el . className ) . not . toContain ( 'class1' ) ;
35- expect ( el . className ) . not . toContain ( 'class2' ) ;
36- expect ( el . className ) . not . toContain ( 'class3' ) ;
37- } ) ;
38-
39- } ) ;
6+ describe ( 'Given a class string' , ( ) => {
7+
8+ it ( 'sets className on sink' , ( ) => {
9+ const el = MockElement ( { className : 'class1 class2 class3' } ) ;
10+ const sink = ClassObjectSink ( < HTMLElement > el ) ;
11+
12+ sink ( 'class1' ) ;
13+ expect ( el . className ) . toEqual ( 'class1' ) ;
14+ } ) ;
15+
16+ it ( 'clears classes for empty strings on sink' , ( ) => {
17+ const el = MockElement ( { className : 'class1 class2 class3' } ) ;
18+ const sink = ClassObjectSink ( < HTMLElement > el ) ;
19+
20+ sink ( {
21+ class1 : false ,
22+ class2 : 0 ,
23+ class3 : '' ,
24+ } ) ;
25+ expect ( el . className ) . toEqual ( '' ) ;
26+ } ) ;
27+
28+ } ) ;
29+
30+
31+ describe ( 'Given a class object' , ( ) => {
32+
33+ it ( 'sets classes for truthy attributes on sink' , ( ) => {
34+ const el = MockElement ( ) ;
35+ const sink = ClassObjectSink ( < HTMLElement > el ) ;
36+
37+ sink ( {
38+ class1 : true ,
39+ class2 : 1 ,
40+ class3 : 'yes!' ,
41+ } ) ;
42+ expect ( el . className ) . toContain ( 'class1' ) ;
43+ expect ( el . className ) . toContain ( 'class2' ) ;
44+ expect ( el . className ) . toContain ( 'class3' ) ;
45+ } ) ;
46+
47+ it ( 'clears classes for falsy attributes on sink' , ( ) => {
48+ const el = MockElement ( { className : 'class1 class2 class3' } ) ;
49+ const sink = ClassObjectSink ( < HTMLElement > el ) ;
50+ expect ( el . className ) . toContain ( 'class1' ) ;
51+ expect ( el . className ) . toContain ( 'class2' ) ;
52+ expect ( el . className ) . toContain ( 'class3' ) ;
53+
54+ sink ( {
55+ class1 : false ,
56+ class2 : 0 ,
57+ class3 : '' ,
58+ } ) ;
59+ expect ( el . className ) . not . toContain ( 'class1' ) ;
60+ expect ( el . className ) . not . toContain ( 'class2' ) ;
61+ expect ( el . className ) . not . toContain ( 'class3' ) ;
62+ } ) ;
63+
64+ } ) ;
4065
4166} ) ;
4267
4368describe ( 'Class Toggle Sink' , ( ) => {
4469
45- describe ( 'Given a class object' , ( ) => {
70+ describe ( 'Given a class object' , ( ) => {
4671
47- it ( 'sets classes for truthy value on sink' , ( ) => {
48- const el = MockElement ( ) ;
49- const sink = ToggleClassSink ( 'class1' ) ( < HTMLElement > el ) ;
72+ it ( 'sets classes for truthy value on sink' , ( ) => {
73+ const el = MockElement ( ) ;
74+ const sink = ToggleClassSink ( 'class1' ) ( < HTMLElement > el ) ;
5075
51- sink ( true ) ;
52- expect ( el . className ) . toContain ( 'class1' ) ;
53- } ) ;
76+ sink ( true ) ;
77+ expect ( el . className ) . toContain ( 'class1' ) ;
78+ } ) ;
5479
55- it ( 'clears classes for falsy values on sink' , ( ) => {
56- const el = MockElement ( { className : 'class1' } ) ;
57- const sink = ToggleClassSink ( 'class1' ) ( < HTMLElement > el ) ;
80+ it ( 'clears classes for falsy values on sink' , ( ) => {
81+ const el = MockElement ( { className : 'class1' } ) ;
82+ const sink = ToggleClassSink ( 'class1' ) ( < HTMLElement > el ) ;
5883
59- sink ( false ) ;
60- expect ( el . className ) . not . toContain ( 'class1' ) ;
61- } ) ;
84+ sink ( false ) ;
85+ expect ( el . className ) . not . toContain ( 'class1' ) ;
86+ } ) ;
6287
63- } ) ;
88+ } ) ;
6489
6590} ) ;
6691
0 commit comments