123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560 |
- <?php
- namespace Test\Integration;
- require_once dirname(__DIR__) . '/Setup.php';
- use DateTime;
- use DateTimeZone;
- use Test\Setup;
- use Braintree;
- class TransactionAdvancedSearchTest extends Setup
- {
- public function testNoMatches()
- {
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::billingFirstName()->is('thisnameisnotreal')
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_noRequestsWhenIterating()
- {
- $resultsReturned = false;
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::billingFirstName()->is('thisnameisnotreal')
- ]);
- foreach($collection as $transaction) {
- $resultsReturned = true;
- break;
- }
- $this->assertSame(0, $collection->maximumCount());
- $this->assertEquals(false, $resultsReturned);
- }
- public function testSearchOnTextFields()
- {
- $firstName = 'Tim' . rand();
- $token = 'creditcard' . rand();
- $customerId = 'customer' . rand();
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012',
- 'cardholderName' => 'Tom Smith',
- 'token' => $token,
- ],
- 'billing' => [
- 'company' => 'Braintree',
- 'countryName' => 'United States of America',
- 'extendedAddress' => 'Suite 123',
- 'firstName' => $firstName,
- 'lastName' => 'Smith',
- 'locality' => 'Chicago',
- 'postalCode' => '12345',
- 'region' => 'IL',
- 'streetAddress' => '123 Main St'
- ],
- 'customer' => [
- 'company' => 'Braintree',
- 'email' => 'smith@example.com',
- 'fax' => '5551231234',
- 'firstName' => 'Tom',
- 'id' => $customerId,
- 'lastName' => 'Smith',
- 'phone' => '5551231234',
- 'website' => 'http://example.com',
- ],
- 'options' => [
- 'storeInVault' => true
- ],
- 'orderId' => 'myorder',
- 'shipping' => [
- 'company' => 'Braintree P.S.',
- 'countryName' => 'Mexico',
- 'extendedAddress' => 'Apt 456',
- 'firstName' => 'Thomas',
- 'lastName' => 'Smithy',
- 'locality' => 'Braintree',
- 'postalCode' => '54321',
- 'region' => 'MA',
- 'streetAddress' => '456 Road'
- ],
- ]);
- $search_criteria = [
- 'billingCompany' => "Braintree",
- 'billingCountryName' => "United States of America",
- 'billingExtendedAddress' => "Suite 123",
- 'billingFirstName' => $firstName,
- 'billingLastName' => "Smith",
- 'billingLocality' => "Chicago",
- 'billingPostalCode' => "12345",
- 'billingRegion' => "IL",
- 'billingStreetAddress' => "123 Main St",
- 'creditCardCardholderName' => "Tom Smith",
- 'creditCardExpirationDate' => "05/2012",
- 'creditCardNumber' => Braintree\Test\CreditCardNumbers::$visa,
- 'creditCardUniqueIdentifier' => $transaction->creditCardDetails->uniqueNumberIdentifier,
- 'currency' => "USD",
- 'customerCompany' => "Braintree",
- 'customerEmail' => "smith@example.com",
- 'customerFax' => "5551231234",
- 'customerFirstName' => "Tom",
- 'customerId' => $customerId,
- 'customerLastName' => "Smith",
- 'customerPhone' => "5551231234",
- 'customerWebsite' => "http://example.com",
- 'orderId' => "myorder",
- 'paymentMethodToken' => $token,
- 'paymentInstrumentType' => 'CreditCardDetail',
- 'processorAuthorizationCode' => $transaction->processorAuthorizationCode,
- 'shippingCompany' => "Braintree P.S.",
- 'shippingCountryName' => "Mexico",
- 'shippingExtendedAddress' => "Apt 456",
- 'shippingFirstName' => "Thomas",
- 'shippingLastName' => "Smithy",
- 'shippingLocality' => "Braintree",
- 'shippingPostalCode' => "54321",
- 'shippingRegion' => "MA",
- 'shippingStreetAddress' => "456 Road",
- 'user' => "integration_user_public_id"
- ];
- $query = [Braintree\TransactionSearch::id()->is($transaction->id)];
- foreach ($search_criteria AS $criterion => $value) {
- $query[] = Braintree\TransactionSearch::$criterion()->is($value);
- }
- $collection = Braintree\Transaction::search($query);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- foreach ($search_criteria AS $criterion => $value) {
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::$criterion()->is($value),
- Braintree\TransactionSearch::id()->is($transaction->id)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::$criterion()->is('invalid_attribute'),
- Braintree\TransactionSearch::id()->is($transaction->id)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- }
- public function testIs()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012',
- 'cardholderName' => 'tom smith'
- ]
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardholderName()->is('tom smith')
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardholderName()->is('somebody else')
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function testIsNot()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012',
- 'cardholderName' => 'tom smith'
- ]
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardholderName()->isNot('somebody else')
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardholderName()->isNot('tom smith')
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function testEndsWith()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012',
- 'cardholderName' => 'tom smith'
- ]
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardholderName()->endsWith('m smith')
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardholderName()->endsWith('tom s')
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function testStartsWith()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012',
- 'cardholderName' => 'tom smith'
- ]
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardholderName()->startsWith('tom s')
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardholderName()->startsWith('m smith')
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function testContains()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012',
- 'cardholderName' => 'tom smith'
- ]
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardholderName()->contains('m sm')
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardholderName()->contains('something else')
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_multipleValueNode_createdUsing()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012'
- ]
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::createdUsing()->is(Braintree\Transaction::FULL_INFORMATION)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::createdUsing()->in(
- [Braintree\Transaction::FULL_INFORMATION, Braintree\Transaction::TOKEN]
- )
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::createdUsing()->in([Braintree\Transaction::TOKEN])
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_multipleValueNode_paymentInstrumentType_is_creditCard()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012'
- ]
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::paymentInstrumentType()->is("CreditCardDetail")
- ]);
- $this->assertEquals($transaction->paymentInstrumentType, Braintree\PaymentInstrumentType::CREDIT_CARD);
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_multipleValueNode_paymentInstrumentType_is_paypal()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'paymentMethodNonce' => Braintree\Test\Nonces::$paypalOneTimePayment
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::paymentInstrumentType()->is("PayPalDetail")
- ]);
- $this->assertEquals($transaction->paymentInstrumentType, Braintree\PaymentInstrumentType::PAYPAL_ACCOUNT);
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_multipleValueNode_paymentInstrumentType_is_applepay()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'paymentMethodNonce' => Braintree\Test\Nonces::$applePayVisa
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::paymentInstrumentType()->is("ApplePayDetail")
- ]);
- $this->assertEquals($transaction->paymentInstrumentType, Braintree\PaymentInstrumentType::APPLE_PAY_CARD);
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_multipleValueNode_createdUsing_allowedValues()
- {
- $this->setExpectedException('InvalidArgumentException', 'Invalid argument(s) for created_using: noSuchCreatedUsing');
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::createdUsing()->is('noSuchCreatedUsing')
- ]);
- }
- public function test_multipleValueNode_creditCardCustomerLocation()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012'
- ]
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCustomerLocation()->is(Braintree\CreditCard::US)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCustomerLocation()->in(
- [Braintree\CreditCard::US, Braintree\CreditCard::INTERNATIONAL]
- )
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCustomerLocation()->in([Braintree\CreditCard::INTERNATIONAL])
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_multipleValueNode_creditCardCustomerLocation_allowedValues()
- {
- $this->setExpectedException('InvalidArgumentException', 'Invalid argument(s) for credit_card_customer_location: noSuchLocation');
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCustomerLocation()->is('noSuchLocation')
- ]);
- }
- public function test_multipleValueNode_merchantAccountId()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012'
- ]
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::merchantAccountId()->is($transaction->merchantAccountId)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::merchantAccountId()->in(
- [$transaction->merchantAccountId, "bogus_merchant_account_id"]
- )
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::merchantAccountId()->is('bogus_merchant_account_id')
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_multipleValueNode_creditCardType()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012'
- ]
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardType()->is($transaction->creditCardDetails->cardType)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardType()->in(
- [$transaction->creditCardDetails->cardType, Braintree\CreditCard::CHINA_UNION_PAY]
- )
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::creditCardCardType()->is(Braintree\CreditCard::CHINA_UNION_PAY)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_multipleValueNode_creditCardType_allowedValues()
- {
- $this->setExpectedException('InvalidArgumentException', 'Invalid argument(s) for credit_card_card_type: noSuchCardType');
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardType()->is('noSuchCardType')
- ]);
- }
- public function test_multipleValueNode_status()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012'
- ]
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::status()->is($transaction->status)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::status()->in(
- [$transaction->status, Braintree\Transaction::SETTLED]
- )
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::status()->is(Braintree\Transaction::SETTLED)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_multipleValueNode_status_authorizationExpired()
- {
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::status()->is(Braintree\Transaction::AUTHORIZATION_EXPIRED)
- ]);
- $this->assertGreaterThan(0, $collection->maximumCount());
- $this->assertEquals(Braintree\Transaction::AUTHORIZATION_EXPIRED, $collection->firstItem()->status);
- }
- public function test_multipleValueNode_status_allowedValues()
- {
- $this->setExpectedException('InvalidArgumentException', 'Invalid argument(s) for status: noSuchStatus');
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::status()->is('noSuchStatus')
- ]);
- }
- public function test_multipleValueNode_source()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$visa,
- 'expirationDate' => '05/2012'
- ]
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::source()->is(Braintree\Transaction::API)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::source()->in(
- [Braintree\Transaction::API, Braintree\Transaction::RECURRING]
- )
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::source()->is(Braintree\Transaction::RECURRING)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_multipleValueNode_type()
- {
- $customer = Braintree\Customer::createNoValidate();
- $creditCard = Braintree\CreditCard::create([
- 'customerId' => $customer->id,
- 'cardholderName' => 'Joe Everyman' . rand(),
- 'number' => '5105105105105100',
- 'expirationDate' => '05/12'
- ])->creditCard;
- $sale = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'paymentMethodToken' => $creditCard->token,
- 'options' => ['submitForSettlement' => true]
- ]);
- $http = new Braintree\Http(Braintree\Configuration::$global);
- $path = Braintree\Configuration::$global->merchantPath() . '/transactions/' . $sale->id . '/settle';
- $http->put($path);
- $refund = Braintree\Transaction::refund($sale->id)->transaction;
- $credit = Braintree\Transaction::creditNoValidate([
- 'amount' => '100.00',
- 'paymentMethodToken' => $creditCard->token
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($creditCard->cardholderName),
- Braintree\TransactionSearch::type()->is($sale->type)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($creditCard->cardholderName),
- Braintree\TransactionSearch::type()->in(
- [$sale->type, $credit->type]
- )
- ]);
- $this->assertEquals(3, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($creditCard->cardholderName),
- Braintree\TransactionSearch::type()->is($credit->type)
- ]);
- $this->assertEquals(2, $collection->maximumCount());
- }
- public function test_multipleValueNode_type_allowedValues()
- {
- $this->setExpectedException('InvalidArgumentException', 'Invalid argument(s) for type: noSuchType');
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::type()->is('noSuchType')
- ]);
- }
- public function test_multipleValueNode_type_withRefund()
- {
- $customer = Braintree\Customer::createNoValidate();
- $creditCard = Braintree\CreditCard::create([
- 'customerId' => $customer->id,
- 'cardholderName' => 'Joe Everyman' . rand(),
- 'number' => '5105105105105100',
- 'expirationDate' => '05/12'
- ])->creditCard;
- $sale = Braintree\Transaction::saleNoValidate([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'paymentMethodToken' => $creditCard->token,
- 'options' => ['submitForSettlement' => true]
- ]);
- $http = new Braintree\Http(Braintree\Configuration::$global);
- $path = Braintree\Configuration::$global->merchantPath() . '/transactions/' . $sale->id . '/settle';
- $http->put($path);
- $refund = Braintree\Transaction::refund($sale->id)->transaction;
- $credit = Braintree\Transaction::creditNoValidate([
- 'amount' => '100.00',
- 'paymentMethodToken' => $creditCard->token
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($creditCard->cardholderName),
- Braintree\TransactionSearch::type()->is($credit->type),
- Braintree\TransactionSearch::refund()->is(True)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($refund->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($creditCard->cardholderName),
- Braintree\TransactionSearch::type()->is($credit->type),
- Braintree\TransactionSearch::refund()->is(False)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($credit->id, $collection->firstItem()->id);
- }
- public function test_rangeNode_amount()
- {
- $customer = Braintree\Customer::createNoValidate();
- $creditCard = Braintree\CreditCard::create([
- 'customerId' => $customer->id,
- 'cardholderName' => 'Jane Everywoman' . rand(),
- 'number' => '5105105105105100',
- 'expirationDate' => '05/12'
- ])->creditCard;
- $t_1000 = Braintree\Transaction::saleNoValidate([
- 'amount' => '1000.00',
- 'paymentMethodToken' => $creditCard->token
- ]);
- $t_1500 = Braintree\Transaction::saleNoValidate([
- 'amount' => '1500.00',
- 'paymentMethodToken' => $creditCard->token
- ]);
- $t_1800 = Braintree\Transaction::saleNoValidate([
- 'amount' => '1800.00',
- 'paymentMethodToken' => $creditCard->token
- ]);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($creditCard->cardholderName),
- Braintree\TransactionSearch::amount()->greaterThanOrEqualTo('1700')
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($t_1800->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($creditCard->cardholderName),
- Braintree\TransactionSearch::amount()->lessThanOrEqualTo('1250')
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($t_1000->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($creditCard->cardholderName),
- Braintree\TransactionSearch::amount()->between('1100', '1600')
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($t_1500->id, $collection->firstItem()->id);
- }
- private function runDisbursementDateSearchTests($disbursementDateString, $comparison)
- {
- $knownDepositId = "deposittransaction";
- $now = new DateTime($disbursementDateString);
- $past = clone $now;
- $past->modify("-1 hour");
- $future = clone $now;
- $future->modify("+1 hour");
- $collections = [
- 'future' => Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownDepositId),
- $comparison($future)
- ]),
- 'now' => Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownDepositId),
- $comparison($now)
- ]),
- 'past' => Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownDepositId),
- $comparison($past)
- ])
- ];
- return $collections;
- }
- public function test_rangeNode_disbursementDate_lessThanOrEqualTo()
- {
- $compareLessThan = function($time) {
- return Braintree\TransactionSearch::disbursementDate()->lessThanOrEqualTo($time);
- };
- $collection = $this->runDisbursementDateSearchTests("2013-04-10", $compareLessThan);
- $this->assertEquals(0, $collection['past']->maximumCount());
- $this->assertEquals(1, $collection['now']->maximumCount());
- $this->assertEquals(1, $collection['future']->maximumCount());
- }
- public function test_rangeNode_disbursementDate_GreaterThanOrEqualTo()
- {
- $comparison = function($time) {
- return Braintree\TransactionSearch::disbursementDate()->GreaterThanOrEqualTo($time);
- };
- $collection = $this->runDisbursementDateSearchTests("2013-04-11", $comparison);
- $this->assertEquals(1, $collection['past']->maximumCount());
- $this->assertEquals(0, $collection['now']->maximumCount());
- $this->assertEquals(0, $collection['future']->maximumCount());
- }
- public function test_rangeNode_disbursementDate_between()
- {
- $knownId = "deposittransaction";
- $now = new DateTime("2013-04-10");
- $past = clone $now;
- $past->modify("-1 day");
- $future = clone $now;
- $future->modify("+1 day");
- $future2 = clone $now;
- $future2->modify("+2 days");
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disbursementDate()->between($past, $future)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($knownId, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disbursementDate()->between($now, $future)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($knownId, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disbursementDate()->between($past, $now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($knownId, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disbursementDate()->between($future, $future2)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_rangeNode_disbursementDate_is()
- {
- $knownId = "deposittransaction";
- $now = new DateTime("2013-04-10");
- $past = clone $now;
- $past->modify("-1 day");
- $future = clone $now;
- $future->modify("+1 day");
- $future2 = clone $now;
- $future2->modify("+2 days");
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disbursementDate()->is($past)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disbursementDate()->is($now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($knownId, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disbursementDate()->is($future)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- private static $disputedTransaction = null;
- private function createTestDisputedTransaction()
- {
- if(self::$disputedTransaction !== null) {
- return self::$disputedTransaction;
- }
- $result = Braintree\Transaction::sale([
- 'amount' => '100.00',
- 'creditCard' => [
- 'number' => Braintree\Test\CreditCardNumbers::$disputes['Chargeback'],
- 'expirationDate' => '12/2019',
- ]
- ]);
- self::$disputedTransaction = $result->transaction;
- for($i = 0; $i < 60; $i++) {
- sleep(1);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($result->transaction->id),
- Braintree\TransactionSearch::disputeDate()->is($result->transaction->disputes[0]->receivedDate)
- ]);
- if($collection->maximumCount() > 0) {
- return self::$disputedTransaction;
- }
- }
- throw new \Exception('Unable to find the disputed transaction.');
- }
- private function rundisputeDateSearchTests($comparison)
- {
- $transactionId = $this->createTestDisputedTransaction()->id;
- $disputeDate = $this->createTestDisputedTransaction()->disputes[0]->receivedDate;
- $past = clone $disputeDate;
- $past->modify("-1 day");
- $future = clone $disputeDate;
- $future->modify("+1 day");
- $collections = [
- 'future' => Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transactionId),
- $comparison($future)
- ]),
- 'now' => Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transactionId),
- $comparison($disputeDate)
- ]),
- 'past' => Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transactionId),
- $comparison($past)
- ])
- ];
- return $collections;
- }
- public function test_rangeNode_disputeDate_lessThanOrEqualTo()
- {
- $compareLessThan = function($time) {
- return Braintree\TransactionSearch::disputeDate()->lessThanOrEqualTo($time);
- };
- $collection = $this->rundisputeDateSearchTests($compareLessThan);
- $this->assertEquals(0, $collection['past']->maximumCount());
- $this->assertEquals(1, $collection['now']->maximumCount());
- $this->assertEquals(1, $collection['future']->maximumCount());
- }
- public function test_rangeNode_disputeDate_GreaterThanOrEqualTo()
- {
- $comparison = function($time) {
- return Braintree\TransactionSearch::disputeDate()->GreaterThanOrEqualTo($time);
- };
- $collection = $this->rundisputeDateSearchTests($comparison);
- $this->assertEquals(1, $collection['past']->maximumCount());
- $this->assertEquals(1, $collection['now']->maximumCount());
- $this->assertEquals(0, $collection['future']->maximumCount());
- }
- public function test_rangeNode_disputeDate_between()
- {
- $disputedTransaction = $this->createTestDisputedTransaction();
- $knownId = $disputedTransaction->id;
- $receivedDate = $disputedTransaction->disputes[0]->receivedDate;
- $past = clone $receivedDate;
- $past->modify("-1 day");
- $future = clone $receivedDate;
- $future->modify("+1 day");
- $future2 = clone $receivedDate;
- $future2->modify("+2 days");
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disputeDate()->between($past, $future)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($knownId, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disputeDate()->between($receivedDate, $future)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($knownId, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disputeDate()->between($past, $receivedDate)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($knownId, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disputeDate()->between($future, $future2)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_rangeNode_disputeDate_is()
- {
- $disputedTransaction = $this->createTestDisputedTransaction();
- $knownId = $disputedTransaction->id;
- $receivedDate = $disputedTransaction->disputes[0]->receivedDate;
- $past = clone $receivedDate;
- $past->modify("-1 day");
- $future = clone $receivedDate;
- $future->modify("+1 day");
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disputeDate()->is($past)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disputeDate()->is($receivedDate)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($knownId, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($knownId),
- Braintree\TransactionSearch::disputeDate()->is($future)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_rangeNode_createdAt_lessThanOrEqualTo()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => '1000.00',
- 'creditCard' => [
- 'cardholderName' => 'Ted Everywoman' . rand(),
- 'number' => '5105105105105100',
- 'expirationDate' => '05/12'
- ]
- ]);
- $past = clone $transaction->createdAt;
- $past->modify("-1 hour");
- $now = $transaction->createdAt;
- $future = clone $transaction->createdAt;
- $future->modify("+1 hour");
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->lessThanOrEqualTo($future)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->lessThanOrEqualTo($now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->lessThanOrEqualTo($past)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_rangeNode_createdAt_GreaterThanOrEqualTo()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => '1000.00',
- 'creditCard' => [
- 'cardholderName' => 'Ted Everyman' . rand(),
- 'number' => '5105105105105100',
- 'expirationDate' => '05/12'
- ]
- ]);
- $past = clone $transaction->createdAt;
- $past->modify("-1 hour");
- $now = $transaction->createdAt;
- $future = clone $transaction->createdAt;
- $future->modify("+1 hour");
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->GreaterThanOrEqualTo($future)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->GreaterThanOrEqualTo($now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->GreaterThanOrEqualTo($past)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_rangeNode_createdAt_between()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => '1000.00',
- 'creditCard' => [
- 'cardholderName' => 'Ted Everyman' . rand(),
- 'number' => '5105105105105100',
- 'expirationDate' => '05/12'
- ]
- ]);
- $past = clone $transaction->createdAt;
- $past->modify("-1 hour");
- $now = $transaction->createdAt;
- $future = clone $transaction->createdAt;
- $future->modify("+1 hour");
- $future2 = clone $transaction->createdAt;
- $future2->modify("+1 day");
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->between($past, $future)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->between($now, $future)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->between($past, $now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->between($future, $future2)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_rangeNode_createdAt_is()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => '1000.00',
- 'creditCard' => [
- 'cardholderName' => 'Ted Everyman' . rand(),
- 'number' => '5105105105105100',
- 'expirationDate' => '05/12'
- ]
- ]);
- $past = clone $transaction->createdAt;
- $past->modify("-1 hour");
- $now = $transaction->createdAt;
- $future = clone $transaction->createdAt;
- $future->modify("+1 hour");
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->is($future)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->is($now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardCardholderName()->is($transaction->creditCardDetails->cardholderName),
- Braintree\TransactionSearch::createdAt()->is($past)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- }
- public function test_rangeNode_createdAt_convertLocalToUTC()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => '1000.00',
- 'creditCard' => [
- 'cardholderName' => 'Pingu Penguin' . rand(),
- 'number' => '5105105105105100',
- 'expirationDate' => '05/12'
- ]
- ]);
- $ten_min_ago = date_create("now -10 minutes", new DateTimeZone("US/Pacific"));
- $ten_min_from_now = date_create("now +10 minutes", new DateTimeZone("US/Pacific"));
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::createdAt()->between($ten_min_ago, $ten_min_from_now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_rangeNode_createdAt_handlesUTCDateTimes()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => '1000.00',
- 'creditCard' => [
- 'cardholderName' => 'Pingu Penguin' . rand(),
- 'number' => '5105105105105100',
- 'expirationDate' => '05/12'
- ]
- ]);
- $ten_min_ago = date_create("now -10 minutes", new DateTimeZone("UTC"));
- $ten_min_from_now = date_create("now +10 minutes", new DateTimeZone("UTC"));
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::createdAt()->between($ten_min_ago, $ten_min_from_now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_rangeNode_authorizationExpiredAt()
- {
- $two_days_ago = date_create("now -2 days", new DateTimeZone("UTC"));
- $yesterday = date_create("now -1 day", new DateTimeZone("UTC"));
- $tomorrow = date_create("now +1 day", new DateTimeZone("UTC"));
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::authorizationExpiredAt()->between($two_days_ago, $yesterday)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::authorizationExpiredAt()->between($yesterday, $tomorrow)
- ]);
- $this->assertGreaterThan(0, $collection->maximumCount());
- $this->assertEquals(Braintree\Transaction::AUTHORIZATION_EXPIRED, $collection->firstItem()->status);
- }
- public function test_rangeNode_authorizedAt()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => '1000.00',
- 'creditCard' => [
- 'number' => '4111111111111111',
- 'expirationDate' => '05/12'
- ]
- ]);
- $twenty_min_ago = date_create("now -20 minutes", new DateTimeZone("UTC"));
- $ten_min_ago = date_create("now -10 minutes", new DateTimeZone("UTC"));
- $ten_min_from_now = date_create("now +10 minutes", new DateTimeZone("UTC"));
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::authorizedAt()->between($twenty_min_ago, $ten_min_ago)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::authorizedAt()->between($ten_min_ago, $ten_min_from_now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_rangeNode_failedAt()
- {
- $transaction = Braintree\Transaction::sale([
- 'amount' => '3000.00',
- 'creditCard' => [
- 'number' => '4111111111111111',
- 'expirationDate' => '05/12'
- ]
- ])->transaction;
- $twenty_min_ago = date_create("now -20 minutes", new DateTimeZone("UTC"));
- $ten_min_ago = date_create("now -10 minutes", new DateTimeZone("UTC"));
- $ten_min_from_now = date_create("now +10 minutes", new DateTimeZone("UTC"));
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::failedAt()->between($twenty_min_ago, $ten_min_ago)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::failedAt()->between($ten_min_ago, $ten_min_from_now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_rangeNode_gatewayRejectedAt()
- {
- $old_merchant_id = Braintree\Configuration::merchantId();
- $old_public_key = Braintree\Configuration::publicKey();
- $old_private_key = Braintree\Configuration::privateKey();
- Braintree\Configuration::merchantId('processing_rules_merchant_id');
- Braintree\Configuration::publicKey('processing_rules_public_key');
- Braintree\Configuration::privateKey('processing_rules_private_key');
- $transaction = Braintree\Transaction::sale([
- 'amount' => '1000.00',
- 'creditCard' => [
- 'number' => '4111111111111111',
- 'expirationDate' => '05/12',
- 'cvv' => '200'
- ]
- ])->transaction;
- $twenty_min_ago = date_create("now -20 minutes", new DateTimeZone("UTC"));
- $ten_min_ago = date_create("now -10 minutes", new DateTimeZone("UTC"));
- $ten_min_from_now = date_create("now +10 minutes", new DateTimeZone("UTC"));
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::gatewayRejectedAt()->between($twenty_min_ago, $ten_min_ago)
- ]);
- $firstCount = $collection->maximumCount();
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::gatewayRejectedAt()->between($ten_min_ago, $ten_min_from_now)
- ]);
- $secondCount = $collection->maximumCount();
- $firstId = $collection->firstItem()->id;
- Braintree\Configuration::merchantId($old_merchant_id);
- Braintree\Configuration::publicKey($old_public_key);
- Braintree\Configuration::privateKey($old_private_key);
- $this->assertEquals(0, $firstCount);
- $this->assertEquals(1, $secondCount);
- $this->assertEquals($transaction->id, $firstId);
- }
- public function test_rangeNode_processorDeclinedAt()
- {
- $transaction = Braintree\Transaction::sale([
- 'amount' => '2000.00',
- 'creditCard' => [
- 'number' => '4111111111111111',
- 'expirationDate' => '05/12'
- ]
- ])->transaction;
- $twenty_min_ago = date_create("now -20 minutes", new DateTimeZone("UTC"));
- $ten_min_ago = date_create("now -10 minutes", new DateTimeZone("UTC"));
- $ten_min_from_now = date_create("now +10 minutes", new DateTimeZone("UTC"));
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::processorDeclinedAt()->between($twenty_min_ago, $ten_min_ago)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::processorDeclinedAt()->between($ten_min_ago, $ten_min_from_now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_rangeNode_settledAt()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => '1000.00',
- 'creditCard' => [
- 'number' => '4111111111111111',
- 'expirationDate' => '05/12'
- ],
- 'options' => [
- 'submitForSettlement' => true
- ]
- ]);
- $http = new Braintree\Http(Braintree\Configuration::$global);
- $path = Braintree\Configuration::$global->merchantPath() . '/transactions/' . $transaction->id . '/settle';
- $http->put($path);
- $transaction = Braintree\Transaction::find($transaction->id);
- $twenty_min_ago = date_create("now -20 minutes", new DateTimeZone("UTC"));
- $ten_min_ago = date_create("now -10 minutes", new DateTimeZone("UTC"));
- $ten_min_from_now = date_create("now +10 minutes", new DateTimeZone("UTC"));
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::settledAt()->between($twenty_min_ago, $ten_min_ago)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::settledAt()->between($ten_min_ago, $ten_min_from_now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_rangeNode_submittedForSettlementAt()
- {
- $transaction = Braintree\Transaction::sale([
- 'amount' => '1000.00',
- 'creditCard' => [
- 'number' => '4111111111111111',
- 'expirationDate' => '05/12'
- ],
- 'options' => [
- 'submitForSettlement' => true
- ]
- ])->transaction;
- $twenty_min_ago = date_create("now -20 minutes", new DateTimeZone("UTC"));
- $ten_min_ago = date_create("now -10 minutes", new DateTimeZone("UTC"));
- $ten_min_from_now = date_create("now +10 minutes", new DateTimeZone("UTC"));
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::submittedForSettlementAt()->between($twenty_min_ago, $ten_min_ago)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::submittedForSettlementAt()->between($ten_min_ago, $ten_min_from_now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_rangeNode_voidedAt()
- {
- $transaction = Braintree\Transaction::saleNoValidate([
- 'amount' => '1000.00',
- 'creditCard' => [
- 'number' => '4111111111111111',
- 'expirationDate' => '05/12'
- ]
- ]);
- $transaction = Braintree\Transaction::void($transaction->id)->transaction;
- $twenty_min_ago = date_create("now -20 minutes", new DateTimeZone("UTC"));
- $ten_min_ago = date_create("now -10 minutes", new DateTimeZone("UTC"));
- $ten_min_from_now = date_create("now +10 minutes", new DateTimeZone("UTC"));
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::voidedAt()->between($twenty_min_ago, $ten_min_ago)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::voidedAt()->between($ten_min_ago, $ten_min_from_now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_rangeNode_canSearchOnMultipleStatuses()
- {
- $transaction = Braintree\Transaction::sale([
- 'amount' => '1000.00',
- 'creditCard' => [
- 'number' => '4111111111111111',
- 'expirationDate' => '05/12'
- ],
- 'options' => [
- 'submitForSettlement' => true
- ]
- ])->transaction;
- $twenty_min_ago = date_create("now -20 minutes", new DateTimeZone("UTC"));
- $ten_min_ago = date_create("now -10 minutes", new DateTimeZone("UTC"));
- $ten_min_from_now = date_create("now +10 minutes", new DateTimeZone("UTC"));
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::authorizedAt()->between($twenty_min_ago, $ten_min_ago),
- Braintree\TransactionSearch::submittedForSettlementAt()->between($twenty_min_ago, $ten_min_ago)
- ]);
- $this->assertEquals(0, $collection->maximumCount());
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::id()->is($transaction->id),
- Braintree\TransactionSearch::authorizedAt()->between($ten_min_ago, $ten_min_from_now),
- Braintree\TransactionSearch::submittedForSettlementAt()->between($ten_min_ago, $ten_min_from_now)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($transaction->id, $collection->firstItem()->id);
- }
- public function test_advancedSearchGivesIterableResult()
- {
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::creditCardNumber()->startsWith("411111")
- ]);
- $this->assertGreaterThan(100, $collection->maximumCount());
- $arr = [];
- foreach($collection as $transaction) {
- array_push($arr, $transaction->id);
- }
- $unique_transaction_ids = array_unique(array_values($arr));
- $this->assertEquals($collection->maximumCount(), count($unique_transaction_ids));
- }
- public function test_handles_search_timeout()
- {
- $this->setExpectedException('Braintree\Exception\DownForMaintenance');
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::amount()->is('-5')
- ]);
- }
- public function testHandlesPayPalAccounts()
- {
- $http = new HttpClientApi(Braintree\Configuration::$global);
- $nonce = $http->nonceForPayPalAccount([
- 'paypal_account' => [
- 'access_token' => 'PAYPAL_ACCESS_TOKEN'
- ]
- ]);
- $result = Braintree\Transaction::sale([
- 'amount' => Braintree\Test\TransactionAmounts::$authorize,
- 'paymentMethodNonce' => $nonce
- ]);
- $this->assertTrue($result->success);
- $paypalDetails = $result->transaction->paypalDetails;
- $collection = Braintree\Transaction::search([
- Braintree\TransactionSearch::paypalPaymentId()->is($paypalDetails->paymentId),
- Braintree\TransactionSearch::paypalAuthorizationId()->is($paypalDetails->authorizationId),
- Braintree\TransactionSearch::paypalPayerEmail()->is($paypalDetails->payerEmail)
- ]);
- $this->assertEquals(1, $collection->maximumCount());
- $this->assertEquals($result->transaction->id, $collection->firstItem()->id);
- }
- }
|