ArticleControllerTest.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 util\GeneralTestEnv;
  8. class ArticleControllerTest extends TestCase {
  9. private int $article1Id;
  10. private int $article2Id;
  11. private int $article3Id;
  12. function setUp(): void {
  13. GeneralTestEnv::tearDown();
  14. $tx = TestEnv::createTransaction();
  15. $article1 = ArticleTestEnv::setUpArticle('Title 1', 'Loren ipsum 1', 'teaser');
  16. $article2 = ArticleTestEnv::setUpArticle('Title 2', 'Loren ipsum 2', 'news');
  17. $article3 = ArticleTestEnv::setUpArticle('Title 3', 'Loren ipsum 3', 'news');
  18. $tx->commit();
  19. $this->article1Id = $article1->getId();
  20. $this->article2Id = $article2->getId();
  21. $this->article3Id = $article3->getId();
  22. }
  23. function testGetDoArticles() {
  24. $response = TestEnv::http()->newRequest()
  25. ->get(['api', 'articles'])
  26. ->exec();
  27. $articleStructs = $response->parseJson();
  28. $this->assertCount(3, $articleStructs);
  29. $this->assertEquals('Title 3', $articleStructs[0]['title']);
  30. $this->assertEquals('Title 2', $articleStructs[1]['title']);
  31. $this->assertEquals('Title 1', $articleStructs[2]['title']);
  32. }
  33. function testGetDoArticlesByCategoryName() {
  34. $response = TestEnv::http()->newRequest()
  35. ->get(['api', 'articles', 'news'])
  36. ->exec();
  37. $articleStructs = $response->parseJson();
  38. $this->assertCount(2,$articleStructs);
  39. var_dump($articleStructs);
  40. $this->assertEquals('Title 3', $articleStructs[0]['title']);
  41. $this->assertEquals('Title 2', $articleStructs[1]['title']);
  42. $this->assertEquals('news', $articleStructs[0]['categoryName']);
  43. }
  44. function testGetDoArticle() {
  45. $response = TestEnv::http()->newRequest()
  46. ->get(['api', 'article', 2])
  47. ->exec();
  48. $articleStruct = $response->parseJson();
  49. var_dump($articleStruct);
  50. $this->assertEquals('Title 2', $articleStruct['title']);
  51. $this->assertEquals(2,$articleStruct['id']);
  52. }
  53. function testGetDoArticleNotFound() {
  54. $this->expectException(PageNotFoundException::class);
  55. $response = TestEnv::http()->newRequest()
  56. ->get(['api', 'article', 7])
  57. ->exec();
  58. }
  59. }