@@ -16,6 +16,7 @@ import {MomentDateAdapter} from './moment-date-adapter';
1616
1717describe ( 'MomentDateAdapter' , ( ) => {
1818 let adapter : MomentDateAdapter ;
19+ let assertValidDate : ( d : moment . Moment | null , valid : boolean ) => void ;
1920
2021 beforeEach ( async ( ( ) => {
2122 TestBed . configureTestingModule ( {
@@ -27,6 +28,13 @@ describe('MomentDateAdapter', () => {
2728 moment . locale ( 'en' ) ;
2829 adapter = d ;
2930 adapter . setLocale ( 'en' ) ;
31+
32+ assertValidDate = ( d : moment . Moment | null , valid : boolean ) => {
33+ expect ( adapter . isDateInstance ( d ) ) . not . toBeNull ( `Expected ${ d } to be a date instance` ) ;
34+ expect ( adapter . isValid ( d ! ) ) . toBe ( valid ,
35+ `Expected ${ d } to be ${ valid ? 'valid' : 'invalid' } ,` +
36+ ` but was ${ valid ? 'invalid' : 'valid' } ` ) ;
37+ }
3038 } ) ) ;
3139
3240 it ( 'should get year' , ( ) => {
@@ -306,17 +314,17 @@ describe('MomentDateAdapter', () => {
306314 } ) ;
307315
308316 it ( 'should create valid dates from valid ISO strings' , ( ) => {
309- expect ( adapter . deserialize ( '1985-04-12T23:20:50.52Z' ) ) . not . toBeNull ( ) ;
310- expect ( adapter . deserialize ( '1996-12-19T16:39:57-08:00' ) ) . not . toBeNull ( ) ;
311- expect ( adapter . deserialize ( '1937-01-01T12:00:27.87+00:20' ) ) . not . toBeNull ( ) ;
312- expect ( ( ) => adapter . deserialize ( '1990-13-31T23:59:00Z' ) ) . toThrow ( ) ;
313- expect ( ( ) => adapter . deserialize ( '1/1/2017' ) ) . toThrow ( ) ;
317+ assertValidDate ( adapter . deserialize ( '1985-04-12T23:20:50.52Z' ) , true ) ;
318+ assertValidDate ( adapter . deserialize ( '1996-12-19T16:39:57-08:00' ) , true ) ;
319+ assertValidDate ( adapter . deserialize ( '1937-01-01T12:00:27.87+00:20' ) , true ) ;
320+ assertValidDate ( adapter . deserialize ( '1990-13-31T23:59:00Z' ) , false ) ;
321+ assertValidDate ( adapter . deserialize ( '1/1/2017' ) , false ) ;
314322 expect ( adapter . deserialize ( '' ) ) . toBeNull ( ) ;
315323 expect ( adapter . deserialize ( null ) ) . toBeNull ( ) ;
316- expect ( adapter . deserialize ( new Date ( ) ) ) . not . toBeNull ( ) ;
317- expect ( ( ) => adapter . deserialize ( new Date ( NaN ) ) ) . toThrow ( ) ;
318- expect ( adapter . deserialize ( moment ( ) ) ) . not . toBeNull ( ) ;
319- expect ( ( ) => adapter . deserialize ( moment . invalid ( ) ) ) . toThrow ( ) ;
324+ assertValidDate ( adapter . deserialize ( new Date ( ) ) , true ) ;
325+ assertValidDate ( adapter . deserialize ( new Date ( NaN ) ) , false ) ;
326+ assertValidDate ( adapter . deserialize ( moment ( ) ) , true ) ;
327+ assertValidDate ( adapter . deserialize ( moment . invalid ( ) ) , false ) ;
320328 } ) ;
321329
322330 it ( 'setLocale should not modify global moment locale' , ( ) => {
@@ -357,6 +365,10 @@ describe('MomentDateAdapter', () => {
357365 adapter . isValid ( date ) ;
358366 expect ( date . locale ( ) ) . toBe ( 'en' ) ;
359367 } ) ;
368+
369+ it ( 'should create invalid date' , ( ) => {
370+ assertValidDate ( adapter . invalid ( ) , false ) ;
371+ } ) ;
360372} ) ;
361373
362374describe ( 'MomentDateAdapter with MAT_DATE_LOCALE override' , ( ) => {
0 commit comments