162 lines
4.2 KiB
PHP
162 lines
4.2 KiB
PHP
<?php
|
|
|
|
class Wiaas_Package_CL_Pricing_Test extends Wiaas_Unit_Test_Case {
|
|
var $shop_owner_id, $customer_id, $package_id, $cl_extras;
|
|
|
|
function setUp() {
|
|
parent::setUp();
|
|
|
|
$this->shop_owner_id = $this->factory->organization->create_new_organization(
|
|
array( 'name' => 'Shop owner organization' )
|
|
);
|
|
|
|
$this->customer_id = $this->factory->organization->create_new_organization(
|
|
array( 'name' => 'Customer Organization' )
|
|
);
|
|
|
|
$package = $this->factory->product->create_product_bundle(array(
|
|
'products' => array( $this->factory->product->create_simple_product() )
|
|
));
|
|
|
|
$this->package_id = $package->get_id();
|
|
|
|
$this->cl_extras = array(
|
|
'purchase_default' => array(
|
|
'fixed' => 10,
|
|
'recurrent' => 10,
|
|
'services' => 10,
|
|
'visible' => true
|
|
),
|
|
'purchase_24_default' => array(
|
|
'fixed' => 10,
|
|
'recurrent' => 10,
|
|
'services' => 10,
|
|
'visible' => true
|
|
),
|
|
'managed_36_default' => array(
|
|
'fixed' => 10,
|
|
'recurrent' => 10,
|
|
'services' => 10,
|
|
'visible' => true
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers Wiaas_Package_CL_Pricing::set_extras()
|
|
*/
|
|
function test_packages_extras_set() {
|
|
Wiaas_Package_CL_Pricing::set_extras(
|
|
$this->shop_owner_id,
|
|
$this->package_id,
|
|
$this->cl_extras);
|
|
|
|
// validate data saved
|
|
$cl_extras = get_term_meta(
|
|
$this->shop_owner_id,
|
|
'_wiaas_cm_extras_' . $this->package_id,
|
|
true);
|
|
|
|
$this->_validate_default_cl_extras($cl_extras);
|
|
}
|
|
|
|
/**
|
|
* @covers Wiaas_Package_CL_Pricing::get_extras()
|
|
*/
|
|
function test_package_extras_retrieved() {
|
|
update_term_meta(
|
|
$this->shop_owner_id,
|
|
'_wiaas_cm_extras_' . $this->package_id,
|
|
$this->cl_extras);
|
|
|
|
$cl_extras = Wiaas_Package_CL_Pricing::get_extras($this->shop_owner_id, $this->package_id);
|
|
|
|
$this->_validate_default_cl_extras($cl_extras);
|
|
}
|
|
|
|
/**
|
|
* @covers Wiaas_Package_CL_Pricing::get_extras_for_customer()
|
|
*/
|
|
function test_default_extras_retrieved_for_customer() {
|
|
update_term_meta(
|
|
$this->shop_owner_id,
|
|
'_wiaas_cm_extras_' . $this->package_id,
|
|
$this->cl_extras);
|
|
|
|
$pay_types = array_keys(Wiaas_Package_Pricing::get_available_pay_types());
|
|
|
|
foreach ($pay_types as $pay_type) {
|
|
$customer_cl_extra = Wiaas_Package_CL_Pricing::get_extras_for_customer(
|
|
$this->shop_owner_id,
|
|
$pay_type,
|
|
$this->package_id,
|
|
$this->customer_id);
|
|
|
|
$this->assertNotNull($customer_cl_extra);
|
|
|
|
$this->assertEquals(10, $customer_cl_extra['fixed']);
|
|
$this->assertEquals(10, $customer_cl_extra['recurrent']);
|
|
$this->assertEquals(10, $customer_cl_extra['services']);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @covers Wiaas_Package_CL_Pricing::get_extras_for_customer()
|
|
*/
|
|
function test_customer_specific_extras_retrieved_for_customer() {
|
|
// append customer specific extras for purchase payment type
|
|
$this->cl_extras['purchase_customer_' . $this->customer_id] = array(
|
|
'fixed' => 100,
|
|
'recurrent' => 100,
|
|
'services' => 100,
|
|
'visible' => true
|
|
);
|
|
|
|
// set prices extras
|
|
update_term_meta(
|
|
$this->shop_owner_id,
|
|
'_wiaas_cm_extras_' . $this->package_id,
|
|
$this->cl_extras);
|
|
|
|
// test that only extras are retrieved for purchase payment type
|
|
// and the rest are not retrieved
|
|
$pay_types = array_keys(Wiaas_Package_Pricing::get_available_pay_types());
|
|
foreach ($pay_types as $pay_type) {
|
|
$customer_cl_extra = Wiaas_Package_CL_Pricing::get_extras_for_customer(
|
|
$this->shop_owner_id,
|
|
$pay_type,
|
|
$this->package_id,
|
|
$this->customer_id);
|
|
|
|
if ($pay_type === 'purchase') {
|
|
|
|
$this->assertNotNull($customer_cl_extra);
|
|
|
|
$this->assertEquals(100, $customer_cl_extra['fixed']);
|
|
$this->assertEquals(100, $customer_cl_extra['recurrent']);
|
|
$this->assertEquals(100, $customer_cl_extra['services']);
|
|
} else {
|
|
|
|
$this->assertNull($customer_cl_extra);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// HELPERS
|
|
|
|
private function _validate_default_cl_extras($cl_extras) {
|
|
$this->assertNotEmpty($cl_extras);
|
|
|
|
$this->assertArrayHasKey('purchase_default', $cl_extras);
|
|
$this->assertArrayHasKey('purchase_24_default', $cl_extras);
|
|
$this->assertArrayHasKey('managed_36_default', $cl_extras);
|
|
|
|
foreach ($cl_extras as $cl_extra) {
|
|
$this->assertEquals(10, $cl_extra['fixed']);
|
|
$this->assertEquals(10, $cl_extra['recurrent']);
|
|
$this->assertEquals(10, $cl_extra['services']);
|
|
$this->assertTrue($cl_extra['visible']);
|
|
}
|
|
}
|
|
} |