Files
old-new-wiaas/backend/app/plugins/wiaas/tests/unit-tests/test-wiaas-access-management.php
2018-12-02 22:18:09 +01:00

196 lines
6.9 KiB
PHP

<?php
class Wiaas_Access_Management_Test extends Wiaas_Unit_Test_Case {
/**
* @var WC_Order
*/
var $order;
/**
* @var int
*/
var $organization_id;
/**
* @var int
*/
var $customer_user_id;
public function setUp() {
parent::setUp();
wp_set_current_user(1);
$this->customer_user_id = wp_insert_user(array(
'user_login' => 'test_customer',
'user_pass' => 'test',
'user_email' => 'test_customer@mail.com',
'role' => 'customer',
));
$this->organization_id = $this->factory->organization->create_new_organization();
$this->factory->organization->assign_user_to_organization($this->customer_user_id, $this->organization_id);
$this->order = $this->factory->order->create_new_order();
}
function tearDown() {
parent::tearDown();
wp_set_current_user(1);
wp_delete_user($this->customer_user_id);
$this->factory->organization->delete_organizations();
}
/**
* @covers Wiaas_Access_Management::maybe_handle_product_access()
*/
function test_simple_product_has_admin_access() {
$simple_product = $this->factory->product->create_simple_product();
Wiaas_Access_Management::maybe_handle_product_access($simple_product->get_id(), get_post($simple_product->get_id()));
$access_group_ids = Groups_Post_Access::get_read_group_ids( $simple_product->get_id() );
$this->assertEquals(1, count($access_group_ids));
$admin_access_group = Groups_Group::read_by_name('admin');
$this->assertEquals($admin_access_group->group_id, $access_group_ids[0]);
}
/**
* @covers Wiaas_Access_Management::maybe_handle_product_access()
*/
function test_bundle_with_no_price_has_admin_access() {
$bundle_product = $this->factory->product->create_product_bundle();
Wiaas_Access_Management::maybe_handle_product_access($bundle_product->get_id(), get_post($bundle_product->get_id()));
$access_group_ids = Groups_Post_Access::get_read_group_ids( $bundle_product->get_id() );
$this->assertEquals(1, count($access_group_ids));
$admin_access_group = Groups_Group::read_by_name('admin');
$this->assertEquals($admin_access_group->group_id, $access_group_ids[0]);
}
/**
* @covers Wiaas_Access_Management::maybe_handle_product_access()
*/
function test_bundle_with_prices_has_registered_access() {
$bundle_product = $this->factory->product->create_product_bundle();
$this->factory->product->set_product_bundle_prices($bundle_product);
Wiaas_Access_Management::maybe_handle_product_access($bundle_product->get_id(), get_post($bundle_product->get_id()));
$access_group_ids = Groups_Post_Access::get_read_group_ids( $bundle_product->get_id() );
$this->assertEquals(1, count($access_group_ids));
$registered_access_group = Groups_Group::read_by_name('Registered');
$this->assertEquals($registered_access_group->group_id, $access_group_ids[0]);
}
/**
* @covers Wiaas_Access_Management::assign_order_to_customer_organization()
*/
function test_order_assigned_to_customer_organization() {
wp_set_current_user($this->customer_user_id);
Wiaas_Access_Management::assign_order_to_customer_organization($this->order->get_id());
$organization_access_group = Groups_Group::read_by_name('organization');
$access_group_ids = Groups_Post_Access::get_read_group_ids( $this->order->get_id() );
$this->assertEquals(1, count($access_group_ids));
$this->assertNotNull($access_group_ids[0]);
$this->assertEquals($organization_access_group->group_id, $access_group_ids[0]);
}
/**
* @covers Wiaas_Access_Management::assign_order_to_commercial_lead_organization()
*/
function test_order_assigned_to_commercial_lead_organization() {
$this->order->update_meta_data('_wiaas_commercial_lead_id', $this->organization_id);
$this->order->save_meta_data();
Wiaas_Access_Management::assign_order_to_commercial_lead_organization($this->order->get_id());
$organization_access_group = Groups_Group::read_by_name('organization');
$access_group_ids = Groups_Post_Access::get_read_group_ids( $this->order->get_id() );
$this->assertEquals(1, count($access_group_ids));
$this->assertNotNull($access_group_ids[0]);
$this->assertEquals($organization_access_group->group_id, $access_group_ids[0]);
}
/**
* @covers Wiaas_Access_Management::assign_order_to_supplier_organizations()
*/
function test_order_assigned_to_supplier_organizations() {
$items = array();
$items[] = $this->factory->order->create_new_simple_product_order_item(array(
'category' => 'hardware',
'supplier_organization_id' => $this->factory->organization->create_new_organization( array( 'name' => 'hardware supplier'))
));
$items[] = $this->factory->order->create_new_simple_product_order_item(array(
'category' => 'software',
'supplier_organization_id' => $this->factory->organization->create_new_organization( array( 'name' => 'software supplier'))
));
$items[] = $this->factory->order->create_new_simple_product_order_item(array(
'category' => 'service',
'supplier_organization_id' => $this->factory->organization->create_new_organization( array( 'name' => 'service supplier'))
));
$items[] = $this->factory->order->create_new_simple_product_order_item(array(
'category' => 'installation',
'supplier_organization_id' => $this->factory->organization->create_new_organization( array( 'name' => 'installation supplier'))
));
$this->factory->order->add_order_items($this->order, $items);
Wiaas_Access_Management::assign_order_to_supplier_organizations($this->order->get_id());
$access_group_ids = Groups_Post_Access::get_read_group_ids( $this->order->get_id() );
$this->assertEquals(3, count($access_group_ids));
$organization_access_group = Groups_Group::read_by_name('hardware supplier');
$this->assertContains($organization_access_group->group_id, $access_group_ids);
$organization_access_group = Groups_Group::read_by_name('software supplier');
$this->assertContains($organization_access_group->group_id, $access_group_ids);
$organization_access_group = Groups_Group::read_by_name('service supplier');
$this->assertContains($organization_access_group->group_id, $access_group_ids);
}
/**
* @covers Wiaas_Access_Management::assign_order_to_installation_organization()
*/
function test_order_assigned_to_installation_organization() {
$bundle_item = $this->factory->order->create_new_bundle_order_item();
$installation_item = $this->factory->order->create_new_simple_product_order_item(array(
'category' => 'installation',
'supplier_organization_id' => $this->organization_id
));
$this->order->add_item($bundle_item);
$this->order->add_item($installation_item);
Wiaas_Access_Management::assign_order_to_installation_organization($this->order, $bundle_item, $installation_item);
$organization_access_group = Groups_Group::read_by_name('organization');
$access_group_ids = Groups_Post_Access::get_read_group_ids( $this->order->get_id() );
$this->assertEquals(1, count($access_group_ids));
$this->assertNotNull($access_group_ids[0]);
$this->assertEquals($organization_access_group->group_id, $access_group_ids[0]);
}
}