PaginatedResultSetTest.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4. * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
  5. * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
  6. *
  7. * Licensed under The MIT License
  8. * For full copyright and license information, please see the LICENSE.txt
  9. * Redistributions of files must retain the above copyright notice
  10. *
  11. * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
  12. * @link https://cakephp.org CakePHP(tm) Project
  13. * @since 5.0.0
  14. * @license https://www.opensource.org/licenses/mit-license.php MIT License
  15. */
  16. namespace Cake\Test\TestCase\Datasource\Paging;
  17. use ArrayIterator;
  18. use Cake\Datasource\Paging\PaginatedResultSet;
  19. use Cake\Datasource\ResultSetInterface;
  20. use Cake\TestSuite\TestCase;
  21. use PHPUnit\Framework\Attributes\WithoutErrorHandler;
  22. use function Cake\Collection\collection;
  23. class PaginatedResultSetTest extends TestCase
  24. {
  25. public function testItems()
  26. {
  27. $paginatedResults = new PaginatedResultSet(
  28. $this->getMockBuilder(ResultSetInterface::class)->getMock(),
  29. []
  30. );
  31. $this->assertInstanceOf(ResultSetInterface::class, $paginatedResults->items());
  32. }
  33. #[WithoutErrorHandler]
  34. public function testCall()
  35. {
  36. $resultSet = $this->getMockBuilder(ResultSetInterface::class)->getMock();
  37. $resultSet
  38. ->expects($this->once())
  39. ->method('extract')
  40. ->with('foo')
  41. ->willReturn(collection(['bar']));
  42. $paginatedResults = new PaginatedResultSet(
  43. $resultSet,
  44. []
  45. );
  46. $this->deprecated(function () use ($paginatedResults) {
  47. $result = $paginatedResults->extract('foo')->toList();
  48. $this->assertEquals(['bar'], $result);
  49. });
  50. }
  51. public function testJsonEncode()
  52. {
  53. $paginatedResults = new PaginatedResultSet(
  54. new ArrayIterator([1 => 'a', 2 => 'b', 3 => 'c']),
  55. []
  56. );
  57. $this->assertEquals('{"1":"a","2":"b","3":"c"}', json_encode($paginatedResults));
  58. }
  59. public function testSerialization()
  60. {
  61. $paginatedResults = new PaginatedResultSet(
  62. new ArrayIterator([1 => 'a', 2 => 'b', 3 => 'c']),
  63. ['foo' => 'bar']
  64. );
  65. $serialized = serialize($paginatedResults);
  66. $unserialized = unserialize($serialized);
  67. $this->assertEquals($paginatedResults->pagingParams(), $unserialized->pagingParams());
  68. $this->assertEquals($paginatedResults->items(), $unserialized->items());
  69. }
  70. }