'pageToken', 'responsePageTokenField' => 'nextPageToken', 'resourceField' => 'resource' ]); $mockApiCall = function () use ($stub) { list($response, $status) = call_user_func_array(array($stub, 'takeAction'), func_get_args())->wait(); return $response; }; return new Page([$mockRequest, [], []], $mockApiCall, $descriptor); } public function testNextPageMethods() { $responseA = MockPageStreamingResponse::createPageStreamingResponse('nextPageToken1', ['resource1']); $responseB = MockPageStreamingResponse::createPageStreamingResponse('', ['resource2']); $page = PageTest::createPage([ [$responseA, new MockStatus(Grpc\STATUS_OK, '')], [$responseB, new MockStatus(Grpc\STATUS_OK, '')], ]); $this->assertEquals($page->hasNextPage(), true); $this->assertEquals($page->getNextPageToken(), 'nextPageToken1'); $nextPage = $page->getNextPage(); $this->assertEquals($nextPage->hasNextPage(), false); $this->assertEquals($nextPage->getNextPageToken(), ''); } /** * @expectedException \Google\GAX\ValidationException * @expectedExceptionMessage Could not complete getNextPage operation */ public function testNextPageMethodsFailWithNoNextPage() { $responseA = MockPageStreamingResponse::createPageStreamingResponse('', ['resource1']); $page = PageTest::createPage([ [$responseA, new MockStatus(Grpc\STATUS_OK, '')], ]); $this->assertEquals($page->hasNextPage(), false); $page->getNextPage(); } /** * @expectedException \Google\GAX\ValidationException * @expectedExceptionMessage pageSize argument was defined, but the method does not */ public function testNextPageMethodsFailWithPageSizeUnsupported() { $responseA = MockPageStreamingResponse::createPageStreamingResponse('nextPageToken1', ['resource1']); $responseB = MockPageStreamingResponse::createPageStreamingResponse('', ['resource2']); $page = PageTest::createPage([ [$responseA, new MockStatus(Grpc\STATUS_OK, '')], [$responseB, new MockStatus(Grpc\STATUS_OK, '')], ]); $page->getNextPage(3); } public function testPageElementMethods() { $response = MockPageStreamingResponse::createPageStreamingResponse( 'nextPageToken1', ['resource1', 'resource2', 'resource3'] ); $page = PageTest::createPage([ [$response, new MockStatus(Grpc\STATUS_OK, '')], ]); $this->assertEquals($page->getPageElementCount(), 3); $results = iterator_to_array($page); $this->assertEquals($results, ['resource1', 'resource2', 'resource3']); } }