You are here

uc_payment.test in Ubercart 7.3

Ubercart payment related tests.

File

payment/uc_payment/tests/uc_payment.test
View source
<?php

/**
 * @file
 * Ubercart payment related tests.
 */

/**
 * Tests the checkout payment pane.
 */
class UbercartPaymentPaneTestCase extends UbercartTestHelper {
  public static function getInfo() {
    return array(
      'name' => 'Payment checkout pane',
      'description' => 'Ensures that the payment pane functions properly during checkout.',
      'group' => 'Ubercart',
    );
  }

  /**
   * Overrides DrupalWebTestCase::setUp().
   */
  protected function setUp($modules = array(), $permissions = array()) {
    parent::setUp(array(
      'uc_payment',
      'uc_payment_pack',
    ));
    $this
      ->drupalLogin($this->adminUser);
    $this
      ->drupalPost('node/' . $this->product->nid, array(), t('Add to cart'));
  }

  /**
   * Verifies checkout page presents all enabled payment methods.
   */
  public function testPaymentMethodOptions() {

    // No payment methods.
    variable_set('uc_payment_method_check_checkout', FALSE);
    $this
      ->drupalGet('cart/checkout');
    $this
      ->assertText('Checkout cannot be completed without any payment methods enabled. Please contact an administrator to resolve the issue.');

    // Single payment method.
    variable_set('uc_payment_method_check_checkout', TRUE);
    $this
      ->drupalGet('cart/checkout');
    $this
      ->assertNoText('Select a payment method from the following options.');
    $this
      ->assertFieldByXPath("//input[@name='panes[payment][payment_method]' and @disabled='disabled']");

    // Multiple payment methods.
    variable_set('uc_payment_method_other_checkout', TRUE);
    $this
      ->drupalGet('cart/checkout');
    $this
      ->assertText('Select a payment method from the following options.');
    $this
      ->assertNoFieldByXPath("//input[@name='panes[payment][payment_method]' and @disabled='disabled']");
  }

  /**
   * Tests operation of uc_payment_show_order_total_preview variable.
   */
  public function testOrderTotalPreview() {
    variable_set('uc_payment_show_order_total_preview', TRUE);
    $this
      ->drupalGet('cart/checkout');
    $this
      ->assertText('Order total:');
    variable_set('uc_payment_show_order_total_preview', FALSE);
    $this
      ->drupalGet('cart/checkout');
    $this
      ->assertNoText('Order total:');
  }

  /**
   * Tests free orders.
   */
  public function testFreeOrders() {
    $free_product = $this
      ->createProduct(array(
      'sell_price' => 0,
    ));
    variable_set('uc_payment_method_check_checkout', TRUE);

    // Check that paid products cannot be purchased for free.
    $this
      ->drupalGet('cart/checkout');
    $this
      ->assertText('Check or money order');
    $this
      ->assertNoText('No payment required');
    $this
      ->assertNoText('Subtotal: $0.00');

    // Check that a mixture of free and paid products
    // cannot be purchased for free.
    $this
      ->drupalPost('node/' . $free_product->nid, array(), t('Add to cart'));
    $this
      ->drupalGet('cart/checkout');
    $this
      ->assertText('Check or money order');
    $this
      ->assertNoText('No payment required');
    $this
      ->assertNoText('Subtotal: $0.00');

    // Check that free products can be purchased successfully with no payment.
    $this
      ->drupalPost('cart', array(), t('Remove'));
    $this
      ->drupalPost('cart', array(), t('Remove'));
    $this
      ->drupalPost('node/' . $free_product->nid, array(), t('Add to cart'));
    $this
      ->drupalGet('cart/checkout');
    $this
      ->assertNoText('Check or money order');
    $this
      ->assertText('No payment required');
    $this
      ->assertText('Subtotal: $0.00');

    // Check that this is the only available payment method.
    $this
      ->assertNoText('Select a payment method from the following options.');
    $this
      ->assertFieldByXPath("//input[@name='panes[payment][payment_method]' and @disabled='disabled']");
  }

}

Classes

Namesort descending Description
UbercartPaymentPaneTestCase Tests the checkout payment pane.