public async Task ShouldThrowReviewResourceNotFoundExceptionOnUpdate() { _reviewRepositoryMock.GetById(Arg.Any <Guid>()).Returns(null as Review); CreateOrUpdateReviewRequestModel model = new CreateOrUpdateReviewRequestModel() { Image = new MemoryStream(), Stars = 1, Text = "TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT", Title = "TITLE" }; Exception exception = await Record.ExceptionAsync(() => _reviewService.Update(_fakeInsertedConfirmedUser.Id.ToString(), Guid.NewGuid().ToString(), model)); Assert.IsType <ResourceNotFoundException>(exception); }
public async Task <IdResponseModel> Create(string userId, CreateOrUpdateReviewRequestModel model) { await new CreateOrUpdateReviewValidator().ValidateRequestModelAndThrow(model); Review review = new Review(model.Title, model.Text, model.Stars, Guid.Parse(userId)); review.AddImage(await UploadImage(model.Image)); await _reviewRepository.Create(review); await _reviewRepository.Save(); return(new IdResponseModel() { Id = review.Id }); }
public async Task ShouldThrowForbiddenExceptionOnUpdate() { Guid reviewCreatorIdDifferentThanAuthenticatedUserId = Guid.NewGuid(); _reviewRepositoryMock.GetById(Arg.Any <Guid>()).Returns(new Review("", "", 1, reviewCreatorIdDifferentThanAuthenticatedUserId)); CreateOrUpdateReviewRequestModel model = new CreateOrUpdateReviewRequestModel() { Image = new MemoryStream(), Stars = 1, Text = "TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT", Title = "TITLE" }; Exception exception = await Record.ExceptionAsync(() => _reviewService.Update(_fakeInsertedConfirmedUser.Id.ToString(), Guid.NewGuid().ToString(), model)); Assert.IsType <ForbiddenException>(exception); }
public async Task <IActionResult> Create([FromForm] CreateOrUpdateReviewModel model) { try { CreateOrUpdateReviewRequestModel serviceModel = new CreateOrUpdateReviewRequestModel() { Image = model.Image.OpenReadStream(), Stars = model.Stars, Text = model.Text, Title = model.Title }; return(CreatedAtRoute("", await _reviewService.Create(this.GetUserIdFromToken(), serviceModel))); } catch (Exception exception) { return(this.HandleExceptionToUserAndLogIfExceptionIsUnexpected(exception)); } }
public async Task Update(string userId, string reviewId, CreateOrUpdateReviewRequestModel model) { await new CreateOrUpdateReviewValidator().ValidateRequestModelAndThrow(model); Review review = await _reviewRepository.GetById(Guid.Parse(reviewId)); if (review == null) { throw new ResourceNotFoundException("review not found."); } ThrowIfAuthenticatedUserNotBeReviewCreator(review, Guid.Parse(userId)); review.Update(model.Title, model.Text, model.Stars); _reviewRepository.Update(review); await _reviewRepository.Save(); await _cacheDatabase.Remove(reviewId); }
public async Task ShouldCreateReview() { CreateOrUpdateReviewRequestModel model = new CreateOrUpdateReviewRequestModel() { Image = new MemoryStream(), Text = "TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT ", Title = "TITLE", Stars = 1 }; _fileUploadUtilsMock.UploadImage(Arg.Any <Stream>()).Returns(new FileDTO() { FileName = "FILENAME", FilePath = "FILEPATH" }); Exception exception = await Record.ExceptionAsync(() => _reviewService.Create(Guid.NewGuid().ToString(), model)); Assert.Null(exception); await _reviewRepositoryMock.Received(1).Create(Arg.Any <Review>()); await _reviewRepositoryMock.Received(1).Save(); }
public async Task ShouldUpdate() { Guid reviewId = Guid.NewGuid(); Review insertedReview = new Review(reviewId, "", "", 1, _fakeInsertedConfirmedUser.Id); _reviewRepositoryMock.GetById(Arg.Any <Guid>()).Returns(insertedReview); CreateOrUpdateReviewRequestModel model = new CreateOrUpdateReviewRequestModel() { Image = new MemoryStream(), Stars = 1, Text = "TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT", Title = "TITLE" }; Exception exception = await Record.ExceptionAsync(() => _reviewService.Update(_fakeInsertedConfirmedUser.Id.ToString(), reviewId.ToString(), model)); Assert.Null(exception); _reviewRepositoryMock.Received(1).Update(Arg.Any <Review>()); await _reviewRepositoryMock.Received(1).Save(); await _cacheDatabaseUtilsMock.Received(1).Remove(Arg.Any <string>()); }