public function testOffsetFromJob() { $client = RestClient::create(); $config = new JobConfig('test', ['endpoint' => 'test', 'params' => ['startAt' => 3]]); $limit = 10; $scroller = new OffsetScroller(['limit' => $limit, 'offsetFromJob' => true, 'offsetParam' => 'startAt']); $first = $scroller->getFirstRequest($client, $config); self::assertEquals($config->getParams()['startAt'], $first->getParams()['startAt']); $response = new \stdClass(); $response->data = array_fill(0, 10, (object) ['key' => 'value']); $second = $scroller->getNextRequest($client, $config, $response, $response->data); self::assertEquals($config->getParams()['startAt'] + $limit, $second->getParams()['startAt']); }
protected static function createScroller(array $config) { if (empty($config['method'])) { return NoScroller::create([]); } switch ($config['method']) { case 'offset': return OffsetScroller::create($config); case 'response.param': return ResponseParamScroller::create($config); case 'response.url': return ResponseUrlScroller::create($config); case 'zendesk.response.url': return ZendeskResponseUrlScroller::create($config); case 'facebook.response.url': return FacebookResponseUrlScroller::create($config); case 'pagenum': return PageScroller::create($config); case 'cursor': return CursorScroller::create($config); case 'multiple': return MultipleScroller::create($config); default: $method = is_string($config['method']) ? $config['method'] : json_encode($config['method']); throw new UserException("Unknown pagination method '{$method}'"); break; } }