@@ -31,55 +31,106 @@ describe('CdkAccordionItem', () => {
3131 . injector . get ( CdkAccordionItem ) ;
3232 } ) ;
3333
34- it ( 'should toggle its expanded state' , ( ) => {
35- expect ( item . expanded ) . toBe ( false ) ;
36- item . toggle ( ) ;
37- expect ( item . expanded ) . toBe ( true ) ;
38- item . toggle ( ) ;
39- expect ( item . expanded ) . toBe ( false ) ;
34+ describe ( 'that is not disabled' , ( ) => {
35+ beforeEach ( ( ) => {
36+ item . disabled = false ;
37+ } ) ;
38+
39+ it ( 'should toggle its expanded state' , ( ) => {
40+ expect ( item . expanded ) . toBe ( false ) ;
41+ item . toggle ( ) ;
42+ expect ( item . expanded ) . toBe ( true ) ;
43+ item . toggle ( ) ;
44+ expect ( item . expanded ) . toBe ( false ) ;
45+ } ) ;
46+
47+ it ( 'should set its expanded state to expanded' , ( ) => {
48+ item . expanded = false ;
49+ item . open ( ) ;
50+ expect ( item . expanded ) . toBe ( true ) ;
51+ } ) ;
52+
53+ it ( 'should set its expanded state to closed' , ( ) => {
54+ item . expanded = true ;
55+ item . close ( ) ;
56+ expect ( item . expanded ) . toBe ( false ) ;
57+ } ) ;
58+
59+ it ( 'should emit a closed event' , ( ) => {
60+ item . open ( ) ;
61+ fixture . detectChanges ( ) ;
62+ spyOn ( item . closed , 'emit' ) ;
63+ item . close ( ) ;
64+ fixture . detectChanges ( ) ;
65+ expect ( item . closed . emit ) . toHaveBeenCalled ( ) ;
66+ } ) ;
67+
68+ it ( 'should not emit a closed event when the item is closed already' , ( ) => {
69+ expect ( item . expanded ) . toBe ( false ) ;
70+ spyOn ( item . closed , 'emit' ) ;
71+ item . close ( ) ;
72+ fixture . detectChanges ( ) ;
73+ expect ( item . closed . emit ) . not . toHaveBeenCalled ( ) ;
74+ } ) ;
75+
76+ it ( 'should emit an opened event' , ( ) => {
77+ spyOn ( item . opened , 'emit' ) ;
78+ item . open ( ) ;
79+ fixture . detectChanges ( ) ;
80+ expect ( item . opened . emit ) . toHaveBeenCalled ( ) ;
81+ } ) ;
82+
83+ it ( 'should emit a destroyed event' , ( ) => {
84+ spyOn ( item . destroyed , 'emit' ) ;
85+ item . ngOnDestroy ( ) ;
86+ fixture . detectChanges ( ) ;
87+ expect ( item . destroyed . emit ) . toHaveBeenCalled ( ) ;
88+ } ) ;
4089 } ) ;
4190
42- it ( 'should set its expanded state to expanded' , ( ) => {
43- item . expanded = false ;
44- item . open ( ) ;
45- expect ( item . expanded ) . toBe ( true ) ;
46- } ) ;
47-
48- it ( 'should set its expanded state to closed' , ( ) => {
49- item . expanded = true ;
50- item . close ( ) ;
51- expect ( item . expanded ) . toBe ( false ) ;
52- } ) ;
53-
54- it ( 'should emit a closed event' , ( ) => {
55- item . open ( ) ;
56- fixture . detectChanges ( ) ;
57- spyOn ( item . closed , 'emit' ) ;
58- item . close ( ) ;
59- fixture . detectChanges ( ) ;
60- expect ( item . closed . emit ) . toHaveBeenCalled ( ) ;
61- } ) ;
62-
63- it ( 'should not emit a closed event when the item is closed already' , ( ) => {
64- expect ( item . expanded ) . toBe ( false ) ;
65- spyOn ( item . closed , 'emit' ) ;
66- item . close ( ) ;
67- fixture . detectChanges ( ) ;
68- expect ( item . closed . emit ) . not . toHaveBeenCalled ( ) ;
69- } ) ;
70-
71- it ( 'should emit an opened event' , ( ) => {
72- spyOn ( item . opened , 'emit' ) ;
73- item . open ( ) ;
74- fixture . detectChanges ( ) ;
75- expect ( item . opened . emit ) . toHaveBeenCalled ( ) ;
76- } ) ;
77-
78- it ( 'should emit an destroyed event' , ( ) => {
79- spyOn ( item . destroyed , 'emit' ) ;
80- item . ngOnDestroy ( ) ;
81- fixture . detectChanges ( ) ;
82- expect ( item . destroyed . emit ) . toHaveBeenCalled ( ) ;
91+ describe ( 'that is disabled' , ( ) => {
92+ beforeEach ( ( ) => {
93+ item . disabled = true ;
94+ } ) ;
95+
96+ it ( 'should not toggle its expanded state' , ( ) => {
97+ expect ( item . expanded ) . toBe ( false ) ;
98+ item . toggle ( ) ;
99+ expect ( item . expanded ) . toBe ( false ) ;
100+ } ) ;
101+
102+ it ( 'should not set its expanded state to expanded' , ( ) => {
103+ item . expanded = false ;
104+ item . open ( ) ;
105+ expect ( item . expanded ) . toBe ( false ) ;
106+ } ) ;
107+
108+ it ( 'should not set its expanded state to closed' , ( ) => {
109+ item . expanded = true ;
110+ item . close ( ) ;
111+ expect ( item . expanded ) . toBe ( true ) ;
112+ } ) ;
113+
114+ it ( 'should not emit a closed event' , ( ) => {
115+ spyOn ( item . closed , 'emit' ) ;
116+ item . close ( ) ;
117+ fixture . detectChanges ( ) ;
118+ expect ( item . closed . emit ) . not . toHaveBeenCalled ( ) ;
119+ } ) ;
120+
121+ it ( 'should not emit an opened event' , ( ) => {
122+ spyOn ( item . opened , 'emit' ) ;
123+ item . open ( ) ;
124+ fixture . detectChanges ( ) ;
125+ expect ( item . opened . emit ) . not . toHaveBeenCalled ( ) ;
126+ } ) ;
127+
128+ it ( 'should emit a destroyed event' , ( ) => {
129+ spyOn ( item . destroyed , 'emit' ) ;
130+ item . ngOnDestroy ( ) ;
131+ fixture . detectChanges ( ) ;
132+ expect ( item . destroyed . emit ) . toHaveBeenCalled ( ) ;
133+ } ) ;
83134 } ) ;
84135 } ) ;
85136
@@ -109,6 +160,20 @@ describe('CdkAccordionItem', () => {
109160 expect ( firstItem . expanded ) . toBe ( true ) ;
110161 expect ( secondItem . expanded ) . toBe ( true ) ;
111162 } ) ;
163+
164+ it ( 'should not change expanded state for disabled items' , ( ) => {
165+ firstItem . disabled = true ;
166+ expect ( firstItem . expanded ) . toBe ( false ) ;
167+ expect ( secondItem . expanded ) . toBe ( false ) ;
168+ firstItem . open ( ) ;
169+ fixture . detectChanges ( ) ;
170+ expect ( firstItem . expanded ) . toBe ( false ) ;
171+ expect ( secondItem . expanded ) . toBe ( false ) ;
172+ secondItem . open ( ) ;
173+ fixture . detectChanges ( ) ;
174+ expect ( firstItem . expanded ) . toBe ( false ) ;
175+ expect ( secondItem . expanded ) . toBe ( true ) ;
176+ } ) ;
112177 } ) ;
113178
114179
0 commit comments