SettlementBatchSummaryTest.php 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. namespace Test\Integration;
  3. require_once dirname(__DIR__) . '/Setup.php';
  4. use DateTime;
  5. use Test;
  6. use Test\Setup;
  7. use Braintree;
  8. class SettlementBatchSummaryTest extends Setup
  9. {
  10. public function isMasterCard($record)
  11. {
  12. return $record['cardType'] == Braintree\CreditCard::MASTER_CARD;
  13. }
  14. public function testGenerate_returnsAnEmptyCollectionWhenThereIsNoData()
  15. {
  16. $result = Braintree\SettlementBatchSummary::generate('2000-01-01');
  17. $this->assertTrue($result->success);
  18. $this->assertEquals(0, count($result->settlementBatchSummary->records));
  19. }
  20. public function testGatewayGenerate_returnsAnEmptyCollectionWhenThereIsNoData()
  21. {
  22. $gateway = new Braintree\Gateway([
  23. 'environment' => 'development',
  24. 'merchantId' => 'integration_merchant_id',
  25. 'publicKey' => 'integration_public_key',
  26. 'privateKey' => 'integration_private_key'
  27. ]);
  28. $result = $gateway->settlementBatchSummary()->generate('2000-01-01');
  29. $this->assertTrue($result->success);
  30. $this->assertEquals(0, count($result->settlementBatchSummary->records));
  31. }
  32. public function testGenerate_returnsAnErrorIfTheDateCanNotBeParsed()
  33. {
  34. $result = Braintree\SettlementBatchSummary::generate('OMG NOT A DATE');
  35. $this->assertFalse($result->success);
  36. $errors = $result->errors->forKey('settlementBatchSummary')->onAttribute('settlementDate');
  37. $this->assertEquals(Braintree\Error\Codes::SETTLEMENT_BATCH_SUMMARY_SETTLEMENT_DATE_IS_INVALID, $errors[0]->code);
  38. }
  39. public function testGenerate_returnsTransactionsSettledOnAGivenDay()
  40. {
  41. $transaction = Braintree\Transaction::saleNoValidate([
  42. 'amount' => '100.00',
  43. 'creditCard' => [
  44. 'number' => '5105105105105100',
  45. 'expirationDate' => '05/12'
  46. ],
  47. 'options' => ['submitForSettlement' => true]
  48. ]);
  49. Braintree\Test\Transaction::settle($transaction->id);
  50. $today = new Datetime;
  51. $result = Braintree\SettlementBatchSummary::generate(Test\Helper::nowInEastern());
  52. $this->assertTrue($result->success);
  53. $masterCardRecords = array_filter($result->settlementBatchSummary->records, 'self::isMasterCard');
  54. $masterCardKeys = array_keys($masterCardRecords);
  55. $masterCardIndex = $masterCardKeys[0];
  56. $this->assertTrue(count($masterCardRecords) > 0);
  57. $this->assertEquals(Braintree\CreditCard::MASTER_CARD, $masterCardRecords[$masterCardIndex]['cardType']);
  58. }
  59. public function testGenerate_canBeGroupedByACustomField()
  60. {
  61. $transaction = Braintree\Transaction::saleNoValidate([
  62. 'amount' => '100.00',
  63. 'creditCard' => [
  64. 'number' => '5105105105105100',
  65. 'expirationDate' => '05/12'
  66. ],
  67. 'customFields' => [
  68. 'store_me' => 'custom value'
  69. ],
  70. 'options' => ['submitForSettlement' => true]
  71. ]);
  72. Braintree\Test\Transaction::settle($transaction->id);
  73. $today = new Datetime;
  74. $result = Braintree\SettlementBatchSummary::generate(Test\Helper::nowInEastern(), 'store_me');
  75. $this->assertTrue($result->success);
  76. $this->assertTrue(count($result->settlementBatchSummary->records) > 0);
  77. $this->assertArrayHasKey('store_me', $result->settlementBatchSummary->records[0]);
  78. }
  79. }