@@ -16,6 +16,7 @@ import {OverlayContainer} from '../core';
1616import { MdSnackBarConfig } from './snack-bar-config' ;
1717import { SimpleSnackBar } from './simple-snack-bar' ;
1818
19+ // TODO(josephperrott): Update tests to mock waiting for time to complete for animations.
1920
2021describe ( 'MdSnackBar' , ( ) => {
2122 let snackBar : MdSnackBar ;
@@ -56,7 +57,6 @@ describe('MdSnackBar', () => {
5657 snackBar . open ( simpleMessage , simpleActionLabel , config ) ;
5758
5859 let containerElement = overlayContainerElement . querySelector ( 'snack-bar-container' ) ;
59-
6060 expect ( containerElement . getAttribute ( 'role' ) )
6161 . toBe ( 'alert' , 'Expected snack bar container to have role="alert"' ) ;
6262 } ) ;
@@ -102,7 +102,6 @@ describe('MdSnackBar', () => {
102102 expect ( messageElement . tagName ) . toBe ( 'SPAN' , 'Expected snack bar message element to be <span>' ) ;
103103 expect ( messageElement . textContent )
104104 . toBe ( simpleMessage , `Expected the snack bar message to be '${ simpleMessage } ''` ) ;
105-
106105 expect ( overlayContainerElement . querySelector ( 'button.md-simple-snackbar-action' ) )
107106 . toBeNull ( 'Expected the query selection for action label to be null' ) ;
108107 } ) ;
@@ -120,10 +119,11 @@ describe('MdSnackBar', () => {
120119 . toBeGreaterThan ( 0 , 'Expected overlay container element to have at least one child' ) ;
121120
122121 snackBarRef . dismiss ( ) ;
123-
124- expect ( dismissed ) . toBeTruthy ( 'Expected the snack bar to be dismissed' ) ;
125- expect ( overlayContainerElement . childElementCount )
126- . toBe ( 0 , 'Expected the overlay container element to have no child elements' ) ;
122+ snackBarRef . afterDismissed ( ) . subscribe ( null , null , ( ) => {
123+ expect ( dismissed ) . toBeTruthy ( 'Expected the snack bar to be dismissed' ) ;
124+ expect ( overlayContainerElement . childElementCount )
125+ . toBe ( 0 , 'Expected the overlay container element to have no child elements' ) ;
126+ } ) ;
127127 } ) ;
128128
129129 it ( 'should open a custom component' , ( ) => {
@@ -136,7 +136,46 @@ describe('MdSnackBar', () => {
136136 expect ( overlayContainerElement . textContent )
137137 . toBe ( 'Burritos are on the way.' ,
138138 `Expected the overlay text content to be 'Burritos are on the way'` ) ;
139+ } ) ;
140+
141+ it ( 'should set the animation state to visible on entry' , ( ) => {
142+ let config = new MdSnackBarConfig ( testViewContainerRef ) ;
143+ let snackBarRef = snackBar . open ( simpleMessage , null , config ) ;
139144
145+ viewContainerFixture . detectChanges ( ) ;
146+ expect ( snackBarRef . containerInstance . animationState )
147+ . toBe ( 'visible' , `Expected the animation state would be 'visible'.` ) ;
148+ } ) ;
149+
150+ it ( 'should set the animation state to complete on exit' , ( ) => {
151+ let config = new MdSnackBarConfig ( testViewContainerRef ) ;
152+ let snackBarRef = snackBar . open ( simpleMessage , null , config ) ;
153+ snackBarRef . dismiss ( ) ;
154+
155+ viewContainerFixture . detectChanges ( ) ;
156+ expect ( snackBarRef . containerInstance . animationState )
157+ . toBe ( 'complete' , `Expected the animation state would be 'complete'.` ) ;
158+ } ) ;
159+
160+ it ( `should set the old snack bar animation state to complete and the new snack bar animation
161+ state to visible on entry of new snack bar` , ( ) => {
162+ let config = new MdSnackBarConfig ( testViewContainerRef ) ;
163+ let snackBarRef = snackBar . open ( simpleMessage , null , config ) ;
164+
165+ viewContainerFixture . detectChanges ( ) ;
166+ expect ( snackBarRef . containerInstance . animationState )
167+ . toBe ( 'visible' , `Expected the animation state would be 'visible'.` ) ;
168+
169+ let config2 = new MdSnackBarConfig ( testViewContainerRef ) ;
170+ let snackBarRef2 = snackBar . open ( simpleMessage , null , config2 ) ;
171+
172+ viewContainerFixture . detectChanges ( ) ;
173+ snackBarRef . afterDismissed ( ) . subscribe ( null , null , ( ) => {
174+ expect ( snackBarRef . containerInstance . animationState )
175+ . toBe ( 'complete' , `Expected the animation state would be 'complete'.` ) ;
176+ expect ( snackBarRef2 . containerInstance . animationState )
177+ . toBe ( 'visible' , `Expected the animation state would be 'visible'.` ) ;
178+ } ) ;
140179 } ) ;
141180} ) ;
142181
0 commit comments