public function testTopicsPaged()
{
$topicResult = [['name' => 'projects/project/topics/topic-a'], ['name' => 'projects/project/topics/topic-b'], ['name' => 'projects/project/topics/topic-c']];
$this->connection->listTopics(Argument::that(function ($options) {
if ($options['foo'] !== 'bar') {
return false;
}
if ($options['pageToken'] !== 'foo' && !is_null($options['pageToken'])) {
return false;
}
return true;
}))->willReturn(['topics' => $topicResult, 'nextPageToken' => 'foo'])->shouldBeCalledTimes(2);
$this->client->setConnection($this->connection->reveal());
$topics = $this->client->topics(['foo' => 'bar']);
// enumerate the iterator and kill after it loops twice.
$arr = [];
$i = 0;
foreach ($topics as $topic) {
$i++;
$arr[] = $topic;
if ($i == 6) {
break;
}
}
$this->assertEquals(6, count($arr));
}