public function testPullPaged()
{
$messages = ['receivedMessages' => [['message' => []], ['message' => []]], 'nextPageToken' => 'foo'];
$this->connection->pull(Argument::that(function ($args) {
if ($args['foo'] !== 'bar') {
return false;
}
if ($args['returnImmediately'] !== true) {
return false;
}
if ($args['maxMessages'] !== 2) {
return false;
}
if (!in_array($args['pageToken'], [null, 'foo'])) {
return false;
}
return true;
}))->willReturn($messages)->shouldBeCalledTimes(3);
$this->subscription->setConnection($this->connection->reveal());
$result = $this->subscription->pull(['foo' => 'bar', 'returnImmediately' => true, 'maxMessages' => 2]);
$this->assertInstanceOf(Generator::class, $result);
// enumerate the iterator and kill after it loops twice.
$arr = [];
$i = 0;
foreach ($result as $message) {
$i++;
$arr[] = $message;
if ($i == 6) {
break;
}
}
$this->assertEquals(6, count($arr));
}