@@ -620,15 +620,44 @@ describe('new Connection()', function () {
620
620
expect ( driverSocket . end ) . to . have . been . calledOnce ;
621
621
} ) ;
622
622
623
- it ( 'does not call stream.end after onClose, onTimeout, or onError' , ( ) => {
623
+ it ( 'calls stream.end exactly once when onError is called ' , ( ) => {
624
624
messageStream . emit ( 'error' ) ;
625
625
clock . tick ( 1 ) ;
626
626
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' ) ;
627
645
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 } ) ;
629
657
connection . destroy ( { force : false } ) ;
630
658
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 ;
632
661
} ) ;
633
662
634
663
it ( 'does not call stream.end if options.force == true' , ( ) => {
0 commit comments