public function UbercartProductPowerToolsTestCase::testProductPowerToolsNodeForm in Ubercart Product Power Tools 7
File
- tests/
uc_product_power_tools.test, line 35 - Ubercart Product Power Tools Tests
Class
- UbercartProductPowerToolsTestCase
- @file Ubercart Product Power Tools Tests
Code
public function testProductPowerToolsNodeForm() {
// Default settings
$edit = array(
'asku' => '0',
'asku_pattern' => '',
'cost_settings' => '0.000',
'costonoff' => '0',
'dq_settings' => '1',
'dqonoff' => '0',
'height' => '0.000',
'length' => '0',
'length_units' => 'in',
'lp_settings' => '0.000',
'lponoff' => '0',
'lpos_settings' => '0',
'lposonoff' => '0',
'pq_settings' => '1',
'pqonoff' => '0',
'product_class' => 'product',
'ship_settings' => '0',
'sp_settings' => '0.000',
'sponoff' => '0',
'stock_settings' => '0',
'stock_threshold' => '0',
'stockonoff' => '0',
'weight' => '0',
'weight_units' => 'lb',
'width' => '0',
);
$this
->validateSettings($edit);
// Begin "Show Auto SKU Generation" tests.
// Disable (show but do not allow editing) SKU field and Automatically Generate from replacement pattern below:
$edit = array(
'asku' => 3,
'asku_pattern' => '[node:title]-test',
);
$title = $this
->randomName(32);
$overrides = array(
'title' => $title,
);
$expected = array(
'model' => $title . '-test',
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->assertEqual(1, 1, '1 is equal');
$this
->drupalGet('node/add/product');
$disabled_field = $this
->xpath('//input[@id=:id and @disabled="disabled"]', array(
':id' => 'edit-model',
));
$this
->assertTrue($disabled_field, t('The SKU cannot be changed.'));
// Hide SKU field and Automatically Generate from replacement pattern below:
$edit['asku'] = 1;
$title = $this
->randomName(32);
$overrides = array(
'title' => $title,
);
$expected = array(
'model' => $title . '-test',
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->assertEqual(1, 1, '2 is equal');
$this
->drupalGet('node/add/product');
$this
->assertNoFieldById('edit-model', '', 'The edit-model field is not on the page');
// Show SKU field, but for new products give the option to Automatically Generate from replacement pattern below:
$edit['asku'] = 2;
$title = $this
->randomName(32);
$overrides = array(
'title' => $title,
);
$expected = array(
'model' => $title . '-test',
);
// Check auto SKU.
$this
->validateSettings($edit, $overrides, $expected);
$this
->assertEqual(1, 1, '3 is equal');
// Check regular submission.
$expected = array();
$overrides = array();
$this
->validateSettings($edit, $overrides, $expected);
$this
->assertEqual(1, 1, '4 is equal');
// Begin "List Price" tests.
// Hide List Price field & Use Sell Price Value entered on product form.
$edit = array(
'asku' => 0,
'lponoff' => 1,
);
$sell_price = mt_rand(1, 150);
$overrides = array(
'sell_price' => $sell_price,
);
$expected = array(
'list_price' => $sell_price,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->assertEqual(1, 1, '5 is equal');
$overrides = array();
$this
->drupalGet('node/add/product');
$this
->assertNoFieldById('edit-sell-price', '', 'The edit-sell-price field is not on the page');
// Hide List Price field & Use default value below:
$list_price = mt_rand(1, 150);
$edit = array(
'lponoff' => 2,
'lp_settings' => $list_price,
);
$expected = array(
'list_price' => $list_price,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertNoFieldById('edit-list-price', '', 'The edit-list-price field is not on the page');
// Show List Price field & Use default value below:
$edit = array(
'lponoff' => 3,
'lp_settings' => $list_price,
);
$this
->validateSettings($edit, $overrides, $expected);
// Test a normal submission with these settings.
$expected = array();
$this
->validateSettings($edit, $overrides, $expected);
// Begin "Cost" tests.
// Hide Cost field & Use default value below:
$cost = mt_rand(1, 150);
$edit = array(
'lponoff' => 0,
'costonoff' => 1,
'cost_settings' => $cost,
);
$expected = array(
'cost' => $cost,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertNoFieldById('edit-cost', '', 'The edit-cost field is not on the page');
// Show Cost field & Use default value below:
$edit['costonoff'] = 2;
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertFieldById('edit-cost', $cost, 'The edit-cost field is on the page');
// Test a normal submission with these settings.
$expected = array();
$this
->validateSettings($edit, $overrides, $expected);
// Begin "Sell price" tests.
// Hide Sell price field & Use default value below:
$sell_price = mt_rand(1, 150);
$edit = array(
'costonoff' => 0,
'sponoff' => 1,
'sp_settings' => $sell_price,
);
$expected = array(
'sell_price' => $sell_price,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertNoFieldById('edit-sell-price', '', 'The edit-sell-price field is not on the page');
// Show Sell price field & Use default value below:
$edit['sponoff'] = 2;
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertFieldById('edit-sell-price', $sell_price, 'The edit-sell-price field is on the page');
// Test a normal submission with these settings.
$expected = array();
$this
->validateSettings($edit, $overrides, $expected);
// Begin "Default Quantity" tests.
// Hide Default Quantity field & Use default value below:
$default_qty = mt_rand(1, 100);
$edit = array(
'sponoff' => 0,
'dqonoff' => 1,
'dq_settings' => $default_qty,
);
$expected = array(
'default_qty' => $default_qty,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertNoFieldById('edit-default-qty', '', 'The edit-default-qty field is not on the page');
// Show Default Quantity field & Use default value below:
$edit = array(
'dqonoff' => 2,
'dq_settings' => $default_qty,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertFieldById('edit-default-qty', '', 'The edit-default-qty field is on the page');
// Test a normal submission with these settings.
$expected = array();
$this
->validateSettings($edit, $overrides, $expected);
// Begin "Default Package Quantity" tests.
// Hide Default Package Quantity field & Use default value below:
$pkg_qty = mt_rand(1, 100);
$edit = array(
'dqonoff' => 0,
'pqonoff' => 1,
'pq_settings' => $pkg_qty,
);
$expected = array(
'pkg_qty' => $pkg_qty,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertNoFieldById('edit-pkg-qty', '', 'The edit-pkg-qty field is not on the page');
// Show Default Quantity field & Use default value below:
$edit = array(
'pqonoff' => 2,
'pq_settings' => $pkg_qty,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertFieldById('edit-pkg-qty', '', 'The edit-pkg-qty field is on the page');
// Test a normal submission with these settings.
$expected = array();
$this
->validateSettings($edit, $overrides, $expected);
// Begin "List Position" tests.
// Hide List Position field & Use default value below:
$lpos = mt_rand(-25, 25);
$edit = array(
'pqonoff' => 0,
'lposonoff' => 1,
'lpos_settings' => $lpos,
);
$expected = array(
'ordering' => $lpos,
);
$this
->validateSettings($edit, $overrides, $expected);
// Begin "Shipping" tests.
// Product is Shippable. Hide checkbox, but show other shipping fields on product entry form & use default values below:
$length = mt_rand(1, 50);
$width = mt_rand(1, 50);
$height = mt_rand(1, 50);
$length_units = array_rand(array(
'in' => t('Inches'),
'ft' => t('Feet'),
'cm' => t('Centimeters'),
'mm' => t('Millimeters'),
));
$weight = mt_rand(1, 50);
$weight_units = array_rand(array(
'lb' => t('Pounds'),
'kg' => t('Kilograms'),
'oz' => t('Ounces'),
'g' => t('Grams'),
));
$edit = array(
'lposonoff' => 0,
'ship_settings' => 1,
'length' => $length,
'width' => $width,
'height' => $height,
'length_units' => $length_units,
'weight' => $weight,
'weight_units' => $weight_units,
);
$expected = array(
'shippable' => 1,
'dim_length' => $length,
'dim_width' => $width,
'dim_height' => $height,
'length_units' => $length_units,
'weight' => $weight,
'weight_units' => $weight_units,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertNoFieldById('edit-shippable', '', 'The edit-shippable field is not on the page');
$this
->assertFieldById('edit-weight--2', '', 'The edit-weight--2 field is on the page');
$this
->assertFieldById('edit-dim-length', '', 'The edit-dim-length field is on the page');
// Product is Shippable. Hide checkbox & all shipping fields on product entry form & use default values below:
$edit = array(
'ship_settings' => 5,
);
$expected = array(
'shippable' => 1,
'dim_length' => $length,
'dim_width' => $width,
'dim_height' => $height,
'length_units' => $length_units,
'weight' => $weight,
'weight_units' => $weight_units,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertNoFieldById('edit-shippable', '', 'The edit-shippable field is not on the page');
$this
->assertNoFieldById('edit-weight--2', '', 'The edit-weight--2 field is not on the page');
$this
->assertNoFieldById('edit-dim-length', '', 'The edit-dim-length field is not on the page');
// Product is NOT Shippable. Hide checkbox, but show other shipping fields on product entry form & use default values below:
$edit = array(
'ship_settings' => 2,
);
$expected = array(
'shippable' => 0,
'dim_length' => $length,
'dim_width' => $width,
'dim_height' => $height,
'length_units' => $length_units,
'weight' => $weight,
'weight_units' => $weight_units,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertNoFieldById('edit-shippable', '', 'The edit-shippable field is not on the page');
$this
->assertFieldById('edit-weight--2', '', 'The edit-weight--2 field is on the page');
$this
->assertFieldById('edit-dim-length', '', 'The edit-dim-length field is on the page');
// Product is NOT Shippable. Hide checkbox & all shipping fields on product entry form
$edit = array(
'ship_settings' => 3,
'length' => $length,
'width' => $width,
'height' => $height,
'length_units' => $length_units,
'weight' => $weight,
'weight_units' => $weight_units,
);
$expected = array(
'shippable' => 0,
'dim_length' => $length,
'dim_width' => $width,
'dim_height' => $height,
'length_units' => $length_units,
'weight' => $weight,
'weight_units' => $weight_units,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertNoFieldById('edit-shippable', '', 'The edit-shippable field is not on the page');
$this
->assertNoFieldById('edit-weight--2', '', 'The edit-weight--2 field is not on the page');
$this
->assertNoFieldById('edit-dim-length', '', 'The edit-dim-length field is not on the page');
// Show checkbox but hide all shipping fields on product entry form
$edit = array(
'ship_settings' => 4,
'length' => $length,
'width' => $width,
'height' => $height,
'length_units' => $length_units,
'weight' => $weight,
'weight_units' => $weight_units,
);
$expected = array(
'dim_length' => $length,
'dim_width' => $width,
'dim_height' => $height,
'length_units' => $length_units,
'weight' => $weight,
'weight_units' => $weight_units,
);
$this
->validateSettings($edit, $overrides, $expected);
$this
->drupalGet('node/add/product');
$this
->assertFieldById('edit-shippable', '', 'The edit-shippable field is on the page');
$this
->assertNoFieldById('edit-weight--2', '', 'The edit-weight--2 field is not on the page');
$this
->assertNoFieldById('edit-dim-length', '', 'The edit-dim-length field is not on the page');
// Begin "Stock" tests.
// Set stock level using default value below
$stock_settings = mt_rand(1, 100);
$stock_threshold = mt_rand(100, 200);
$edit = array(
'ship_settings' => 0,
'stockonoff' => 1,
'stock_settings' => $stock_settings,
'stock_threshold' => $stock_threshold,
);
// Generate title so we can later get node ID by title.
$title = $this
->randomName(32);
$overrides = array(
'title' => $title,
);
$expected = array();
$expected['stock_settings'] = $stock_settings;
$expected['stock_threshold'] = $stock_threshold;
$this
->validateSettings($edit, $overrides, $expected);
$node = $this
->drupalGetNodeByTitle($edit['title']);
$this
->drupalGet('node/' . $node->nid . '/edit/stock');
$this
->assertFieldById('edit-stock-0-stock', $stock_settings);
$this
->assertFieldById('edit-stock-0-threshold', $stock_threshold);
}