ArticleControllerTest.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace internship\controller;
  3. use mysql_xdevapi\Exception;
  4. use n2n\web\http\PageNotFoundException;
  5. use PHPUnit\Framework\TestCase;
  6. use n2n\test\TestEnv;
  7. use internship\test\ArticleTestEnv;
  8. use util\GeneralTestEnv;
  9. class ArticleControllerTest extends TestCase {
  10. private int $article1Id;
  11. private int $article2Id;
  12. private int $article3Id;
  13. function setUp(): void {
  14. GeneralTestEnv::tearDown();
  15. $tx = TestEnv::createTransaction();
  16. $article1 = ArticleTestEnv::setUpArticle('Title 1', 'Loren ipsum 1', 'teaser');
  17. $article2 = ArticleTestEnv::setUpArticle('Title 2', 'Loren ipsum 2', 'news');
  18. $article3 = ArticleTestEnv::setUpArticle('Title 3', 'Loren ipsum 3', 'news');
  19. $tx->commit();
  20. $this->article1Id = $article1->getId();
  21. $this->article2Id = $article2->getId();
  22. $this->article3Id = $article3->getId();
  23. }
  24. function testGetDoArticles() {
  25. $response = TestEnv::http()->newRequest()
  26. ->get(['api', 'articles'])
  27. ->exec();
  28. $articleStructs = $response->parseJson();
  29. $this->assertCount(3, $articleStructs);
  30. $this->assertEquals('Title 3', $articleStructs[0]['title']);
  31. $this->assertEquals('Title 2', $articleStructs[1]['title']);
  32. $this->assertEquals('Title 1', $articleStructs[2]['title']);
  33. }
  34. function testGetDoArticlesByCategoryName() {
  35. $response = TestEnv::http()->newRequest()
  36. ->get(['api', 'articles', 'news'])
  37. ->exec();
  38. $articleStructs = $response->parseJson();
  39. $this->assertCount(2, $articleStructs);
  40. $this->assertEquals('Loren ipsum 3', $articleStructs[0]['text']);
  41. $this->assertEquals('Loren ipsum 2', $articleStructs[1]['text']);
  42. }
  43. function testGetDoArticle() {
  44. $response = TestEnv::http()->newRequest()
  45. ->get(['api', 'article', '2'])
  46. ->exec();
  47. $articleStructs = $response->parseJson();
  48. $this->assertEquals('2', $articleStructs[2]['id']);
  49. }
  50. function testGetDoArticleError() {
  51. try {
  52. $response = TestEnv::http()->newRequest()
  53. ->get(['api', 'article', '5'])
  54. ->exec();
  55. $this->fail("Page wurde anscheinend doch gefunden");
  56. } catch (PageNotFoundException $e){
  57. $this->assertNotEmpty($e, '');
  58. }
  59. }
  60. }