public void AddMessageToChatRoomAddsMessage()
        {
            // Arrange
            ChatRoom parameter = null;
            var      chatRoomRepositoryMock = new Mock <IRepository <ChatRoom, long> >(MockBehavior.Strict);

            chatRoomRepositoryMock.Setup(repository => repository.FindByIdWithMessages(It.IsAny <long>())).Returns(new List <ChatRoom>()
            {
                new ChatRoom("room")
            });
            chatRoomRepositoryMock.Setup(repository => repository.Exists(It.IsAny <long>())).Returns(true);
            chatRoomRepositoryMock.Setup(repository => repository.Update(It.IsAny <ChatRoom>()))
            .Callback <ChatRoom>((chatRoom) => parameter = chatRoom);
            ChatRoomManager chatRoomManager = new ChatRoomManager(chatRoomRepositoryMock.Object);
            long            chatRoomId      = 1;
            Message         message         = new Message("Carla Red", "Hello World");

            // Act Assert
            chatRoomManager.AddMessageToChatRoom(chatRoomId, message);

            // Assert
            Assert.AreEqual(1, parameter.Messages.Count);
            Assert.AreEqual("Carla Red", parameter.Messages[0].Sender);
            Assert.AreEqual("Hello World", parameter.Messages[0].Content);
            Assert.AreEqual("room", parameter.Name);
        }
        public void AddMessageToChatRoomWithInvalidIdThrowsKeyNotFoundException()
        {
            // Arrange
            var chatRoomRepositoryMock = new Mock <IRepository <ChatRoom, long> >(MockBehavior.Strict);

            chatRoomRepositoryMock.Setup(repository => repository.FindByIdWithMessages(It.IsAny <long>())).Returns(new List <ChatRoom>()
            {
                new ChatRoom("room")
            });
            chatRoomRepositoryMock.Setup(repository => repository.Exists(It.IsAny <long>())).Returns(false);
            chatRoomRepositoryMock.Setup(repository => repository.Update(It.IsAny <ChatRoom>()));
            ChatRoomManager chatRoomManager = new ChatRoomManager(chatRoomRepositoryMock.Object);
            long            chatRoomId      = 1;
            Message         message         = new Message("Carla Red", "Hello World");

            // Act Assert
            Assert.ThrowsException <KeyNotFoundException>(() => chatRoomManager.AddMessageToChatRoom(chatRoomId, message));
        }
        public void AddMessageToChatRoomCallsRepository()
        {
            // Arrange
            var chatRoomRepositoryMock = new Mock <IRepository <ChatRoom, long> >(MockBehavior.Strict);

            chatRoomRepositoryMock.Setup(repository => repository.FindByIdWithMessages(It.IsAny <long>())).Returns(new List <ChatRoom>()
            {
                new ChatRoom("room")
            });
            chatRoomRepositoryMock.Setup(repository => repository.Exists(It.IsAny <long>())).Returns(true);
            chatRoomRepositoryMock.Setup(repository => repository.Update(It.IsAny <ChatRoom>()));
            ChatRoomManager chatRoomManager = new ChatRoomManager(chatRoomRepositoryMock.Object);
            long            chatRoomId      = 1;
            Message         message         = new Message("Carla Red", "Hello World");

            // Act
            chatRoomManager.AddMessageToChatRoom(chatRoomId, message);

            // Assert
            chatRoomRepositoryMock.Verify(repository => repository.Update(It.IsAny <ChatRoom>()), Times.Once);
        }