UserQueryTest.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. <?php
  2. declare(strict_types=1);
  3. use PHPUnit\Framework\TestCase;
  4. /**
  5. * Description of UserQueryTest
  6. */
  7. class UserQueryTest extends TestCase {
  8. public static function test__construct_whenAllQuery_storesAllParameters(): void {
  9. $query = ['get' => 'a'];
  10. $user_query = new FreshRSS_UserQuery($query, [], []);
  11. self::assertEquals('all', $user_query->getGetType());
  12. }
  13. public static function test__construct_whenFavoriteQuery_storesFavoriteParameters(): void {
  14. $query = ['get' => 's'];
  15. $user_query = new FreshRSS_UserQuery($query, [], []);
  16. self::assertEquals('favorite', $user_query->getGetType());
  17. }
  18. public function test__construct_whenCategoryQuery_storesCategoryParameters(): void {
  19. $category_name = 'some category name';
  20. /** @var FreshRSS_Category&PHPUnit\Framework\MockObject\MockObject */
  21. $cat = $this->createMock(FreshRSS_Category::class);
  22. $cat->expects(self::atLeastOnce())
  23. ->method('name')
  24. ->withAnyParameters()
  25. ->willReturn($category_name);
  26. $query = ['get' => 'c_1'];
  27. $user_query = new FreshRSS_UserQuery($query, [1 => $cat], []);
  28. self::assertEquals($category_name, $user_query->getGetName());
  29. self::assertEquals('category', $user_query->getGetType());
  30. }
  31. public function test__construct_whenFeedQuery_storesFeedParameters(): void {
  32. $feed_name = 'some feed name';
  33. /** @var FreshRSS_Feed&PHPUnit\Framework\MockObject\MockObject */
  34. $feed = $this->createMock(FreshRSS_Feed::class);
  35. $feed->expects(self::atLeastOnce())
  36. ->method('id')
  37. ->withAnyParameters()
  38. ->willReturn(1);
  39. $feed->expects(self::atLeastOnce())
  40. ->method('name')
  41. ->withAnyParameters()
  42. ->willReturn($feed_name);
  43. /** @var FreshRSS_Category&PHPUnit\Framework\MockObject\MockObject */
  44. $cat = $this->createMock(FreshRSS_Category::class);
  45. $cat->expects(self::atLeastOnce())
  46. ->method('feeds')
  47. ->withAnyParameters()
  48. ->willReturn([1 => $feed]);
  49. $query = ['get' => 'f_1'];
  50. $user_query = new FreshRSS_UserQuery($query, [1 => $cat], []);
  51. self::assertEquals($feed_name, $user_query->getGetName());
  52. self::assertEquals('feed', $user_query->getGetType());
  53. }
  54. public static function test__construct_whenUnknownQuery_doesStoreParameters(): void {
  55. $query = ['get' => 'q'];
  56. $user_query = new FreshRSS_UserQuery($query, [], []);
  57. self::assertEmpty($user_query->getGetName());
  58. self::assertEmpty($user_query->getGetType());
  59. }
  60. public static function test__construct_whenName_storesName(): void {
  61. $name = 'some name';
  62. $query = ['name' => $name];
  63. $user_query = new FreshRSS_UserQuery($query, [], []);
  64. self::assertEquals($name, $user_query->getName());
  65. }
  66. public static function test__construct_whenOrder_storesOrder(): void {
  67. $order = 'some order';
  68. $query = ['order' => $order];
  69. $user_query = new FreshRSS_UserQuery($query, [], []);
  70. self::assertEquals($order, $user_query->getOrder());
  71. }
  72. public static function test__construct_whenState_storesState(): void {
  73. $state = FreshRSS_Entry::STATE_NOT_READ | FreshRSS_Entry::STATE_FAVORITE;
  74. $query = ['state' => $state];
  75. $user_query = new FreshRSS_UserQuery($query, [], []);
  76. self::assertEquals($state, $user_query->getState());
  77. }
  78. public static function test__construct_whenUrl_storesUrl(): void {
  79. $url = 'some url';
  80. $query = ['url' => $url];
  81. $user_query = new FreshRSS_UserQuery($query, [], []);
  82. self::assertEquals($url, $user_query->getUrl());
  83. }
  84. public static function testToArray_whenNoData_returnsEmptyArray(): void {
  85. $user_query = new FreshRSS_UserQuery([], [], []);
  86. self::assertCount(0, $user_query->toArray());
  87. }
  88. public static function testToArray_whenData_returnsArray(): void {
  89. $query = [
  90. 'get' => 's',
  91. 'name' => 'some name',
  92. 'order' => 'some order',
  93. 'search' => 'some search',
  94. 'state' => FreshRSS_Entry::STATE_ALL,
  95. 'url' => 'some url',
  96. ];
  97. $user_query = new FreshRSS_UserQuery($query, [], []);
  98. self::assertCount(6, $user_query->toArray());
  99. self::assertEquals($query, $user_query->toArray());
  100. }
  101. public static function testHasSearch_whenSearch_returnsTrue(): void {
  102. $query = ['search' => 'some search'];
  103. $user_query = new FreshRSS_UserQuery($query, [], []);
  104. self::assertTrue($user_query->hasSearch());
  105. }
  106. public static function testHasSearch_whenNoSearch_returnsFalse(): void {
  107. $user_query = new FreshRSS_UserQuery([], [], []);
  108. self::assertFalse($user_query->hasSearch());
  109. }
  110. public static function testHasParameters_whenAllQuery_returnsFalse(): void {
  111. $query = ['get' => 'a'];
  112. $user_query = new FreshRSS_UserQuery($query, [], []);
  113. self::assertFalse($user_query->hasParameters());
  114. }
  115. public static function testHasParameters_whenNoParameter_returnsFalse(): void {
  116. $query = [];
  117. $user_query = new FreshRSS_UserQuery($query, [], []);
  118. self::assertFalse($user_query->hasParameters());
  119. }
  120. public static function testHasParameters_whenParameter_returnTrue(): void {
  121. $query = ['get' => 's'];
  122. $user_query = new FreshRSS_UserQuery($query, [], []);
  123. self::assertTrue($user_query->hasParameters());
  124. }
  125. public function testIsDeprecated_whenCategoryExists_returnFalse(): void {
  126. /** @var FreshRSS_Category&PHPUnit\Framework\MockObject\MockObject */
  127. $cat = $this->createMock(FreshRSS_Category::class);
  128. $cat->expects(self::atLeastOnce())
  129. ->method('name')
  130. ->withAnyParameters()
  131. ->willReturn('cat 1');
  132. $query = ['get' => 'c_1'];
  133. $user_query = new FreshRSS_UserQuery($query, [1 => $cat], []);
  134. self::assertFalse($user_query->isDeprecated());
  135. }
  136. public static function testIsDeprecated_whenCategoryDoesNotExist_returnTrue(): void {
  137. $query = ['get' => 'c_1'];
  138. $user_query = new FreshRSS_UserQuery($query, [], []);
  139. self::assertTrue($user_query->isDeprecated());
  140. }
  141. public function testIsDeprecated_whenFeedExists_returnFalse(): void {
  142. /** @var FreshRSS_Feed&PHPUnit\Framework\MockObject\MockObject */
  143. $feed = $this->createMock(FreshRSS_Feed::class);
  144. $feed->expects(self::atLeastOnce())
  145. ->method('id')
  146. ->withAnyParameters()
  147. ->willReturn(1);
  148. $feed->expects(self::atLeastOnce())
  149. ->method('name')
  150. ->withAnyParameters()
  151. ->willReturn('feed 1');
  152. /** @var FreshRSS_Category&PHPUnit\Framework\MockObject\MockObject */
  153. $cat = $this->createMock(FreshRSS_Category::class);
  154. $cat->expects(self::atLeastOnce())
  155. ->method('feeds')
  156. ->withAnyParameters()
  157. ->willReturn([1 => $feed]);
  158. $query = ['get' => 'f_1'];
  159. $user_query = new FreshRSS_UserQuery($query, [1 => $cat], []);
  160. self::assertFalse($user_query->isDeprecated());
  161. }
  162. public function testIsDeprecated_whenFeedDoesNotExist_returnTrue(): void {
  163. /** @var FreshRSS_Category&PHPUnit\Framework\MockObject\MockObject */
  164. $cat = $this->createMock(FreshRSS_Category::class);
  165. $cat->expects(self::atLeastOnce())
  166. ->method('feeds')
  167. ->withAnyParameters()
  168. ->willReturn([]);
  169. $query = ['get' => 'f_1'];
  170. $user_query = new FreshRSS_UserQuery($query, [1 => $cat], []);
  171. self::assertTrue($user_query->isDeprecated());
  172. }
  173. public static function testIsDeprecated_whenAllQuery_returnFalse(): void {
  174. $query = ['get' => 'a'];
  175. $user_query = new FreshRSS_UserQuery($query, [], []);
  176. self::assertFalse($user_query->isDeprecated());
  177. }
  178. public static function testIsDeprecated_whenFavoriteQuery_returnFalse(): void {
  179. $query = ['get' => 's'];
  180. $user_query = new FreshRSS_UserQuery($query, [], []);
  181. self::assertFalse($user_query->isDeprecated());
  182. }
  183. public static function testIsDeprecated_whenUnknownQuery_returnFalse(): void {
  184. $query = ['get' => 'q'];
  185. $user_query = new FreshRSS_UserQuery($query, [], []);
  186. self::assertFalse($user_query->isDeprecated());
  187. }
  188. }