Пример #1
0
        public void GetUnreadMessagesGenericShouldReturnCorrectCountUsingMoq()
        {
            AutoMapperConfig.RegisterMappings(typeof(ErrorViewModel).GetTypeInfo().Assembly);

            var repository = new Mock <IDeletableEntityRepository <UserMessage> >();

            var messages = new List <UserMessage>
            {
                new UserMessage {
                    Id = "TestId1", IsRead = false
                },
                new UserMessage {
                    Id = "TestId2", IsRead = false
                },
                new UserMessage {
                    Id = "TestId3", IsRead = true
                },
            };

            repository.Setup(r => r.AllAsNoTracking()).Returns(messages.AsQueryable());

            var service = new UserMessagesService(repository.Object);

            Assert.Equal(2, service.GetUnreadMessages <UserMessageViewModel>().Count());

            repository.Verify(x => x.AllAsNoTracking(), Times.Once);
        }
Пример #2
0
        public void GetAllGenericShouldMapCorrectlyUsingMoq()
        {
            AutoMapperConfig.RegisterMappings(typeof(ErrorViewModel).GetTypeInfo().Assembly);

            var repository = new Mock <IDeletableEntityRepository <UserMessage> >();

            var messages = new List <UserMessage>
            {
                new UserMessage {
                    Id = "TestId1", CreatedOn = new DateTime(2020, 12, 31, 12, 12, 12), Subject = "TestSubject1", Email = "TestEmail1", Message = "TestMessage1", IP = "TestIp1", IsRead = true
                },
                new UserMessage {
                    Id = "TestId2", CreatedOn = new DateTime(2020, 12, 31, 12, 12, 13), Subject = "TestSubject2", Email = "TestEmail2", Message = "TestMessage2", IP = "TestIp2", IsRead = false
                },
            };

            repository.Setup(r => r.AllAsNoTracking()).Returns(messages.AsQueryable());

            var service = new UserMessagesService(repository.Object);

            Assert.Equal("TestId2", service.GetAll <UserMessageViewModel>().FirstOrDefault().Id);
            Assert.Equal("31-Dec-2020 12:12", service.GetAll <UserMessageViewModel>().FirstOrDefault().CreatedOn);
            Assert.Equal("TestSubject2", service.GetAll <UserMessageViewModel>().FirstOrDefault().Subject);
            Assert.Equal("TestEmail2", service.GetAll <UserMessageViewModel>().FirstOrDefault().Email);
            Assert.Equal("TestMessage2", service.GetAll <UserMessageViewModel>().FirstOrDefault().Message);
            Assert.Equal("TestIp2", service.GetAll <UserMessageViewModel>().FirstOrDefault().IP);
            Assert.False(service.GetAll <UserMessageViewModel>().FirstOrDefault().IsRead);

            repository.Verify(x => x.AllAsNoTracking(), Times.Exactly(7));
        }
Пример #3
0
        public async Task UndeleteAsyncShouldWorkCorrectlyUsingMoq()
        {
            var repository = new Mock <IDeletableEntityRepository <UserMessage> >();

            var messages = new List <UserMessage>
            {
                new UserMessage {
                    Id = "TestId1", IsDeleted = true, DeletedOn = new DateTime(2020, 12, 31, 12, 12, 12), Subject = "TestSubject1", Email = "TestEmail1", Message = "TestMessage1", IP = "TestIp1", IsRead = false
                },
                new UserMessage {
                    Id = "TestId2", CreatedOn = new DateTime(2020, 12, 31, 12, 12, 13), Subject = "TestSubject2", Email = "TestEmail2", Message = "TestMessage2", IP = "TestIp2"
                },
            };

            repository.Setup(r => r.AllAsNoTrackingWithDeleted()).Returns(messages.AsQueryable());
            repository.Setup(r => r.Undelete(It.IsAny <UserMessage>())).Callback((UserMessage item) =>
            {
                var foundMessage       = messages.FirstOrDefault(x => x.Id == item.Id);
                foundMessage.IsDeleted = false;
                foundMessage.DeletedOn = null;
            });
            repository.Setup(r => r.SaveChangesAsync()).Verifiable();

            var service = new UserMessagesService(repository.Object);

            Assert.True(await service.UndeleteAsync("TestId1"));
            Assert.False(messages.FirstOrDefault(x => x.Id == "TestId1").IsDeleted);
            Assert.Null(messages.FirstOrDefault(x => x.Id == "TestId1").DeletedOn);

            repository.Verify(x => x.AllAsNoTrackingWithDeleted(), Times.Once);
            repository.Verify(x => x.Undelete(It.IsAny <UserMessage>()), Times.Once);
            repository.Verify(x => x.SaveChangesAsync());
        }
