@@ -65,15 +65,36 @@ describe('class directive', () => {
65
65
} ) ;
66
66
} ) ;
67
67
68
- it ( 'should keep existing class selector ' , ( ) => {
68
+ it ( 'should NOT keep the existing class' , ( ) => {
69
69
fixture = createTestComponent ( `
70
70
<div class="existing-class" ngClass.xs="xs-class">
71
71
</div>
72
72
` ) ;
73
73
74
74
expectNativeEl ( fixture ) . toHaveCssClass ( 'existing-class' ) ;
75
+
75
76
activateMediaQuery ( 'xs' ) ;
76
77
expectNativeEl ( fixture ) . not . toHaveCssClass ( 'existing-class' ) ;
78
+ expectNativeEl ( fixture ) . toHaveCssClass ( 'xs-class' ) ;
79
+
80
+ activateMediaQuery ( 'lg' ) ;
81
+ expectNativeEl ( fixture ) . toHaveCssClass ( 'existing-class' ) ;
82
+ expectNativeEl ( fixture ) . not . toHaveCssClass ( 'xs-class' ) ;
83
+ } ) ;
84
+
85
+
86
+ it ( 'should keep allow removal of class selector' , ( ) => {
87
+ fixture = createTestComponent ( `
88
+ <div
89
+ class="existing-class"
90
+ [ngClass.xs]="{'xs-class':true, 'existing-class':false}">
91
+ </div>
92
+ ` ) ;
93
+
94
+ expectNativeEl ( fixture ) . toHaveCssClass ( 'existing-class' ) ;
95
+ activateMediaQuery ( 'xs' ) ;
96
+ expectNativeEl ( fixture ) . not . toHaveCssClass ( 'existing-class' ) ;
97
+ expectNativeEl ( fixture ) . toHaveCssClass ( 'xs-class' ) ;
77
98
78
99
activateMediaQuery ( 'lg' ) ;
79
100
expectNativeEl ( fixture ) . toHaveCssClass ( 'existing-class' ) ;
@@ -90,6 +111,7 @@ describe('class directive', () => {
90
111
expectNativeEl ( fixture ) . toHaveCssClass ( 'existing-class' ) ;
91
112
activateMediaQuery ( 'xs' ) ;
92
113
expectNativeEl ( fixture ) . toHaveCssClass ( 'existing-class' ) ;
114
+ expectNativeEl ( fixture ) . toHaveCssClass ( 'xs-class' ) ;
93
115
94
116
activateMediaQuery ( 'lg' ) ;
95
117
expectNativeEl ( fixture ) . toHaveCssClass ( 'existing-class' ) ;
@@ -112,21 +134,23 @@ describe('class directive', () => {
112
134
113
135
it ( 'should work with ngClass object notation' , ( ) => {
114
136
fixture = createTestComponent ( `
115
- <div [ngClass]="{'xs-1 ': hasXs1 , 'xs-3 ': hasXs3 }"
116
- [ngClass.xs]="{'xs-1 ': hasXs1 , 'xs-2 ': hasXs2 }">
137
+ <div [ngClass]="{'x1 ': hasX1 , 'x3 ': hasX3 }"
138
+ [ngClass.xs]="{'x1 ': hasX1 , 'x2 ': hasX2 }">
117
139
</div>
118
140
` ) ;
119
- activateMediaQuery ( 'xs ') ;
120
- expectNativeEl ( fixture , { hasXs1 : true , hasXs2 : false } ) . toHaveCssClass ( 'xs-1 ' ) ;
121
- expectNativeEl ( fixture , { hasXs1 : true , hasXs2 : false } ) . not . toHaveCssClass ( 'xs-2 ' ) ;
141
+ expectNativeEl ( fixture , { hasX1 : true , hasX2 : true , hasX3 : true } ) . toHaveCssClass ( 'x1 ') ;
142
+ expectNativeEl ( fixture , { hasX1 : true , hasX2 : true , hasX3 : true } ) . not . toHaveCssClass ( 'x2 ' ) ;
143
+ expectNativeEl ( fixture , { hasX1 : true , hasX2 : true , hasX3 : true } ) . toHaveCssClass ( 'x3 ' ) ;
122
144
123
- expectNativeEl ( fixture , { hasXs1 : false , hasXs2 : true } ) . toHaveCssClass ( 'xs-2' ) ;
124
- expectNativeEl ( fixture , { hasXs1 : false , hasXs2 : true } ) . not . toHaveCssClass ( 'xs-1' ) ;
145
+ activateMediaQuery ( 'X' ) ;
146
+ expectNativeEl ( fixture , { hasX1 : true , hasX2 : false , hasX3 : false } ) . toHaveCssClass ( 'x1' ) ;
147
+ expectNativeEl ( fixture , { hasX1 : true , hasX2 : false , hasX3 : false } ) . not . toHaveCssClass ( 'x2' ) ;
148
+ expectNativeEl ( fixture , { hasX1 : true , hasX2 : false , hasX3 : false } ) . not . toHaveCssClass ( 'x3' ) ;
125
149
126
150
activateMediaQuery ( 'md' ) ;
127
- expectNativeEl ( fixture , { hasXs1 : true , hasX2 : false , hasXs3 : true } ) . toHaveCssClass ( 'xs-3 ' ) ;
128
- expectNativeEl ( fixture , { hasXs1 : true , hasX2 : false , hasXs3 : true } ) . not . toHaveCssClass ( 'xs-2 ' ) ;
129
- expectNativeEl ( fixture , { hasXs1 : true , hasX2 : false , hasXs3 : true } ) . toHaveCssClass ( 'xs-1 ' ) ;
151
+ expectNativeEl ( fixture , { hasX1 : true , hasX2 : false , hasX3 : true } ) . toHaveCssClass ( 'x1 ' ) ;
152
+ expectNativeEl ( fixture , { hasX1 : true , hasX2 : false , hasX3 : true } ) . not . toHaveCssClass ( 'x2 ' ) ;
153
+ expectNativeEl ( fixture , { hasX1 : true , hasX2 : false , hasX3 : true } ) . toHaveCssClass ( 'x3 ' ) ;
130
154
} ) ;
131
155
132
156
it ( 'should work with ngClass array notation' , ( ) => {
@@ -151,6 +175,7 @@ describe('class directive', () => {
151
175
export class TestClassComponent implements OnInit {
152
176
hasXs1 : boolean ;
153
177
hasXs2 : boolean ;
178
+ hasXs3 : boolean ;
154
179
155
180
constructor ( private media : ObservableMedia ) {
156
181
}
0 commit comments