private function updateRatings(ARUpdateFilter $f) { $this->product->get()->updateRecord(clone $f); $summary = ProductRatingSummary::getInstance($this->product->get(), $this->ratingType->get()); if ($summary->getID()) { $summary->updateRecord(clone $f); } if ($this->review->get() && !$this->review->get()->isDeleted()) { $this->review->get()->updateRecord(clone $f); } }
public function testDelete() { $type = ProductRatingType::getNewInstance(Category::getRootNode()); $type->save(); $type2 = ProductRatingType::getNewInstance(Category::getRootNode()); $type2->save(); for ($k = 0; $k <= 1; $k++) { $review = ProductReview::getNewInstance($this->product, $this->user); $review->save(); $rating = ProductRating::getNewInstance($this->product, $type); $rating->rating->set(6 + $k); $rating->review->set($review); $rating->save(); $rating = ProductRating::getNewInstance($this->product, $type2); $rating->rating->set(4 + $k); $rating->review->set($review); $rating->save(); } $this->product->reload(); $this->assertEqual($this->product->ratingCount->get(), 4); $this->assertEqual($this->product->ratingSum->get(), 22); $this->assertEqual($this->product->rating->get(), 5.5); // delete last review $review->delete(); $this->product->reload(); $this->assertEqual($this->product->ratingCount->get(), 2); $this->assertEqual($this->product->ratingSum->get(), 10); $this->assertEqual($this->product->rating->get(), 5); // check rating summaries $summary = ProductRatingSummary::getInstance($this->product, $type2); $this->assertEqual($summary->rating->get(), 4); }
public function testRatingTypes() { $type = ProductRatingType::getNewInstance(Category::getRootNode()); $type->save(); $rating = ProductRating::getNewInstance($this->product, $type); $rating->rating->set(6); $rating->save(); $this->product->reload(); $this->assertEqual($this->product->ratingCount->get(), 1); $this->assertEqual($this->product->ratingSum->get(), 6); $this->assertEqual($this->product->rating->get(), 6); ActiveRecord::clearPool(); $summary = ProductRatingSummary::getInstance($this->product, $type); $summary->reload(); $this->assertEqual($summary->ratingCount->get(), 1); $this->assertEqual($summary->ratingSum->get(), 6); $this->assertEqual($summary->rating->get(), 6); $type2 = ProductRatingType::getNewInstance(Category::getRootNode()); $type2->save(); $rating = ProductRating::getNewInstance($this->product, $type2); $rating->rating->set(4); $rating->save(); $this->product->reload(); $this->assertEqual($this->product->ratingCount->get(), 2); $this->assertEqual($this->product->ratingSum->get(), 10); $this->assertEqual($this->product->rating->get(), 5); ActiveRecord::clearPool(); $summary = ProductRatingSummary::getInstance($this->product, $type2); $summary->reload(); $this->assertEqual($summary->ratingCount->get(), 1); $this->assertEqual($summary->ratingSum->get(), 4); $this->assertEqual($summary->rating->get(), 4); }