function testFindErrorsOnWhitespaceOnlyCustomerId() { $this->setExpectedException('InvalidArgumentException'); Braintree_Address::find(' ', '123'); }
function testFind_whenNotFound() { $customer = Braintree_Customer::createNoValidate(); $this->setExpectedException('Braintree_Exception_NotFound'); Braintree_Address::find($customer->id, 'does-not-exist'); }
/** * Reads from the API * * @param object $model * @param array $queryData * @return array */ public function read(Model $model, $queryData = array(), $recursive = NULL) { $queryData = array_merge(array('conditions' => null, 'fields' => null, 'joins' => array(), 'limit' => 1, 'offset' => null, 'order' => array(0 => null), 'page' => 1, 'group' => null, 'callbacks' => 1, 'contain' => false, 'recursive' => -1), $queryData); extract($queryData); if (!empty($fields) && is_string($fields) && $fields == 'count') { $is_count = true; } else { $is_count = false; } if (!$this->_readErrors($model, $queryData, array('is_count' => $is_count))) { return false; } if (!empty($conditions[$model->alias . '.' . $model->primaryKey]) && ($limit == 1 || empty($limit) && $is_count)) { $entity = $this->_getModelEntity($model); try { switch ($entity) { case 'Customer': $customer = Braintree_Customer::find($conditions[$model->alias . '.' . $model->primaryKey]); $result = array(0 => array($model->alias => array('id' => $customer->id, 'first_name' => $customer->firstName, 'last_name' => $customer->lastName, 'company' => $customer->company, 'email' => $customer->email, 'phone' => $customer->phone, 'fax' => $customer->fax, 'website' => $customer->website, 'created' => $customer->createdAt->format('Y-m-d H:i:s'), 'modified' => $customer->updatedAt->format('Y-m-d H:i:s')))); break; case 'Transaction': $exploded = explode('|', $conditions[$model->alias . '.' . $model->primaryKey]); $braintree_transaction_id = isset($exploded[1]) ? $exploded[1] : $conditions[$model->alias . '.' . $model->primaryKey]; $transaction = Braintree_Transaction::find($braintree_transaction_id); $result = array(0 => array($model->alias => array('id' => $transaction->customer['id'] . '|' . $transaction->id, 'customer_id' => $transaction->customer['id'], 'payment_method_token' => $transaction->creditCard['token'], 'type' => $transaction->type, 'amount' => $transaction->amount, 'status' => $transaction->status, 'created' => $transaction->createdAt->format('Y-m-d H:i:s'), 'modified' => $transaction->updatedAt->format('Y-m-d H:i:s')))); $result[0][$model->alias . 'Status'] = array(); $count = 0; foreach ($transaction->statusHistory as $status) { $result[0][$model->alias . 'Status'][$count] = array('status' => $status->status, 'amount' => $status->amount, 'user' => $status->user, 'transaction_source' => $status->transactionSource, 'created' => $status->timestamp->format('Y-m-d H:i:s')); $count++; } break; case 'CreditCard': $credit_card = Braintree_CreditCard::find($conditions[$model->alias . '.' . $model->primaryKey]); $result = array(0 => array($model->alias => array('token' => $credit_card->token, 'customer_id' => $credit_card->customerId, 'cardholder_name' => $credit_card->cardholderName, 'card_type' => $credit_card->cardType, 'masked_number' => $credit_card->maskedNumber, 'expiration_date' => date('Y-m', strtotime($credit_card->expirationDate)) . '-01', 'is_default' => $credit_card->default, 'created' => $credit_card->createdAt->format('Y-m-d H:i:s'), 'modified' => $credit_card->updatedAt->format('Y-m-d H:i:s')))); break; case 'Address': $exploded = explode('|', $conditions[$model->alias . '.' . $model->primaryKey]); if (count($exploded) != 2) { return false; } list($customer_id, $address_id) = $exploded; $address = Braintree_Address::find($customer_id, $address_id); $result = array(0 => array($model->alias => array('id' => $address->customerId . '|' . $address->id, 'first_name' => $address->firstName, 'last_name' => $address->lastName, 'company' => $address->company, 'street_address' => $address->streetAddress, 'extended_address' => $address->extendedAddress, 'locality' => $address->locality, 'region' => $address->region, 'postal_code' => $address->postalCode, 'country_code_alpha_2' => $address->countryCodeAlpha2, 'country_code_alpha_3' => $address->countryCodeAlpha3, 'country_code_numeric' => $address->countryCodeNumeric, 'country_name' => $address->countryName, 'created' => $address->createdAt->format('Y-m-d H:i:s'), 'modified' => $address->updatedAt->format('Y-m-d H:i:s')))); break; default: $result = false; break; } } catch (Exception $e) { $result = false; } if ($is_count) { return array(0 => array(0 => array('count' => $result ? 1 : 0))); } return $result; } if (empty($conditions)) { try { $all_customers = Braintree_Customer::all(); } catch (Exception $e) { $this->showError(print_r($e, true)); return array(); } $return = array(); $count = 0; foreach ($all_customers->_ids as $id) { $return[$count][$model->alias]['id'] = $id; $count++; } return $return; } }