示例#1
0
        public async Task ShouldRemoveConnectionOnDisconnect()
        {
            var mockChatContext       = GetMockChatDbContext();
            var mockConnectionManager = new Mock <IConnectionManager>();
            var hub = new TestableChatHub(mockConnectionManager, mockChatContext);

            var userid       = hub.Identity.GetUserId();
            var connectionId = Guid.NewGuid().ToString();

            hub.MockContext.SetupGet(m => m.ConnectionId).Returns(connectionId);

            await hub.OnDisconnected(true);

            mockConnectionManager.Verify(m => m.Remove(userid, connectionId), Times.Once);
        }
示例#2
0
        public void ShouldSendTypingInformation()
        {
            var mockChatContext       = GetMockChatDbContext();
            var mockConnectionManager = new Mock <IConnectionManager>();
            var hub = new TestableChatHub(mockConnectionManager, mockChatContext);

            var id      = Guid.NewGuid().ToString();
            var typing  = true;
            var mockAll = hub.MockAll;

            mockAll.Setup(m => m.Typing(id, typing)).Verifiable();

            mockAll.Object.Typing(id, typing);

            mockAll.Verify(m => m.Typing(id, typing), Times.Once);
            mockAll.VerifyAll();
        }
示例#3
0
        public async Task ShouldConnectSuccessfullyOnFirstRequest()
        {
            var mockChatContext       = GetMockChatDbContext();
            var mockConnectionManager = new Mock <IConnectionManager>();
            var hub = new TestableChatHub(mockConnectionManager, mockChatContext);

            var userid       = hub.Identity.GetUserId();
            var name         = hub.Identity.Name;
            var connectionId = Guid.NewGuid().ToString();

            hub.MockContext.SetupGet(m => m.ConnectionId).Returns(connectionId);
            hub.MockOthers.Setup(m => m.UserConnected(userid, name)).Verifiable();

            mockConnectionManager.Setup(m => m.Add(userid, connectionId, name)).Returns(true).Verifiable();

            await hub.OnConnected();

            mockConnectionManager.Verify();
            hub.MockOthers.Verify();
        }
示例#4
0
        public async Task ShouldSendMessageAndSaveToDatabase()
        {
            var mockChatContext       = GetMockChatDbContext();
            var mockConnectionManager = new Mock <IConnectionManager>();
            var hub = new TestableChatHub(mockConnectionManager, mockChatContext);

            var message  = "Lets chat";
            var username = "******";

            hub.MockAll.Setup(m => m.SendMessage(username, message)).Verifiable();

            await hub.SendMessage(message);

            hub.MockAll.Verify(m => m.SendMessage(username, message), Times.Once);
            mockChatContext.Verify(s => s.SaveChangesAsync(), Times.Once);

            var savedMessage = mockChatContext.Object.Messages.First();

            Assert.AreEqual(savedMessage.Username, username);
            Assert.AreEqual(savedMessage.Text, message);

            hub.MockAll.VerifyAll();
        }