website/files/stripe/tests/CollectionTest.php

106 lines
2.9 KiB
PHP

<?php
namespace Stripe;
class CollectionTest extends TestCase
{
private function pageableModelResponse($ids, $hasMore)
{
$data = array();
foreach ($ids as $id) {
array_push($data, array(
'id' => $id,
'object' => 'pageablemodel'
));
}
return array(
'object' => 'list',
'url' => '/v1/pageablemodels',
'data' => $data,
'has_more' => $hasMore
);
}
public function testAutoPagingOnePage()
{
$collection = Collection::constructFrom(
$this->pageableModelResponse(array('pm_123', 'pm_124'), false),
new Util\RequestOptions()
);
$seen = array();
foreach ($collection->autoPagingIterator() as $item) {
array_push($seen, $item['id']);
}
$this->assertSame($seen, array('pm_123', 'pm_124'));
}
public function testAutoPagingThreePages()
{
$collection = Collection::constructFrom(
$this->pageableModelResponse(array('pm_123', 'pm_124'), true),
new Util\RequestOptions()
);
$collection->setRequestParams(array('foo' => 'bar'));
$this->mockRequest(
'GET',
'/v1/pageablemodels',
array(
'foo' => 'bar',
'starting_after' => 'pm_124'
),
$this->pageableModelResponse(array('pm_125', 'pm_126'), true)
);
$this->mockRequest(
'GET',
'/v1/pageablemodels',
array(
'foo' => 'bar',
'starting_after' => 'pm_126'
),
$this->pageableModelResponse(array('pm_127'), false)
);
$seen = array();
foreach ($collection->autoPagingIterator() as $item) {
array_push($seen, $item['id']);
}
$this->assertSame($seen, array('pm_123', 'pm_124', 'pm_125', 'pm_126', 'pm_127'));
}
public function testIteratorToArray()
{
$collection = Collection::constructFrom(
$this->pageableModelResponse(array('pm_123', 'pm_124'), true),
new Util\RequestOptions()
);
$this->mockRequest(
'GET',
'/v1/pageablemodels',
array(
'starting_after' => 'pm_124'
),
$this->pageableModelResponse(array('pm_125', 'pm_126'), true)
);
$this->mockRequest(
'GET',
'/v1/pageablemodels',
array(
'starting_after' => 'pm_126'
),
$this->pageableModelResponse(array('pm_127'), false)
);
$seen = array();
foreach (iterator_to_array($collection->autoPagingIterator()) as $item) {
array_push($seen, $item['id']);
}
$this->assertSame($seen, array('pm_123', 'pm_124', 'pm_125', 'pm_126', 'pm_127'));
}
}