function UbercartCartLinksTestCase::createValidCartLinks in Ubercart 6.2
Same name and namespace in other branches
- 7.3 uc_cart_links/tests/uc_cart_links.test \UbercartCartLinksTestCase::createValidCartLinks()
 
Creates cart links pointing to the given product(s).
Links containing many combinations of attributes and options wil be returned. Return value is an associative array containing two keys: -links: An array of the actual links we're building. -data: An array of metadata about the cart links so we won't have to try to re-construct this information by parsing the link at a later time.
The 'links' and 'data' sub-arrays are both indexed by the keys used in the $products array that is passed in as an argument, so these keys may be used to lookup the link and metadata for a specific product.
Parameters
$products: An array of products.
Return value
Array containing cart links and link metadata.
7 calls to UbercartCartLinksTestCase::createValidCartLinks()
- UbercartCartLinksTestCase::testCartLinksAllowEmptying in uc_cart_links/
uc_cart_links.test  - Tests cart links on a page under a variety of conditions.
 - UbercartCartLinksTestCase::testCartLinksBasicFunctionality in uc_cart_links/
uc_cart_links.test  - Tests cart links on a page under a variety of conditions.
 - UbercartCartLinksTestCase::testCartLinksMessages in uc_cart_links/
uc_cart_links.test  - Tests cart links messages.
 - UbercartCartLinksTestCase::testCartLinksProductActionMessage in uc_cart_links/
uc_cart_links.test  - Tests cart links on a page under a variety of conditions.
 - UbercartCartLinksTestCase::testCartLinksRedirect in uc_cart_links/
uc_cart_links.test  - Tests page redirection for invalid cart links.
 
File
- uc_cart_links/
uc_cart_links.test, line 794  - Ubercart Cart Links Tests.
 
Class
- UbercartCartLinksTestCase
 - SimpleTests for Ubercart Cart Links.
 
Code
function createValidCartLinks($products = array()) {
  foreach ($products as $key => $product) {
    $nid = $product->nid;
    $title = $product->title;
    $qty = mt_rand(1, 19);
    // $link_data will hold meta information about the cart links
    // so we won't have to try to re-construct this information by
    // parsing the link at a later time.
    $link_data[$key] = array(
      'nid' => $nid,
      'title' => $title,
      'qty' => $qty,
      'attributes' => array(),
    );
    // $cart_links will hold the actual links we're building.
    // $cart_links and $link_data share the same keys.
    $cart_links[$key] = '/cart/add/p' . $nid . '_q' . $qty;
    // Loop over attributes, append all attribute/option combos to links
    $attributes = uc_product_get_attributes($nid);
    foreach ($attributes as $attribute) {
      // If this is textfield, radio, or select option, then
      // only 1 option allowed.  If checkbox, multiple are allowed.
      switch ($attribute->display) {
        case 0:
          // textfield
          $value = $this
            ->randomName(12);
          // Textfield
          $link_data[$key]['attributes'][$attribute->label][] = $value;
          $cart_links[$key] .= '_a' . $attribute->aid . 'o' . $value;
          break;
        case 1:
        // select
        case 2:
          // radios
          $option = $attribute->options[array_rand($attribute->options)];
          $link_data[$key]['attributes'][$attribute->label][] = $option->name;
          $cart_links[$key] .= '_a' . $attribute->aid . 'o' . $option->oid;
          break;
        case 3:
          // checkboxes
          foreach ($attribute->options as $option) {
            $link_data[$key]['attributes'][$attribute->label][] = $option->name;
            $cart_links[$key] .= '_a' . $attribute->aid . 'o' . $option->oid;
          }
          break;
      }
    }
  }
  return array(
    'links' => $cart_links,
    'data' => $link_data,
  );
}