You are here

uc_attribute_checkout.test in Ubercart 7.3

Ubercart attribute checkout tests.

File

uc_attribute/tests/uc_attribute_checkout.test
View source
<?php

/**
 * @file
 * Ubercart attribute checkout tests.
 */

/**
 * Tests the product attribute API.
 */
class UbercartAttributeCheckoutTestCase extends UbercartTestHelper {
  public static function getInfo() {
    return array(
      'name' => 'Attribute Checkout',
      'description' => 'Test ordering products with attributes.',
      'group' => 'Ubercart',
    );
  }

  /**
   * Overrides DrupalWebTestCase::setUp().
   */
  protected function setUp($modules = array(), $permissions = array()) {
    parent::setUp(array(
      'uc_attribute',
      'uc_cart',
    ), array(
      'administer attributes',
      'administer product attributes',
      'administer product options',
    ));
    $this
      ->drupalLogin($this->adminUser);
  }

  /**
   * Tests that product in cart has the selected attribute option.
   */
  public function testAttributeAddToCart() {
    for ($display = 0; $display <= 3; ++$display) {

      // Set up an attribute.
      $data = array(
        'display' => $display,
      );
      $attribute = UbercartAttributeTestCase::createAttribute($data);
      if ($display) {

        // Give the attribute an option.
        $option = UbercartAttributeTestCase::createAttributeOption(array(
          'aid' => $attribute->aid,
        ));
      }
      $attribute = uc_attribute_load($attribute->aid);

      // Put the attribute on a product.
      $product = $this
        ->createProduct();
      uc_attribute_subject_save($attribute, 'product', $product->nid, TRUE);

      // Add the product to the cart.
      if ($display == 3) {
        $edit = array(
          "attributes[{$attribute->aid}][{$option->oid}]" => $option->oid,
        );
      }
      elseif (isset($option)) {
        $edit = array(
          "attributes[{$attribute->aid}]" => $option->oid,
        );
      }
      else {
        $option = new stdClass();
        $option->name = self::randomName();
        $option->price = 0;
        $edit = array(
          "attributes[{$attribute->aid}]" => $option->name,
        );
      }
      $this
        ->drupalPost('node/' . $product->nid, $edit, t('Add to cart'));
      $this
        ->assertText("{$attribute->label}: {$option->name}", t('Option selected on cart item.'));
      $this
        ->assertText(uc_currency_format($product->sell_price + $option->price), t('Product has adjusted price.'));
    }
  }

}

Classes

Namesort descending Description
UbercartAttributeCheckoutTestCase Tests the product attribute API.