@@ -652,7 +652,7 @@ public async Task KeysAreNotGuid()
652652 group2 . Single ( receiverC . Id . ToString ( ) ) . Parameter_One ( 5432 ) ;
653653 group2 . Except ( [ receiverA . Id . ToString ( ) , receiverB . Id . ToString ( ) , receiverC . Id . ToString ( ) ] ) . Parameter_One ( 7654 ) ;
654654
655- // We need to wait to receive the message from Redis .
655+ // We need to wait to receive the message from NATS .
656656 await Task . Delay ( 500 ) ;
657657
658658 // Assert
@@ -676,6 +676,8 @@ public async Task UseSameNameGroupAfterDispose()
676676 {
677677 var group = groupProvider . GetOrAddSynchronousGroup < string , ITestReceiver > ( "MyGroup" ) ;
678678 group . Add ( receiverA . Id . ToString ( ) , receiverA . Proxy ) ;
679+ // Wait for subscriptions to be established.
680+ await Task . Delay ( 250 ) ;
679681
680682 group . All . Parameter_One ( 1234 ) ;
681683 // We need to wait to receive the message from NATS.
@@ -705,4 +707,34 @@ public async Task UseSameNameGroupAfterDispose()
705707 group . Dispose ( ) ;
706708 }
707709 }
710+
711+ [ Fact ]
712+ public async Task InvokeViaLocalEmptyGroup ( )
713+ {
714+ // Arrange
715+ var proxyFactory = DynamicRemoteProxyFactory . Instance ;
716+ var serializer = new TestJsonRemoteSerializer ( ) ;
717+ IMulticastGroupProvider groupProvider = new NatsGroupProvider ( proxyFactory , serializer , new NatsGroupOptions ( ) { Url = _natsContainer . GetConnectionString ( ) } ) ;
718+ var receiverA = TestNatsReceiverHelper . CreateReceiverSet ( proxyFactory , serializer ) ;
719+ var receiverB = TestNatsReceiverHelper . CreateReceiverSet ( proxyFactory , serializer ) ;
720+
721+ // Act
722+ using var group1 = groupProvider . GetOrAddSynchronousGroup < string , ITestReceiver > ( "MyGroup" ) ;
723+ group1 . Add ( receiverA . Id . ToString ( ) , receiverA . Proxy ) ;
724+ group1 . Add ( receiverB . Id . ToString ( ) , receiverB . Proxy ) ;
725+
726+ // Wait for subscriptions to be established.
727+ await Task . Delay ( 250 ) ;
728+
729+ using var group2 = groupProvider . GetOrAddSynchronousGroup < string , ITestReceiver > ( "MyGroup" ) ;
730+
731+ group2 . All . Parameter_One ( 1234 ) ; // This group is empty, so the message will be sent to backplane.
732+
733+ // We need to wait to receive the message from NATS.
734+ await Task . Delay ( 550 ) ;
735+
736+ // Assert
737+ Assert . Equal ( [ CreateJsonSerializedInvocation ( nameof ( ITestReceiver . Parameter_One ) , [ 1234 ] ) ] , receiverA . Writer . Written ) ;
738+ Assert . Equal ( [ CreateJsonSerializedInvocation ( nameof ( ITestReceiver . Parameter_One ) , [ 1234 ] ) ] , receiverB . Writer . Written ) ;
739+ }
708740}
0 commit comments