Selaa lähdekoodia

weitere Tests entwickelt

markus 1 kuukausi sitten
vanhempi
sitoutus
f81e401056

+ 14 - 16
src-php/app/internship/controller/ArticleApiController.php

@@ -113,10 +113,9 @@ class ArticleApiController extends ControllerAdapter {
 
         if (!$this->isValidArticleCategory($categoryName)) {
 			throw new BadRequestException();
-
         }
 
-            $articleToAdd = $this->prepareArticle($title, $text, $categoryName);
+        $articleToAdd = $this->prepareArticle($title, $text, $categoryName);
 
 		$this->beginTransaction();
 		$this->articleDao->saveArticle($articleToAdd);
@@ -150,23 +149,22 @@ class ArticleApiController extends ControllerAdapter {
         $text = $httpData->reqString('text');
 		$categoryName = $httpData->reqString('categoryName');
 
-		$isValidCategory = $this->isValidArticleCategory($categoryName);
-        $article =  $this->articleDao->getArticleById($articleId);
-
-		if ($isValidCategory && $article) {
-
-            $article->setCategoryName($categoryName);
-            $article->setTitle($title);
-            $article->setText($text);
+        if (!$this->isValidArticleCategory($categoryName)) {
+            throw new BadRequestException();
+        }
 
-			$this->beginTransaction();
-			$this->articleDao->saveArticle($article);
-            $this->commit();
+        $article =  $this->articleDao->getArticleById($articleId);
+        if ($article === null) {
+            throw new PageNotFoundException();
+        }
 
-		} else {
-			throw new BadRequestException();
-		}
+        $article->setCategoryName($categoryName);
+        $article->setTitle($title);
+        $article->setText($text);
 
+        $this->beginTransaction();
+        $this->articleDao->saveArticle($article);
+        $this->commit();
 	}
 
 	/**

+ 1 - 3
src-php/app/internship/model/ArticleDao.php

@@ -24,10 +24,8 @@ class ArticleDao {
 	 * @return Article[]
 	 */
 	function getArticles(): array {
-		$criteria = $this->em->createSimpleCriteria(Article::getClass());
+		$criteria = $this->em->createSimpleCriteria(Article::getClass(), array(), array('id' => 'DESC'));
 		return $criteria->toQuery()->fetchArray();
-        /*return $this->em->createNqlCriteria('SELECT a FROM Article a WHERE a.category = :category ORDER BY title ASC')
-            ->toQuery()->fetchArray();*/
 	}
 
 	/**

+ 38 - 12
src-php/test/internship/controller/ArticleControllerTest.php

@@ -19,9 +19,9 @@ class ArticleControllerTest extends TestCase {
 		GeneralTestEnv::tearDown();
 
 		$tx = TestEnv::createTransaction();
-		$article1 = ArticleTestEnv::setUpArticle('Title 1', 'Loren ipsum 1', 'teaser');
+		$article1 = ArticleTestEnv::setUpArticle('Title 3', 'Loren ipsum 1', 'teaser');
 		$article2 = ArticleTestEnv::setUpArticle('Title 2', 'Loren ipsum 2', 'news');
-		$article3 = ArticleTestEnv::setUpArticle('Title 3', 'Loren ipsum 3', 'news');
+		$article3 = ArticleTestEnv::setUpArticle('Title 1', 'Loren ipsum 3', 'news');
 		$tx->commit();
 
 		$this->article1Id = $article1->getId();
@@ -46,36 +46,62 @@ class ArticleControllerTest extends TestCase {
 	}
 
     function testGetArticleById() {
+
+        // $articlePOST = ArticleTestEnv::getArticleById($this->article3Id);
+
         $response = TestEnv::http()->newRequest()
-            ->get(['api', 'articles'])
-            ->exec();
+                    ->get(['api', 'articles'])
+                    ->exec();
 
         $articleStructs = $response->parseJson();
-        $this->assertCount(3, $articleStructs);
 
-        $id = 3;
         $this->assertEquals('Title 3', $articleStructs[2]['title']);
+    }
+
+    function testPostDoArticle() {
 
+        $tx = TestEnv::createTransaction();
+        $articlePOST = ArticleTestEnv::setUpArticle('Title POST', 'Loren ipsum POST', 'teaser POST');
+        $tx->commit();
 
+        $this->articlePOSTId = $articlePOST->getId();
+
+        $response = TestEnv::http()->newRequest()
+            ->get(['api', 'articles'])
+            ->exec();
+
+        $articleStructs = $response->parseJson();
+        $this->assertCount(4, $articleStructs);
     }
 
-    function testDeleteDoArticle() {
+    function testPutDoArticle() {
+
+        $tx = TestEnv::createTransaction();
+        ArticleTestEnv::updateArticle(1, 'Title PUT', 'Loren ipsum PUT', 'teaser PUT');
+        $tx->commit();
 
         $response = TestEnv::http()->newRequest()
             ->get(['api', 'articles'])
             ->exec();
 
         $articleStructs = $response->parseJson();
+        $this->assertCount(3, $articleStructs);
+        $this->assertEquals('Title PUT', $articleStructs[2]['title']);
+        //var_dump($articleStructs);
+    }
 
+    function testDeleteDoArticle() {
+
+        $tx = TestEnv::createTransaction();
         ArticleTestEnv::removeArticle(3);
-        $this->assertCount(2, $articleStructs);
+        $tx->commit();
 
-        /*
-        $this->assertEquals('Title 3', $articleStructs[2]['title']);
+        $response = TestEnv::http()->newRequest()
+            ->get(['api', 'articles'])
+            ->exec();
 
         $articleStructs = $response->parseJson();
-        $this->assertCount(3, $articleStructs);
-        */
+        $this->assertCount(2, $articleStructs);
     }
 
 }

+ 19 - 1
src-php/test/internship/test/ArticleTestEnv.php

@@ -18,13 +18,31 @@ class ArticleTestEnv  {
         return $article;
     }
 
+    static function getArticleById($articleId) {
+        $article = TestEnv::em()->find(Article::getClass(), $articleId);
+        return $article;
+    }
+
+    static function updateArticle($articleId, string $title, string $text, string $categoryName): Article {
+        $existingArticle = TestEnv::em()->find(Article::getClass(), $articleId);
+
+        $existingArticle->setTitle($title);
+        $existingArticle->setText($text);
+        $existingArticle->setCategoryName($categoryName);
+
+        TestEnv::em()->persist($existingArticle);
+        TestEnv::em()->flush();
+
+        return $existingArticle;
+    }
+
     static function removeArticle(int $id) {;
 
         $article = TestEnv::em()->createSimpleCriteria(Article::class, array('id' => $id))->toQuery()->fetchSingle();
 
         //TestEnv::em()->beginTransaction();
         TestEnv::em()->remove($article);
-        //TestEnv::em()->flush();
+        TestEnv::em()->flush();
         //TestEnv::em()->commit();
 
         // return $article;