Пример #4
0
        public async Task CreateAsyncGenericShouldIncreaseCountUsingMoq()
        {
            AutoMapperConfig.RegisterMappings(typeof(ErrorViewModel).GetTypeInfo().Assembly);

            var repository = new Mock <IDeletableEntityRepository <UserMessage> >();

            var messages = new List <UserMessage>
            {
                new UserMessage {
                    Id = "TestId1", CreatedOn = new DateTime(2020, 12, 31, 12, 12, 12), Subject = "TestSubject1", Email = "TestEmail1", Message = "TestMessage1", IP = "TestIp1"
                },
                new UserMessage {
                    Id = "TestId2", CreatedOn = new DateTime(2020, 12, 31, 12, 12, 13), Subject = "TestSubject2", Email = "TestEmail2", Message = "TestMessage2", IP = "TestIp2"
                },
            };

            repository.Setup(r => r.AddAsync(It.IsAny <UserMessage>())).Callback((UserMessage item) => messages.Add(item));
            repository.Setup(r => r.SaveChangesAsync()).Verifiable();

            var service = new UserMessagesService(repository.Object);
            var model   = new ContactFormInputViewModel
            {
                Subject = "TestSubject3",
                Email   = "TestEmail3",
                Message = "TestMessage3",
            };
            await service.CreateAsync(model, "TestIp3");

            Assert.Equal(3, messages.Count);

            repository.Verify(x => x.AddAsync(It.IsAny <UserMessage>()), Times.Once);
            repository.Verify(x => x.SaveChangesAsync());
        }
Пример #5
0
        public async Task <IActionResult> GetMessageById([FromRoute] Guid messageId)
        {
            var message = await UserMessagesService.GetMessageById(messageId, UserCode);

            if (message == null)
            {
                return(NotFound());
            }
            return(Ok(message));
        }
Пример #6
0
        public async Task <IActionResult> DeleteMessage([FromRoute] Guid messageId)
        {
            var message = await UserMessagesService.GetMessageById(messageId, UserCode);

            if (message == null)
            {
                return(NotFound());
            }
            await UserMessagesService.MarkMessageAsDeleted(messageId, UserCode);

            return(NoContent());
        }
Пример #7
0
        public async Task <IActionResult> MarkMessageAsRead([FromRoute] Guid messageId)
        {
            var message = await UserMessagesService.GetMessageById(messageId, UserCode);

            if (message == null)
            {
                return(NotFound());
            }
            if (message.IsRead)
            {
                ModelState.AddModelError(nameof(message), "This message is already read.");
                return(BadRequest(new ValidationProblemDetails(ModelState)));
            }
            await UserMessagesService.MarkMessageAsRead(messageId, UserCode);

            return(NoContent());
        }
Пример #8
0
        public async Task UndeleteAsyncShouldReturnFalseWithInvalidMessageIdUsingMoq()
        {
            var repository = new Mock <IDeletableEntityRepository <UserMessage> >();

            var messages = new List <UserMessage>
            {
                new UserMessage {
                    Id = "TestId1", CreatedOn = new DateTime(2020, 12, 31, 12, 12, 12), Subject = "TestSubject1", Email = "TestEmail1", Message = "TestMessage1", IP = "TestIp1"
                },
                new UserMessage {
                    Id = "TestId2", CreatedOn = new DateTime(2020, 12, 31, 12, 12, 13), Subject = "TestSubject2", Email = "TestEmail2", Message = "TestMessage2", IP = "TestIp2"
                },
            };

            repository.Setup(r => r.AllAsNoTrackingWithDeleted()).Returns(messages.AsQueryable());

            var service = new UserMessagesService(repository.Object);

            Assert.False(await service.UndeleteAsync("InvalidId"));

            repository.Verify(x => x.AllAsNoTrackingWithDeleted(), Times.Once);
        }
Пример #9
0
        public async Task <IActionResult> GetMessages([FromQuery] ListOptions <UserMessageFilter> options)
        {
            var messages = await UserMessagesService.GetUserMessages(UserCode, options);

            return(Ok(messages));
        }