function CommerceRecurringTestCase::testCommerceRecurringEntityCreationWorkflow in Commerce Recurring Framework 7.2
When creating an order and finish a payment, recurring entity
File
- tests/
commerce_recurring.test, line 196 - Unit tests for the commerce recurring module.
Class
- CommerceRecurringTestCase
- @file Unit tests for the commerce recurring module.
Code
function testCommerceRecurringEntityCreationWorkflow() {
// Login as a customer to proceed with the order.
$this
->drupalLogin($this->customer);
// Add a product to the cart and go on in checkout.
$product = $this
->createRecurringProduct();
$product_wrapper = entity_metadata_wrapper('commerce_product', $product);
$line_item = commerce_cart_product_add_by_id($product->product_id, 1, TRUE, $this->customer->uid);
$this
->drupalPost($this
->getCommerceUrl('cart'), array(), t('Checkout'));
// Generate random information, as city, postal code, etc.
$address_info = $this
->generateAddressInformation();
// Fill in the billing address information.
$billing_pane = $this
->xpath("//select[starts-with(@name, 'customer_profile_billing[commerce_customer_address]')]");
$this
->drupalPostAJAX(NULL, array(
(string) $billing_pane[0]['name'] => 'US',
), (string) $billing_pane[0]['name']);
// Fill in the required information for billing pane, with a random State.
$info = array(
'customer_profile_billing[commerce_customer_address][und][0][name_line]' => $address_info['name_line'],
'customer_profile_billing[commerce_customer_address][und][0][thoroughfare]' => $address_info['thoroughfare'],
'customer_profile_billing[commerce_customer_address][und][0][locality]' => $address_info['locality'],
'customer_profile_billing[commerce_customer_address][und][0][administrative_area]' => 'KY',
'customer_profile_billing[commerce_customer_address][und][0][postal_code]' => $address_info['postal_code'],
);
$this
->drupalPost(NULL, $info, t('Continue to next step'));
// Finish checkout process
$this
->drupalPost(NULL, array(
'commerce_payment[payment_method]' => 'commerce_payment_example|commerce_payment_commerce_payment_example',
), t('Continue to next step'));
// Load recurring entities.
$order = commerce_order_load($line_item->order_id);
$recurring_entities = commerce_recurring_load_by_order($order);
$recurring_entity = reset($recurring_entities);
$recurring_wrapper = entity_metadata_wrapper('commerce_recurring', $recurring_entity);
// Gather expected dates.
$start_date = $recurring_wrapper->start_date
->value();
$due_date = new DateObject($start_date);
$end_date = new DateObject($start_date);
$initial_interval = $product_wrapper->commerce_recurring_ini_period
->value();
$end_interval = $product_wrapper->commerce_recurring_end_period
->value();
interval_apply_interval($due_date, $initial_interval, TRUE);
interval_apply_interval($end_date, $end_interval, TRUE);
// Assert if the recurring entity is being created as expected.
$this
->assertEqual($recurring_wrapper->commerce_recurring_ref_product
->value(), $product, t('Product is correctly set in the recurring entity'));
$this
->assertEqual($recurring_wrapper->commerce_recurring_order
->get(0)->order_id
->value(), $order->order_id, t('Order is correctly set in the recurring entity'));
$this
->assertEqual($recurring_wrapper->commerce_recurring_fixed_price->amount
->value(), $product_wrapper->commerce_recurring_ini_price->amount
->value(), t('Initial price is correctly set for the recurring entity'));
$this
->assertEqual($recurring_wrapper->due_date
->value(), $due_date
->getTimestamp(), t('Recurring date is set for the recurring entity'));
$this
->assertEqual($recurring_wrapper->end_date
->value(), $end_date
->getTimestamp(), t('End date is set for the recurring entity'));
}