public async Task ThrowInvalidOperationException_When_NoRatingIsGiven() { var options = TestUtilities.GetOptions(nameof(ThrowInvalidOperationException_When_NoRatingIsGiven)); var barReviewTest = new BarReview() { Bar = barForTest, BarId = barForTest.BarId, Comment = "Message", CreatedOn = DateTime.MinValue, Grade = 0d, User = userForTests, UserId = userForTests.Id }; //using (var arrangeContext = new CMContext(options)) //{ // arrangeContext.Bars.Add(barForTest); // arrangeContext.Users.Add(userForTests); // await arrangeContext.SaveChangesAsync(); //} using (var assertContext = new CMContext(options)) { var sut = new BarManager(assertContext, cocktailManagerMoq.Object, barFactoryMoq.Object); await Assert.ThrowsExceptionAsync <InvalidOperationException>(() => sut.CreateBarReviewAsync(barReviewTest.ToDTO())); } }
public async Task SetsNewRating_WhenValidModelIsPassed() { var options = TestUtils.GetOptions(nameof(SetsNewRating_WhenValidModelIsPassed)); var user = new AppUser { Id = "1" }; var bar = new Bar { Id = "2" }; var barReviewDTO = new BarReviewDTO { Rating = 8, Description = "10", UserID = "1", BarId = "2" }; var review = new BarReview { Rating = 10, Description = "0100101", BarId = "2" }; using (var arrangeContext = new CMContext(options)) { var sut = new ReviewServices(arrangeContext); arrangeContext.Add(user); arrangeContext.Add(bar); arrangeContext.Add(review); await arrangeContext.SaveChangesAsync(); await sut.CreateBarReview(barReviewDTO); Assert.AreEqual(9, arrangeContext.Bars.First().BarRating); } }
public async Task ShowCorrectMessage_When_ThrowsInvalidOperationException() { var options = TestUtilities.GetOptions(nameof(ShowCorrectMessage_When_ThrowsInvalidOperationException)); var message = "Cannot comment a Bar without giving it a rating!"; var barReviewTest = new BarReview() { Bar = barForTest, BarId = barForTest.BarId, Comment = "Message", CreatedOn = DateTime.MinValue, Grade = 0d, User = userForTests, UserId = userForTests.Id }; using (var arrangeContext = new CMContext(options)) { arrangeContext.Bars.Add(barForTest); arrangeContext.Users.Add(userForTests); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new CMContext(options)) { var sut = new BarManager(assertContext, cocktailManagerMoq.Object, barFactoryMoq.Object); var ex = await Assert.ThrowsExceptionAsync <InvalidOperationException>(() => sut.CreateBarReviewAsync(barReviewTest.ToDTO())); Assert.AreEqual(message, ex.Message); } }
public void ThrowWhenIdIsNotFound() { var options = TestUtilities.GetOptions(nameof(ThrowWhenIdIsNotFound)); int resultId = -1; var review1 = new BarReview { Id = resultId, BarId = 1, }; var review2 = new BarReview { Id = -2, BarId = 1, }; var review3 = new BarReview { Id = -3, BarId = 2, }; using (var actContext = new CocktailDB(options)) { actContext.AddAsync(review1).GetAwaiter(); actContext.AddAsync(review2).GetAwaiter(); actContext.AddAsync(review3).GetAwaiter(); actContext.SaveChangesAsync().GetAwaiter(); } using (var assertContext = new CocktailDB(options)) { var sut = new BarReviewServices(assertContext); Assert.ThrowsExceptionAsync <ArgumentNullException>( () => sut.DeleteAsync(int.MaxValue)); } }
public async Task RemoveLikeBarReview_WhenValidBarIdIsPassed() { var options = TestUtils.GetOptions(nameof(RemoveLikeBarReview_WhenValidBarIdIsPassed)); var bar = new Bar { Id = "2" }; var user = new AppUser { Id = "1" }; var review1 = new BarReview { Id = "1", Rating = 6, Description = "0100101", BarId = "2" }; var review2 = new BarReview { Id = "2", Rating = 10, Description = "0100101", BarId = "2" }; var like1 = new BarReviewLike { Id = "1", BarReviewID = "1", AppUserID = "1" }; //var like2 = new BarReviewLike { Id = "2", BarReviewID = "2", AppUserID="1" }; using (var arrangeContext = new CMContext(options)) { var sut = new ReviewServices(arrangeContext); arrangeContext.Add(bar); arrangeContext.Add(user); arrangeContext.Add(review1); arrangeContext.Add(like1); await arrangeContext.SaveChangesAsync(); Assert.AreEqual(1, arrangeContext.BarReviewLikes.Count()); await sut.RemoveBarReviewLike(review1.Id, user.Id); Assert.AreEqual(0, arrangeContext.BarReviewLikes.Count()); } }
public async Task SetsNewRating_WhenValidBarIdIsPassed() { var options = TestUtils.GetOptions(nameof(SetsNewRating_WhenValidBarIdIsPassed)); var bar = new Bar { Id = "2" }; var Bar = new Bar { Id = "1" }; var review1 = new BarReview { Rating = 6, Description = "0100101", BarId = "2" }; var review2 = new BarReview { Rating = 10, Description = "0100101", BarId = "2" }; using (var arrangeContext = new CMContext(options)) { var sut = new ReviewServices(arrangeContext); arrangeContext.Add(bar); arrangeContext.Add(review1); arrangeContext.Add(review2); await arrangeContext.SaveChangesAsync(); await sut.SetAverrageRatingForBar("2"); Assert.AreEqual(8, arrangeContext.Bars.First().BarRating); } }
public async Task ThrowException_WhenLikeDoesntExist() { var options = TestUtils.GetOptions(nameof(ThrowException_WhenLikeDoesntExist)); var bar = new Bar { Id = "2" }; var user = new AppUser { Id = "1" }; var review1 = new BarReview { Id = "1", Rating = 6, Description = "0100101", BarId = "2" }; //var review2 = new BarReview { Id = "2", Rating = 10, Description = "0100101", BarId = "2" }; var like1 = new BarReviewLike { Id = "1", BarReviewID = "1", AppUserID = "1" }; //var like2 = new BarReviewLike { Id = "2", BarReviewID = "2", AppUserID="1" }; using (var arrangeContext = new CMContext(options)) { var sut = new ReviewServices(arrangeContext); arrangeContext.Add(bar); arrangeContext.Add(user); arrangeContext.Add(review1); //arrangeContext.Add(review2); //arrangeContext.Add(like1); await arrangeContext.SaveChangesAsync(); var ex = await Assert.ThrowsExceptionAsync <MagicException>( async() => await sut.RemoveBarReviewLike(review1.Id, user.Id) ); } }
public async Task <IActionResult> Edit(Guid id, [Bind("Id,BarId,UserId,Rating,Comment,DeletedOn,ReviewedOn")] BarReview barReview) { if (id != barReview.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(barReview); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!BarReviewExists(barReview.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["BarId"] = new SelectList(_context.Bars, "Id", "Address", barReview.BarId); ViewData["UserId"] = new SelectList(_context.Users, "Id", "Email", barReview.UserId); return(View(barReview)); }
public void ReturnNullWhenBarIdIsNotFound() { var options = TestUtilities.GetOptions(nameof(ReturnNullWhenBarIdIsNotFound)); var review1 = new BarReview { Id = -1, BarId = 1, }; var review2 = new BarReview { Id = -2, BarId = 1, }; var review3 = new BarReview { Id = -3, BarId = 2, }; using (var actContext = new CocktailDB(options)) { actContext.AddAsync(review1).GetAwaiter(); actContext.AddAsync(review2).GetAwaiter(); actContext.AddAsync(review3).GetAwaiter(); actContext.SaveChangesAsync().GetAwaiter(); } using (var assertContext = new CocktailDB(options)) { var sut = new BarReviewServices(assertContext); var result = sut.GetBarReviewsCollectionAsync(int.MaxValue).GetAwaiter().GetResult(); Assert.AreEqual(0, result.Count); } }
public async Task ThrowExceptionWithCorrectMessage_WhenUserAlreadyReviewedBar() { var options = TestUtils.GetOptions(nameof(ThrowExceptionWithCorrectMessage_WhenUserAlreadyReviewedBar)); var user = new AppUser { Id = "1" }; var bar = new Bar { Id = "2" }; var barReviewDTO = new BarReviewDTO { Rating = 10, Description = "10", UserID = "1", BarId = "2" }; var review = new BarReview { Rating = 5, Description = "0100101", UserId = "1", BarId = "2" }; using (var arrangeContext = new CMContext(options)) { var sut = new ReviewServices(arrangeContext); arrangeContext.Add(user); arrangeContext.Add(bar); arrangeContext.Add(review); await arrangeContext.SaveChangesAsync(); var ex = await Assert.ThrowsExceptionAsync <MagicException>( async() => await sut.CreateBarReview(barReviewDTO) ); Assert.AreEqual("You have already reviewed this bar!", ex.Message); } }
public void CorrectlyDeleteReview() { var options = TestUtilities.GetOptions(nameof(CorrectlyDeleteReview)); int resultId = -1; var review1 = new BarReview { Id = resultId, BarId = 1, }; var review2 = new BarReview { Id = -2, BarId = 1, }; var review3 = new BarReview { Id = -3, BarId = 2, }; using (var actContext = new CocktailDB(options)) { actContext.AddAsync(review1).GetAwaiter(); actContext.AddAsync(review2).GetAwaiter(); actContext.AddAsync(review3).GetAwaiter(); actContext.SaveChangesAsync().GetAwaiter(); } using (var assertContext = new CocktailDB(options)) { var sut = new BarReviewServices(assertContext); sut.DeleteAsync(resultId).GetAwaiter(); Assert.IsFalse(assertContext.BarReviews.Contains(review1)); } }
public async Task <IActionResult> Review(BarReview barReview, int id) { var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); await this.userService.AddBarReview(barReview, id, userId); return(RedirectToAction("Index", "Bars")); }
private BarReviewDTO ProjectToViewModel(BarReview r) { return(new BarReviewDTO { Id = r.Id, Comment = r.Comment, Rating = r.Rating, Username = r.User.UserName, DatePosted = GetPostTimelapse(r.DatePosted) }); }
public static BarReview MapDTOToReview(this BarReviewDTO reviewDTO) { var newReview = new BarReview(); newReview.BarId = reviewDTO.BarId; newReview.Description = reviewDTO.Description; newReview.Rating = reviewDTO.Rating; newReview.UserId = reviewDTO.UserID; newReview.ReviewDate = DateTime.Now; return(newReview); }
public static BarReview BarReviewDTOMapToModel(this BarReviewDTO barReviewDTO) { var barReview = new BarReview(); barReview.BarId = barReviewDTO.BarId; barReview.UserId = barReviewDTO.UserId; barReview.Rating = barReviewDTO.Rating; barReview.Comment = barReviewDTO.Comment; barReview.ReviewedOn = DateTime.UtcNow; return(barReview); }
public BarReview Create(string comment, int?rating, string userId, int barId) { var review = new BarReview { Comment = comment, Rating = rating, UserId = userId, BarId = barId }; return(review); }
public static BarReview ToEntity(this BarReviewDTO barReviewDTO) { var barReview = new BarReview { UserId = barReviewDTO.UserId, BarId = barReviewDTO.BarId, Grade = barReviewDTO.Grade, Comment = barReviewDTO.Comment, CreatedOn = barReviewDTO.DateCreated }; return(barReview); }
public async Task <IActionResult> Create([Bind("Id,BarId,UserId,Rating,Comment,DeletedOn,ReviewedOn")] BarReview barReview) { if (ModelState.IsValid) { barReview.Id = Guid.NewGuid(); _context.Add(barReview); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["BarId"] = new SelectList(_context.Bars, "Id", "Address", barReview.BarId); ViewData["UserId"] = new SelectList(_context.Users, "Id", "Email", barReview.UserId); return(View(barReview)); }
public static BarReviewDTO ToDTO(this BarReview barReview) { var barReviewDTO = new BarReviewDTO { UserId = barReview.UserId, BarId = barReview.BarId, Comment = barReview.Comment, Grade = barReview.Grade, UserName = barReview.User.UserName, UserPicture = barReview.User.Picture, DateCreated = barReview.CreatedOn }; return(barReviewDTO); }
public static BarReviewEntity ToEntity(this BarReview contract) { if (contract == null) { return(null); } return(new BarReviewEntity { UserEntityId = contract.User?.Id, BarEntityId = contract.Bar?.Id ?? 0, Rating = contract.Rating, Review = contract.Review }); }
public async Task <BarReviewDTO> CreateBarReviewAsync(Guid barId, Guid userId, int rating, string comment) { var barReviewExists = await _cmContext.BarReviews.AnyAsync(br => br.UserId == userId && br.BarId == barId && br.DeletedOn == null); if (barReviewExists) { throw new ArgumentException("This bar has already been reviewed by the user"); } var bar = await _cmContext.Bars.Where(b => b.Id == barId && b.UnlistedOn == null).FirstOrDefaultAsync(); if (bar == null) { throw new ArgumentNullException("Bar is not available."); } var userExists = await _cmContext.Users.AnyAsync(u => u.Id == userId && u.DeletedOn == null); if (!userExists) { throw new ArgumentNullException("User is not available"); } if (rating < 1 || rating > 5) { throw new ArgumentOutOfRangeException("Rating must be bewtween 1 and 5."); } var barReview = new BarReview(); barReview.BarId = barId; barReview.UserId = userId; barReview.Rating = rating; barReview.Comment = comment; barReview.ReviewedOn = DateTime.UtcNow; try { bar.AvgRating = await this.CalculateAvgRating(barId, rating); _cmContext.BarReviews.Add(barReview); await _cmContext.SaveChangesAsync(); } catch (Exception) { throw; } var barReviewDTO = barReview.BarMapReviewDTO(); return(barReviewDTO); }
public static BarReviewDTO BarMapReviewDTO(this BarReview barReview) { var barReviewDTO = new BarReviewDTO(); barReviewDTO.Id = barReview.Id; barReviewDTO.BarId = barReview.BarId; barReviewDTO.UserId = barReview.UserId; barReviewDTO.Rating = barReview.Rating; barReviewDTO.Comment = barReview.Comment; barReviewDTO.ReviewedOn = barReview.ReviewedOn; barReviewDTO.BarName = barReview.Bar.Name; barReviewDTO.UserName = barReview.User.UserName; barReviewDTO.BarReviewLikes = barReview.BarReviewLikes; return(barReviewDTO); }
public static BarReviewDTO BarMapReviewToDTO(this BarReview review) { var newReviewDTO = new BarReviewDTO(); newReviewDTO.Id = review.Id; newReviewDTO.BarId = review.BarId; newReviewDTO.Description = review.Description; newReviewDTO.UserName = review.User.UserName; newReviewDTO.BarName = review.Bar.Name; newReviewDTO.UserID = review.UserId; newReviewDTO.Rating = review.Rating; newReviewDTO.ReviewDate = review.ReviewDate; newReviewDTO.LikeCount = review.BarReviewLikes.Count; newReviewDTO.LikedByUsers = review.BarReviewLikes.Select(b => b.AppUserID).ToList(); return(newReviewDTO); }
public async Task <BarReview> AddBarReview(BarReview review, int barId, string userId) { var bar = await this.context.Bars.Where(x => x.Id == barId).SingleOrDefaultAsync(); bar.Rating = await this.barService.CalculateAverageRating(bar.ToContract(), review.Rating); var reviewEntity = review.ToEntity(); reviewEntity.BarEntityId = barId; reviewEntity.UserEntityId = userId; await this.context.BarReviews.AddAsync(reviewEntity); this.context.Bars.Update(bar); await this.context.SaveChangesAsync(); return(reviewEntity.ToContract()); }
public GetBarForDetails_Should() { barForTest = new Bar() { BarId = "One", Address = "Solunska 2", Information = "Information", MapDirections = "Go south", Name = "Bar", Picture = "Picture" }; user = new User() { Id = "One", UserName = "******" }; cocktail = new Cocktail() { Id = "One", Name = "Cocktail" }; barCocktail = new BarCocktail() { BarId = barForTest.BarId, Bar = barForTest, CocktailId = cocktail.Id, Cocktail = cocktail }; barReview = new BarReview() { BarId = barForTest.BarId, Bar = barForTest, Comment = "Comment", CreatedOn = DateTime.MinValue, Grade = 5d, UserId = user.Id, User = user }; }
public async Task GetCorrectCountOfLikes_WhenValidParamethersArePassed() { var options = TestUtils.GetOptions(nameof(GetCorrectCountOfLikes_WhenValidParamethersArePassed)); var bar = new Bar { Id = "2" }; var user = new AppUser { Id = "1" }; var user2 = new AppUser { Id = "2" }; var review1 = new BarReview { Id = "1", Rating = 6, Description = "0100101", BarId = "2" }; //var review2 = new BarReview { Id = "2", Rating = 10, Description = "0100101", BarId = "2" }; var like1 = new BarReviewLike { Id = "1", BarReviewID = "1", AppUserID = "1" }; var like2 = new BarReviewLike { Id = "2", BarReviewID = "1", AppUserID = "2" }; using (var arrangeContext = new CMContext(options)) { var sut = new ReviewServices(arrangeContext); arrangeContext.Add(bar); arrangeContext.Add(user); arrangeContext.Add(user2); arrangeContext.Add(review1); //arrangeContext.Add(review2); arrangeContext.Add(like1); await arrangeContext.SaveChangesAsync(); await sut.LikeBarReview(bar.Id, user.Id); var result = await sut.LikeBarReview(bar.Id, user2.Id); Assert.AreEqual(2, result); } }
public async Task AddReviewToTheCorrectBar() { var testBarId = 2; var testUserId = "TestUserId"; var testBarRating = 5; var testBarReview = new BarReview() { User = new User() { Id = testUserId, Name = "Pesho", Email = "*****@*****.**" }, Rating = testBarRating, }; var options = TestUtilities.GetOptions(nameof(AddReviewToTheCorrectBar)); using (var arrangeContext = new AppDBContext(options)) { await arrangeContext.BarReviews.AddAsync(testBarReview.ToEntity()); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new AppDBContext(options)) { var cocktailService = new CocktailService(assertContext); var barService = new BarService(assertContext); var sut = new UserService(assertContext, barService, cocktailService); var testReview = await sut.AddBarReview(testBarReview, testBarId, testUserId); Assert.AreEqual(testBarRating, testReview.Rating); } }
public CreateBarReviewAsync_Should() { barForTest = new Bar() { BarId = "TwoOne", Address = "Solunska 2", Information = "Information", MapDirections = "Go south", Name = "Bar", Picture = "Picture", Rating = 4.5d }; barTwoTest = new Bar() { BarId = "Two", Address = "Solunska", Information = "Information", MapDirections = "Go south", Name = "Bar", Picture = "Picture", Rating = 4.5d }; userForTests = new User() { Id = "TheOne", UserName = "******", Picture = "Picture" }; createReviewForTest = new BarReview() { Bar = barTwoTest, BarId = barTwoTest.BarId, Comment = "Comment", CreatedOn = DateTime.MinValue, Grade = 3.5d, User = userForTests, UserId = userForTests.Id }; }
public void ReturnNullWhenIdNotFound() { var options = TestUtilities.GetOptions(nameof(ReturnNullWhenIdNotFound)); int resultId = -1; var review = new BarReview { Id = resultId, }; using (var actContext = new CocktailDB(options)) { actContext.AddAsync(review).GetAwaiter(); actContext.SaveChangesAsync().GetAwaiter(); } using (var assertContext = new CocktailDB(options)) { var sut = new BarReviewServices(assertContext); var result = sut.GetBarReviewAsync(int.MaxValue).GetAwaiter().GetResult(); Assert.IsNull(result); } }
public void ReturnCorrectReview() { var options = TestUtilities.GetOptions(nameof(ReturnCorrectReview)); int resultId = -1; var review = new BarReview { Id = resultId, }; using (var actContext = new CocktailDB(options)) { actContext.AddAsync(review).GetAwaiter(); actContext.SaveChangesAsync().GetAwaiter(); } using (var assertContext = new CocktailDB(options)) { var sut = new BarReviewServices(assertContext); var result = sut.GetBarReviewAsync(resultId).GetAwaiter().GetResult(); Assert.IsNotNull(result); Assert.AreEqual(resultId, result.Id); } }