Beispiel #1
0
        public void EnterClient_SendsCorrectMessage()
        {
            // Arrange
            Mock <IConnectionManager> manager = new Mock <IConnectionManager>();
            Mock <IRealtimeChannel>   channel = new Mock <IRealtimeChannel>();

            channel.SetupGet(c => c.State).Returns(ChannelState.Attached);
            Stack <ProtocolMessage> messages = new Stack <ProtocolMessage>();

            manager.Setup(c => c.Send(It.IsAny <ProtocolMessage>(), null)).Callback <ProtocolMessage, Action <bool, ErrorInfo> >((m, c) => messages.Push(m));
            var target = new Presence(manager.Object, channel.Object, "testClient");

            // Act
            target.EnterClient("newClient", null, null);

            // Assert
            Assert.Equal <int>(1, messages.Count);
            ProtocolMessage msg = messages.Pop();

            Assert.Equal <ProtocolMessage.MessageAction>(ProtocolMessage.MessageAction.Presence, msg.Action);
            Assert.Equal <int>(1, msg.Presence.Length);
            Assert.Equal <PresenceMessage.ActionType>(PresenceMessage.ActionType.Enter, msg.Presence[0].Action);
            Assert.Equal <string>("newClient", msg.Presence[0].ClientId);
        }