@@ -620,15 +620,44 @@ describe('new Connection()', function () {
620620 expect ( driverSocket . end ) . to . have . been . calledOnce ;
621621 } ) ;
622622
623- it ( 'does not call stream.end after onClose, onTimeout, or onError' , ( ) => {
623+ it ( 'calls stream.end exactly once when onError is called ' , ( ) => {
624624 messageStream . emit ( 'error' ) ;
625625 clock . tick ( 1 ) ;
626626 expect ( connection . onError ) . to . have . been . calledOnce ;
627+ connection . destroy ( { force : false } ) ;
628+ clock . tick ( 1 ) ;
629+ expect ( driverSocket . destroy ) . to . not . have . been . called ;
630+ expect ( driverSocket . end ) . to . have . been . calledOnce ;
631+ } ) ;
632+
633+ it ( 'calls stream.end exactly once when onClose is called' , ( ) => {
634+ driverSocket . emit ( 'close' ) ;
635+ clock . tick ( 1 ) ;
636+ expect ( connection . onClose ) . to . have . been . calledOnce ;
637+ connection . destroy ( { force : false } ) ;
638+ clock . tick ( 1 ) ;
639+ expect ( driverSocket . destroy ) . to . not . have . been . called ;
640+ expect ( driverSocket . end ) . to . have . been . calledOnce ;
641+ } ) ;
642+
643+ it ( 'calls stream.end exactly once when onTimeout is called' , ( ) => {
644+ driverSocket . emit ( 'timeout' ) ;
627645 clock . tick ( 1 ) ;
628- expect ( driverSocket . destroy ) . to . not . have . been . calledOnce ;
646+ expect ( connection . onTimeout ) . to . have . been . calledOnce ;
647+ connection . destroy ( { force : false } ) ;
648+ clock . tick ( 1 ) ;
649+ expect ( driverSocket . destroy ) . to . not . have . been . called ;
650+ expect ( driverSocket . end ) . to . have . been . calledOnce ;
651+ } ) ;
652+
653+ it ( 'calls stream.end exactly once when destroy is called multiple times' , ( ) => {
654+ connection . destroy ( { force : false } ) ;
655+ connection . destroy ( { force : false } ) ;
656+ connection . destroy ( { force : false } ) ;
629657 connection . destroy ( { force : false } ) ;
630658 clock . tick ( 1 ) ;
631- expect ( driverSocket . end ) . to . have . been . called ;
659+ expect ( driverSocket . destroy ) . to . not . have . been . called ;
660+ expect ( driverSocket . end ) . to . have . been . calledOnce ;
632661 } ) ;
633662
634663 it ( 'does not call stream.end if options.force == true' , ( ) => {
0 commit comments