public static function updateReview()
 {
     // Process updating review
     $reviews = ReviewsDB::getReviewsBy('reviewId', $_SESSION['arguments']);
     if (empty($reviews)) {
         HomeView::show();
         header('Location: /' . $_SESSION['base']);
     } elseif ($_SERVER["REQUEST_METHOD"] == "GET") {
         $_SESSION['reviews'] = $reviews;
         ReviewView::showUpdate();
     } else {
         $parms = $reviews[0]->getParameters();
         $parms['score'] = array_key_exists('score', $_POST) ? $_POST['score'] : $reviews[0]->getScore();
         $parms['review'] = array_key_exists('review', $_POST) ? $_POST['review'] : $reviews[0]->getReview();
         $newReview = new Review($parms);
         $newReview->setReviewId($reviews[0]->getReviewId());
         $review = ReviewsDB::updateReview($newReview);
         if ($review->getErrorCount() != 0) {
             $_SESSION['reviews'] = array($newReview);
             ReviewView::showUpdate();
         } else {
             HomeView::show();
             header('Location: /' . $_SESSION['base']);
         }
     }
 }
 public static function getReviewsArray($rowSets)
 {
     // Return an array of Review objects extracted from $rowSets
     $reviews = array();
     foreach ($rowSets as $reviewRow) {
         $review = new Review($reviewRow);
         $review->setReviewId($reviewRow['reviewId']);
         array_push($reviews, $review);
     }
     return $reviews;
 }
Exemple #3
0
 public function testUpdateReview()
 {
     $myDb = DBMaker::create('ptest');
     Database::clearDB();
     $db = Database::getDB('ptest', 'C:\\xampp\\myConfig.ini');
     $beforeCount = count(ReviewsDB::getReviewsBy());
     $reviews = ReviewsDB::getReviewsBy('reviewId', 1);
     $currentReview = $reviews[0];
     $parms = $currentReview->getParameters();
     $parms['review'] = 'new review text';
     $newReview = new Review($parms);
     $newReview->setReviewId($currentReview->getReviewId());
     $updatedReview = ReviewsDB::updateReview($newReview);
     $afterCount = count(ReviewsDB::getReviewsBy());
     $this->assertEquals($beforeCount, $afterCount, 'The number of reviews in the database should not change after update');
     $this->assertEquals($updatedReview->getReviewId(), $newReview->getReviewId(), 'The id of the updated review should remain the same');
 }
<?php 
$input = array("reviewerName" => "Kay", "submissionID" => 2, "score" => "5", "review" => "This was a great presentation");
$theReview = new Review($input);
echo "The review {$theReview}";
echo "The reviewer name is " . $theReview->getReviewerName() . "<br>";
$_SESSION = array('reviews' => array($theReview), 'base' => "mvcdbcrud");
ReviewView::show();
?>

<h2>It should show display the review form with errors at the top if invalid entry</h2>
<?php 
$input = array("reviewerName" => "Kay#");
$theReview = new Review($input);
echo "The review {$theReview}";
echo "The reviewer name is " . $theReview->getReviewerName() . "<br>";
$_SESSION = array('reviews' => array($theReview), 'base' => "mvcdbcrud");
ReviewView::show();
?>

<h2>It should allow updating when a valid review is passed</h2>
<?php 
$validTest = array("reviewerName" => "Kay", "submissionId" => 2, "score" => "5", "review" => "This was a great presentation");
$review = new Review($validTest);
$review->setReviewId(1);
echo $review;
$_SESSION = array('reviews' => array($review), 'base' => "mvcdbcrud");
ReviewView::showUpdate();
?>
</body>
</html>
echo "Now the database has {$afterCount}<br>";
?>

<h2>It should all update of a valid review</h2>
<?php 
DBMaker::create('ptest');
Database::clearDB();
$db = Database::getDB('ptest', 'C:\\xampp\\myConfig.ini');
$beforeCount = count(ReviewsDB::getReviewsBy());
$reviews = ReviewsDB::getReviewsBy('reviewId', 1);
$currentReview = $reviews[0];
echo "Current review: {$currentReview}<br>";
$parms = $currentReview->getParameters();
$parms['review'] = 'new review text';
$newReview = new Review($parms);
$newReview->setReviewId($currentReview->getReviewId());
$updatedReview = ReviewsDB::updateReview($newReview);
echo "Updated review: {$updatedReview}<br>";
$afterCount = count(ReviewsDB::getReviewsBy());
echo "<br>Count before update = {$beforeCount}<br>";
echo "Count after = {$afterCount}<br>";
?>

 <h2>It should get a review by reviewer name</h2>
<?php 
DBMaker::create('ptest');
Database::clearDB();
$db = Database::getDB('ptest', 'C:\\xampp\\myConfig.ini');
$reviews = ReviewsDB::getReviewsBy('reviewerName', 'Alice');
echo "<br>Number of reviews by Alice is " . count($reviews);
foreach ($reviews as $review) {