function it_updates_review_subject_average_rating_from_review($averageRatingCalculator, $reviewSubjectManager, ReviewableInterface $reviewSubject, ReviewInterface $review) { $review->getReviewSubject()->willReturn($reviewSubject); $averageRatingCalculator->calculate($reviewSubject)->willReturn(4.5); $reviewSubject->setAverageRating(4.5)->shouldBeCalled(); $reviewSubjectManager->flush($reviewSubject)->shouldBeCalled(); $this->updateFromReview($review); }
/** * @param ReviewInterface $review * @param ReviewableInterface[] $reviewSubjectsToRecalculate * * @return array */ private function removeReviewsAndExtractSubject(ReviewInterface $review, array $reviewSubjectsToRecalculate) { $reviewSubject = $review->getReviewSubject(); if (!in_array($reviewSubject, $reviewSubjectsToRecalculate)) { $reviewSubjectsToRecalculate[] = $reviewSubject; } $this->reviewManager->remove($review); return $reviewSubjectsToRecalculate; }
function it_removes_soft_deleted_customer_reviews_and_recalculates_their_product_ratings($averageRatingUpdater, $reviewRepository, $reviewManager, ReviewerInterface $author, ReviewableInterface $reviewSubject, ReviewInterface $review) { $reviewRepository->findBy(['author' => $author])->willReturn([$review]); $review->getReviewSubject()->willReturn($reviewSubject); $reviewManager->remove($review)->shouldBeCalled(); $reviewManager->flush()->shouldBeCalled(); $averageRatingUpdater->update($reviewSubject)->shouldBeCalled(); $this->removeReviewerReviews($author); }
/** * {@inheritdoc} */ public function updateFromReview(ReviewInterface $review) { $this->modifyReviewSubjectAverageRating($review->getReviewSubject()); }