CategoryTest.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. declare(strict_types=1);
  3. class CategoryTest extends PHPUnit\Framework\TestCase {
  4. public function test__construct_whenNoParameters_createsObjectWithDefaultValues(): void {
  5. $category = new FreshRSS_Category();
  6. self::assertEquals(0, $category->id());
  7. self::assertEquals('', $category->name());
  8. }
  9. /**
  10. * @dataProvider provideValidNames
  11. */
  12. public function test_name_whenValidValue_storesModifiedValue(string $input, string $expected): void {
  13. $category = new FreshRSS_Category($input);
  14. self::assertEquals($expected, $category->name());
  15. }
  16. /** @return array<array{string,string}> */
  17. public function provideValidNames(): array {
  18. return [
  19. ['', ''],
  20. ['this string does not need trimming', 'this string does not need trimming'],
  21. [' this string needs trimming on left', 'this string needs trimming on left'],
  22. ['this string needs trimming on right ', 'this string needs trimming on right'],
  23. [' this string needs trimming on both ends ', 'this string needs trimming on both ends'],
  24. [str_repeat('X', 512), str_repeat('X', FreshRSS_DatabaseDAO::LENGTH_INDEX_UNICODE)], // max length
  25. ];
  26. }
  27. public function test_feedOrdering(): void {
  28. $feed_1 = $this->getMockBuilder(FreshRSS_Feed::class)
  29. ->disableOriginalConstructor()
  30. ->getMock();
  31. $feed_1->expects(self::any())
  32. ->method('name')
  33. ->willReturn('AAA');
  34. $feed_2 = $this->getMockBuilder(FreshRSS_Feed::class)
  35. ->disableOriginalConstructor()
  36. ->getMock();
  37. $feed_2->expects(self::any())
  38. ->method('name')
  39. ->willReturn('ZZZ');
  40. $feed_3 = $this->getMockBuilder(FreshRSS_Feed::class)
  41. ->disableOriginalConstructor()
  42. ->getMock();
  43. $feed_3->expects(self::any())
  44. ->method('name')
  45. ->willReturn('lll');
  46. $category = new FreshRSS_Category('test', 0, [
  47. $feed_1,
  48. $feed_2,
  49. $feed_3,
  50. ]);
  51. $feeds = $category->feeds();
  52. self::assertCount(3, $feeds);
  53. $feed = reset($feeds) ?: FreshRSS_Feed::default();
  54. self::assertEquals('AAA', $feed->name());
  55. $feed = next($feeds) ?: FreshRSS_Feed::default();
  56. self::assertEquals('lll', $feed->name());
  57. $feed = next($feeds) ?: FreshRSS_Feed::default();
  58. self::assertEquals('ZZZ', $feed->name());
  59. /** @var FreshRSS_Feed&PHPUnit\Framework\MockObject\MockObject */
  60. $feed_4 = $this->getMockBuilder(FreshRSS_Feed::class)
  61. ->disableOriginalConstructor()
  62. ->getMock();
  63. $feed_4->expects(self::any())
  64. ->method('name')
  65. ->willReturn('BBB');
  66. $category->addFeed($feed_4);
  67. $feeds = $category->feeds();
  68. self::assertCount(4, $feeds);
  69. $feed = reset($feeds) ?: FreshRSS_Feed::default();
  70. self::assertEquals('AAA', $feed->name());
  71. $feed = next($feeds) ?: FreshRSS_Feed::default();
  72. self::assertEquals('BBB', $feed->name());
  73. $feed = next($feeds) ?: FreshRSS_Feed::default();
  74. self::assertEquals('lll', $feed->name());
  75. $feed = next($feeds) ?: FreshRSS_Feed::default();
  76. self::assertEquals('ZZZ', $feed->name());
  77. }
  78. }