Ejemplo n.º 1
0
        public async Task GivenEmptyHandlerInState_WhenGrainActivates_ThenResumeHandler()
        {
            //Arrange
            var onResumeCalled      = false;
            var onAttachingObserver = new Action <IAsyncObserver <ChatMessage> >(obs => onResumeCalled = true);

            _stateWithHandle.ChatMessageStreamSubscriptionHandle =
                await _stream.AddEmptyStreamHandler(onAttachingObserver);

            //Check to see there is a handler registered
            var handles = await _stream.GetAllSubscriptionHandles();

            Assert.Equal(1, handles.Count);
            Assert.False(onResumeCalled);

            //Act
            var grain = await Silo.CreateGrainAsync <PersistentListenerWithHandleInState>(1);

            //Assert
            Assert.True(onResumeCalled);

            //Act
            await _stream.OnNextAsync(new ChatMessage("here's a message"));

            //Assert
            var receivedMessages = await grain.ReceivedCount();

            Assert.Equal(1, receivedMessages);
        }