4
0

UserQueryTest.php 8.3 KB

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