_apiversion = 3; $this->_individualId = $this->individualCreate(); } /** * Clean up after each test. */ public function tearDown() { $this->quickCleanUpFinancialEntities(); $this->quickCleanup(array('civicrm_uf_match')); } /** * Test Get order api. */ public function testGetOrder() { $contribution = $this->addOrder(FALSE, 100); $params = array( 'contribution_id' => $contribution['id'], ); $order = $this->callAPISuccess('Order', 'get', $params); $this->assertEquals(1, $order['count']); $expectedResult = array( $contribution['id'] => array( 'total_amount' => 100, 'contribution_id' => $contribution['id'], 'contribution_status' => 'Completed', 'net_amount' => 100, ), ); $lineItems[] = array( 'entity_table' => 'civicrm_contribution', 'entity_id' => $contribution['id'], 'contribution_id' => $contribution['id'], 'unit_price' => 100, 'line_total' => 100, 'financial_type_id' => 1, ); $this->checkPaymentResult($order, $expectedResult, $lineItems); $this->callAPISuccess('Contribution', 'Delete', array( 'id' => $contribution['id'], )); } /** * Test Get Order api for participant contribution. */ public function testGetOrderParticipant() { $contribution = $this->addOrder(FALSE, 100); list($items, $contribution) = $this->createParticipantWithContribution(); $params = array( 'contribution_id' => $contribution['id'], ); $order = $this->callAPISuccess('Order', 'get', $params); $this->assertEquals(2, count($order['values'][$contribution['id']]['line_items'])); $this->callAPISuccess('Contribution', 'Delete', array( 'id' => $contribution['id'], )); } /** * Function to assert db values */ public function checkPaymentResult($results, $expectedResult, $lineItems = NULL) { foreach ($expectedResult[$results['id']] as $key => $value) { $this->assertEquals($results['values'][$results['id']][$key], $value); } if ($lineItems) { foreach ($lineItems as $key => $items) { foreach ($items as $k => $item) { $this->assertEquals($results['values'][$results['id']]['line_items'][$key][$k], $item); } } } } /** * add order * * @param bool $isPriceSet * @param float $amount * @param array $extraParams * * @return array */ public function addOrder($isPriceSet, $amount = 300, $extraParams = array()) { $p = array( 'contact_id' => $this->_individualId, 'receive_date' => '2010-01-20', 'total_amount' => $amount, 'financial_type_id' => $this->_financialTypeId, 'contribution_status_id' => 1, ); if ($isPriceSet) { $priceFields = $this->createPriceSet(); foreach ($priceFields['values'] as $key => $priceField) { $lineItems[1][$key] = array( 'price_field_id' => $priceField['price_field_id'], 'price_field_value_id' => $priceField['id'], 'label' => $priceField['label'], 'field_title' => $priceField['label'], 'qty' => 1, 'unit_price' => $priceField['amount'], 'line_total' => $priceField['amount'], 'financial_type_id' => $priceField['financial_type_id'], ); } $p['line_item'] = $lineItems; } $p = array_merge($extraParams, $p); return $this->callAPISuccess('Contribution', 'create', $p); } }