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); }
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)); }
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()); }
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()); }
public async Task <IActionResult> GetMessageById([FromRoute] Guid messageId) { var message = await UserMessagesService.GetMessageById(messageId, UserCode); if (message == null) { return(NotFound()); } return(Ok(message)); }
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()); }
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()); }
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); }
public async Task <IActionResult> GetMessages([FromQuery] ListOptions <UserMessageFilter> options) { var messages = await UserMessagesService.GetUserMessages(UserCode, options); return(Ok(messages)); }