4
0

UserQueryTest.php 7.4 KB

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