ArticleControllerTest.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace internship\controller;
  3. use n2n\web\http\PageNotFoundException;
  4. use PHPUnit\Framework\TestCase;
  5. use n2n\test\TestEnv;
  6. use internship\test\ArticleTestEnv;
  7. use PHPUnit\Util\Test;
  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 testGetDoArticlesWithCategoryName() {
  35. $response = TestEnv::http()->newRequest()
  36. ->get(['api','articles', 'teaser'])
  37. ->exec();
  38. $articleStructs = $response->parseJson();
  39. $this->assertCount(1, $articleStructs);
  40. $this->assertEquals('teaser', $articleStructs[0]['categoryName']);
  41. }
  42. function testGetDoArticlesWithCategoryName2() {
  43. $response = TestEnv::http()->newRequest()
  44. ->get(['api','articles', 'news'])
  45. ->exec();
  46. $articleStructs = $response->parseJson();
  47. $this->assertCount(2, $articleStructs);
  48. $this->assertEquals('Title 3', $articleStructs[0]['title']);
  49. $this->assertEquals('Title 2', $articleStructs[1]['title']);
  50. }
  51. function testGetDoArticleById() {
  52. $response = TestEnv::http()->newRequest()
  53. ->get(['api', 'article', 1])
  54. ->exec();
  55. $articleStructs = $response->parseJson();
  56. $this->assertCount(4, $articleStructs);
  57. $this->assertEquals($this->article1Id, $articleStructs['id']);
  58. }
  59. function testGetDoArticleUnknownId() {
  60. $this->expectException(PageNotFoundException::class);
  61. $response = TestEnv::http()->newRequest()
  62. ->get(['api', 'article', 11])
  63. ->exec();
  64. }
  65. }