import moize from '../src' ; const foo = 'foo' ; const bar = 'bar' ; const method = jest . fn ( function ( one , two ) { return { one , two } ; } ) ; describe ( 'moize.compose' , ( ) => { it ( 'should compose the moize methods into a new method with options combined' , async ( ) => { const maxSize = moize . maxSize ( 5 ) ; const maxAge = moize . maxAge ( 500 ) ; const serialize = moize . serialize ; const composedMoizer = moize . compose ( maxSize , maxAge , serialize ) ; const composed = composedMoizer ( method ) ; expect ( composed . options ) . toEqual ( expect . objectContaining ( { maxAge : 500 , maxSize : 5 , isSerialized : true , } ) ) ; composed ( foo , bar ) ; expect ( composed . cache . keys ) . toEqual ( [ [ '|foo|bar|' ] ] ) ; await new Promise ( ( resolve ) => setTimeout ( resolve , 1000 ) ) ; expect ( composed . cache . size ) . toBe ( 0 ) ; } ) ; } ) ;