ResourceCollectionTest.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. namespace Test\Unit;
  3. require_once dirname(__DIR__) . '/Setup.php';
  4. use Test\Setup;
  5. use Braintree;
  6. class TestResource
  7. {
  8. public function lookup($id) {
  9. return ResourceCollectionTest::$values[intval($id)];
  10. }
  11. public function fetch($ids)
  12. {
  13. return array_map(__NAMESPACE__ . '\TestResource::lookup', $ids);
  14. }
  15. }
  16. class ResourceCollectionTest extends Setup
  17. {
  18. public static $values = ["a", "b", "c", "d", "e"];
  19. public function testIterateOverResults()
  20. {
  21. $response = [
  22. 'searchResults' => [
  23. 'pageSize' => 2,
  24. 'ids' => ['0', '1', '2', '3', '4']
  25. ]
  26. ];
  27. $object = new TestResource();
  28. $pager = [
  29. 'object' => $object,
  30. 'method' => 'fetch',
  31. 'methodArgs' => []
  32. ];
  33. $collection = new Braintree\ResourceCollection($response, $pager);
  34. $count = 0;
  35. $index = 0;
  36. foreach ($collection as $value)
  37. {
  38. $this->assertEquals(self::$values[$index], $value);
  39. $index += 1;
  40. $count += 1;
  41. }
  42. $this->assertEquals(5, $count);
  43. }
  44. public function testDoesntIterateWhenNoResults()
  45. {
  46. $response = [
  47. 'searchResults' => [
  48. 'pageSize' => 2,
  49. 'ids' => []
  50. ]
  51. ];
  52. $object = new TestResource();
  53. $pager = [
  54. 'object' => $object,
  55. 'method' => 'fetch',
  56. 'methodArgs' => []
  57. ];
  58. $collection = new Braintree\ResourceCollection($response, $pager);
  59. $count = 0;
  60. $index = 0;
  61. foreach ($collection as $value)
  62. {
  63. $index += 1;
  64. $count += 1;
  65. break;
  66. }
  67. $this->assertEquals(0, $count);
  68. $this->assertEquals(0, $index);
  69. }
  70. public function testGetIdsReturnsArrayOfIds()
  71. {
  72. $response = [
  73. 'searchResults' => [
  74. 'pageSize' => 2,
  75. 'ids' => ["1", "2", "3"]
  76. ]
  77. ];
  78. $object = new TestResource();
  79. $pager = [
  80. 'object' => $object,
  81. 'method' => 'fetch',
  82. 'methodArgs' => []
  83. ];
  84. $collection = new Braintree\ResourceCollection($response, $pager);
  85. $this->assertEquals($collection->getIds(), ["1", "2", "3"]);
  86. }
  87. public function testGetIdsReturnsAnEmptyArrayIfNoIds()
  88. {
  89. $response = [
  90. 'searchResults' => [
  91. 'pageSize' => 2,
  92. 'ids' => []
  93. ]
  94. ];
  95. $object = new TestResource();
  96. $pager = [
  97. 'object' => $object,
  98. 'method' => 'fetch',
  99. 'methodArgs' => []
  100. ];
  101. $collection = new Braintree\ResourceCollection($response, $pager);
  102. $this->assertEquals($collection->getIds(), []);
  103. }
  104. }