@@ -528,6 +528,19 @@ describe('date', () => {
528528 } ) ;
529529
530530 describe ( 'birthdate' , ( ) => {
531+ function calculateAge ( birthdate : Date , refDate : Date ) : number {
532+ let age = refDate . getFullYear ( ) - birthdate . getFullYear ( ) ;
533+ if (
534+ refDate . getMonth ( ) < birthdate . getMonth ( ) ||
535+ ( refDate . getMonth ( ) === birthdate . getMonth ( ) &&
536+ refDate . getDate ( ) < birthdate . getDate ( ) )
537+ ) {
538+ age -- ;
539+ }
540+
541+ return age ;
542+ }
543+
531544 it ( 'returns a random birthdate' , ( ) => {
532545 const birthdate = faker . date . birthdate ( ) ;
533546 expect ( birthdate ) . toBeInstanceOf ( Date ) ;
@@ -577,8 +590,8 @@ describe('date', () => {
577590 const value = birthdate . valueOf ( ) ;
578591 const refDateValue = refDate . valueOf ( ) ;
579592 expect ( value ) . toBeLessThanOrEqual ( refDateValue ) ;
580- const deltaDate = new Date ( refDateValue - value ) ;
581- expect ( deltaDate . getUTCFullYear ( ) - 1970 ) . toBe ( 21 ) ;
593+ const age = calculateAge ( birthdate , refDate ) ;
594+ expect ( age ) . toBe ( 21 ) ;
582595 } ) ;
583596
584597 it ( 'returns a random birthdate between two ages' , ( ) => {
@@ -592,9 +605,9 @@ describe('date', () => {
592605 const value = birthdate . valueOf ( ) ;
593606 const refDateValue = refDate . valueOf ( ) ;
594607 expect ( value ) . toBeLessThanOrEqual ( refDateValue ) ;
595- const deltaDate = new Date ( refDateValue - value ) ;
596- expect ( deltaDate . getUTCFullYear ( ) - 1970 ) . toBeGreaterThanOrEqual ( 21 ) ;
597- expect ( deltaDate . getUTCFullYear ( ) - 1970 ) . toBeLessThanOrEqual ( 22 ) ;
608+ const age = calculateAge ( birthdate , refDate ) ;
609+ expect ( age ) . toBeGreaterThanOrEqual ( 21 ) ;
610+ expect ( age ) . toBeLessThanOrEqual ( 22 ) ;
598611 } ) ;
599612
600613 it . each ( [ 'min' , 'max' , 'mode' ] as const ) (
0 commit comments