diff --git a/checkout_page_example/checkout_page_example.info b/checkout_page_example/checkout_page_example.info index cca571f36129ff11d9ec6f39335ae9f60e510c26..542c3677e017e4fa81bd7f30d56325f45a20e8ab 100644 --- a/checkout_page_example/checkout_page_example.info +++ b/checkout_page_example/checkout_page_example.info @@ -4,3 +4,4 @@ package = Commerce (contrib) dependencies[] = commerce_checkout dependencies[] = checkout_pane_example core = 7.x +files[] = checkout_page_example.test diff --git a/checkout_page_example/checkout_page_example.test b/checkout_page_example/checkout_page_example.test new file mode 100644 index 0000000000000000000000000000000000000000..5e0b0717e3625b5fe8f4ee6ad534601beebfbf41 --- /dev/null +++ b/checkout_page_example/checkout_page_example.test @@ -0,0 +1,110 @@ +<?php + +/** + *@file + * This file consists of the tests for commerce_page_example. + */ + +class CheckoutPageExampleTestCase extends CommerceBaseTestCase{ + public static function getInfo(){ + return array( + 'name' => 'Checkout Page Example', + 'description' => 'Checks the functionality of Checkout Page Example.', + 'group' => 'Commerce (contrib)' + ); + } + + /** + *Set up the necessary modules for testing. + */ + function setUp(){ + $modules = parent::setUpHelper('all',array('checkout_pane_example','checkout_page_example')); + parent::setUp($modules); + + // User creation for different operations. + $this->store_customer = $this->createStoreCustomer(); + $this->store_admin = $this->createStoreAdmin(); + + //Check if the default product type is available else create it. + $product_types = commerce_product_types(); + if(empty($product_types['product'])){ + $this->createDummyProductType('product'); + commerce_product_types_reset(); + } + + // The rule that sends a mail after checkout completion should be disabled + // as it returns an error caused by how mail messages are stored. + $rules_config = rules_config_load('commerce_checkout_order_email'); + $rules_config->active = FALSE; + $rules_config->save(); + + cache_clear_all(); //Just in case required. + } + + /** + *Test the Checkout Page example. + */ + function testCheckoutPageExampleFunctionality(){ + $this->drupalLogin($this->store_customer); + + // Order creation, in cart status. + $this->order = $this->createDummyOrder($this->store_customer->uid); + + // Access to checkout page. + $this->drupalGet($this->getCommerceUrl('checkout')); + + // Check if the page is right. + $this->assertResponse(200, t('The owner of the order can access to the checkout page')); + $this->assertTitle(t('Checkout Page Example') . ' | Drupal', t('Title of the checkout example page is correct')); + $this->assertText(t('Checkout Pane Example'),t('The Pane added by the example is present')); + $this->assertText(t('Your nickname')); + + //Testing the cancel button. + $this->drupalPost(NULL,array(),t('Cancel')); + $this->assertText(t('Checkout of your current order has been canceled and may be resumed when you are ready.')); + $this->assertText(t('Shopping cart')); + $this->assertText(t('Product One')); + + // Access to checkout page. + $this->drupalGet($this->getCommerceUrl('checkout')); + + $nickname = $this->randomName(); + //Check the "Continue to real checkout page" button. + $this->drupalPost(NULL,array('checkout_pane_example[nickname]' => $nickname),t('Continue to a real checkout page')); + + // Check if the page resolves and if the default panes are present. + $this->assertResponse(200, t('The owner of the order can access to the checkout page')); + $this->assertTitle(t('Checkout') . ' | Drupal', t('Title of the checkout phase is correct')); + $this->assertText(t('Your big wonderful shopping cart brimming over with shopaholic nonsense'), t('Shopping cart contents pane is present')); + $this->assertText(t('Billing information'), t('Billing information pane is present')); + $this->drupalLogout(); + + //Login as a store admin, to check the additional email address checkbox. + $this->drupalLogin($this->store_admin); + $this->drupalGet('admin/commerce/config/checkout/form/pane/checkout_pane_example'); + $this->assertText('Checkout Pane Example',t('Entered the checkout pane configuration page')); + $this->drupalPost(NULL,array('checkout_pane_example_request_another_email' => TRUE),t('Save configuration')); + $this->drupalLogout(); + + $this->drupalLogin($this->store_customer); + + // Access to checkout page. + $this->drupalGet($this->getCommerceUrl('checkout')); + + $another_email = 'noreply@drupal.org'; + // Check if the page is right. + $this->assertResponse(200, t('The owner of the order can access to the checkout page')); + $this->assertTitle(t('Checkout Page Example') . ' | Drupal', t('Title of the checkout example page is correct')); + $this->assertText(t('Checkout Pane Example'),t('The Pane added by the example is present')); + $this->assertText(t('Your nickname')); + $this->assertText(t('Another e-mail address')); + + $this->drupalPost(NULL,array('checkout_pane_example[nickname]' => $nickname,'checkout_pane_example[another_email]' => $another_email),t('Continue to a real checkout page')); + + // Check if the page resolves and if the default panes are present. + $this->assertResponse(200, t('The owner of the order can access to the checkout page')); + $this->assertTitle(t('Checkout') . ' | Drupal', t('Title of the checkout phase is correct')); + $this->assertText(t('Your big wonderful shopping cart brimming over with shopaholic nonsense'), t('Shopping cart contents pane is present')); + $this->assertText(t('Billing information'), t('Billing information pane is present')); + } +}