/** * get document list by paginate * board item entity class list * * @param array $wheres 검색 조건 * @param array $orders 정렬 조건 * @param ConfigEntity $config board config entity * @return LengthAwarePaginator * @see \Xpressengine\Document\Repositories\DocumentRepository */ public function paginate(array $wheres, array $orders, ConfigEntity $config = null) { if ($config == null) { $config = $this->config; } if ($orders == [] && $config->get('orderExtension') != null) { $orderType = sprintf('\\%s', $config->get('orderExtension')); (new $orderType())->make($wheres, $orders); } $paginator = $this->document->paginate($wheres, $orders, $config->get('perPage')); // wrap item entity foreach ($paginator as $key => $doc) { $paginator[$key] = $this->makeItem($doc); } $this->shortIdGenerator->associates($paginator); $this->slug->associates($paginator); return $paginator; }
/** * test get documents using paginate * * @return void */ public function testPaginate() { $conn = $this->conn; $repo = $this->repo; $configHandler = $this->configHandler; $instanceManager = $this->instanceManager; $request = $this->request; $handler = new DocumentHandler($conn, $repo, $configHandler, $instanceManager, $request); $ids = ['id1', 'id2']; $instanceId = 'instanceId'; $userId = 'userId'; $items = [['id' => $ids[0], 'instanceId' => $instanceId, 'userId' => $userId], ['id' => $ids[1], 'instanceId' => $instanceId, 'userId' => $userId]]; $repo->shouldReceive('paginate')->andReturn($this->getPaginator($items)); $wheres = ['instanceId' => $instanceId]; $orders = []; $configHandler->shouldReceive('get')->andReturn($this->getConfigEntity()); $result = $handler->paginate($wheres, $orders); $this->assertInstanceOf('Illuminate\\Pagination\\LengthAwarePaginator', $result); }