public void Invoke_EmptyRoomId_ReturnsNull()
        {
            // prepare
            var mockedMessageRepository = new Mock <IMessageRepository>();
            var action = new GetMessagesOffsetByRoomId(mockedMessageRepository.Object);

            // action
            var message = action.Invoke(new Guid(), Guid.NewGuid(), 2);

            // check
            Assert.Null(message);
            mockedMessageRepository.Verify(r => r.GetById(It.IsAny <Guid>()), Times.Never);
            mockedMessageRepository.Verify(r => r.GetRoomMessagesOffset(It.IsAny <Guid>(), It.IsAny <DateTime>(), It.IsAny <int>()), Times.Never);
        }
        public void Invoke_NoMessages_ReturnNull()
        {
            // prepare
            var mockedMessageRepository = new Mock <IMessageRepository>();
            var action = new GetMessagesOffsetByRoomId(mockedMessageRepository.Object);

            mockedMessageRepository.Setup(r => r.GetById(It.IsAny <Guid>())).Returns(new DataAccess.Models.Message());

            // action
            var message = action.Invoke(Guid.NewGuid(), Guid.NewGuid(), 2);

            // check
            Assert.Null(message);
            mockedMessageRepository.Verify(r => r.GetById(It.IsAny <Guid>()), Times.Once);
            mockedMessageRepository.Verify(r => r.GetRoomMessagesOffset(It.IsAny <Guid>(), It.IsAny <DateTime>(), It.IsAny <int>()), Times.Once);
        }
        public void Invoke_ValidData_ReturnsCorrectModel()
        {
            var guid = Guid.NewGuid();

            var userRoom = new DataAccess.Models.UserRoom
            {
                CreatedOn = DateTime.Today
            };

            var messageFromDb = new List <DataAccess.Models.Message>
            {
                new DataAccess.Models.Message
                {
                    Id        = new Guid(),
                    Text      = "Testowa wiadomość",
                    CreatedOn = DateTime.Now,
                    UserRoom  = userRoom
                },
                new DataAccess.Models.Message
                {
                    Id        = new Guid(),
                    Text      = "Testowa wiadomość2",
                    CreatedOn = DateTime.Now,
                    UserRoom  = userRoom
                }
            };

            // prepare
            var mockedMessageRepository = new Mock <IMessageRepository>();

            mockedMessageRepository.Setup(r => r.GetRoomMessagesOffset(It.IsAny <Guid>(), It.IsAny <DateTime>(), It.IsAny <int>()))
            .Returns(messageFromDb.AsQueryable());
            mockedMessageRepository.Setup(r => r.GetById(It.IsAny <Guid>())).Returns(new DataAccess.Models.Message());
            var action = new GetMessagesOffsetByRoomId(mockedMessageRepository.Object);

            // action
            var message = action.Invoke(guid, Guid.NewGuid(), 2);

            // check
            Assert.NotNull(message);
            Assert.Equal("Testowa wiadomość", message[0].Text);
            Assert.Equal("Testowa wiadomość2", message[1].Text);
            Assert.Null(message[0].DeletedOn);
            mockedMessageRepository.Verify(r => r.GetById(It.IsAny <Guid>()), Times.Once);
            mockedMessageRepository.Verify(r => r.GetRoomMessagesOffset(It.IsAny <Guid>(), It.IsAny <DateTime>(), It.IsAny <int>()), Times.Once);
        }