public async Task CreateComment_Throws_When_NoUserFound() { //Arrange var options = Utils.GetOptions(nameof(CreateComment_Throws_When_NoUserFound)); var bar = new Bar { Id = Guid.NewGuid(), Name = "Manhattan" }; var userId = Guid.NewGuid(); var barCommentDTO = new BarCommentDTO { BarId = bar.Id, UserId = userId }; using (var arrangeContext = new CMContext(options)) { await arrangeContext.Bars.AddRangeAsync(bar); await arrangeContext.SaveChangesAsync(); } //Act, Assert using (var assertContext = new CMContext(options)) { var sut = new BarCommentsServices(assertContext); await Assert.ThrowsExceptionAsync <ArgumentNullException>(() => sut.CreateComment(barCommentDTO)); } }
public static BarCommentViewModel GetViewModel(this BarCommentDTO item) { if (item == null) { throw new ArgumentNullException(); } return(new BarCommentViewModel { BarId = item.BarId, UserId = item.UserId, Comment = item.Comments, Name = item.User.UserName, }); }
public static BarComment GetEntity(this BarCommentDTO item) { if (item == null) { throw new ArgumentNullException(); } return(new BarComment { BarId = item.BarId, UserId = item.UserId, Comments = item.Comments, CreatedOn = item.CreatedOn, }); }
public async Task CreateComment_CreatesBar_Correct() { //Arrange var options = Utils.GetOptions(nameof(CreateComment_CreatesBar_Correct)); var user = new User { Id = Guid.NewGuid(), UserName = "******" }; var bar = new Bar { Id = Guid.NewGuid(), Name = "Manhattan" }; var barCommentDTO = new BarCommentDTO { BarId = bar.Id, UserId = user.Id, Comments = "Good bar" }; using (var arrangeContext = new CMContext(options)) { await arrangeContext.Users.AddRangeAsync(user); await arrangeContext.Bars.AddRangeAsync(bar); await arrangeContext.SaveChangesAsync(); } //Act, Assert using (var assertContext = new CMContext(options)) { var sut = new BarCommentsServices(assertContext); var result = await sut.CreateComment(barCommentDTO); Assert.AreEqual(bar.Id, result.BarId); Assert.AreEqual(user.Id, result.UserId); Assert.AreEqual(1, assertContext.BarComments.Count()); Assert.IsInstanceOfType(result, typeof(BarCommentDTO)); } }
/// <summary> /// Takes the ID of the user and as well of the bar and creates new comment. /// </summary> /// <param name="barComment">The data transfer object of bar comment that should be created</param> /// <returns>The created comment of bar</returns> public async Task <BarCommentDTO> CreateComment(BarCommentDTO barComment) { var user = await this.context.Users.FirstOrDefaultAsync(u => u.Id == barComment.UserId) ?? throw new ArgumentNullException(Exceptions.NullEntityId); var bar = await this.context.Bars.FirstOrDefaultAsync(b => b.Id == barComment.BarId) ?? throw new ArgumentNullException(Exceptions.NullEntityId); if (String.IsNullOrWhiteSpace(barComment.Comments)) { throw new ArgumentNullException(Exceptions.CommentRequired); } var newBarComment = barComment.GetEntity(); this.context.Bars.Update(bar); this.context.Users.Update(user); await this.context.BarComments.AddAsync(newBarComment); await this.context.SaveChangesAsync(); return(newBarComment.GetDTO()); }