From 4bdad78ed895c2ca0f235ebfb51b44a5e09bb899 Mon Sep 17 00:00:00 2001 From: Bilal Catic Date: Thu, 11 Oct 2018 05:53:39 +0200 Subject: [PATCH] add tests --- .../package/class-wiaas-package-status.php | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 backend/app/plugins/wiaas/tests/unit-tests/package/class-wiaas-package-status.php diff --git a/backend/app/plugins/wiaas/tests/unit-tests/package/class-wiaas-package-status.php b/backend/app/plugins/wiaas/tests/unit-tests/package/class-wiaas-package-status.php new file mode 100644 index 0000000..f722379 --- /dev/null +++ b/backend/app/plugins/wiaas/tests/unit-tests/package/class-wiaas-package-status.php @@ -0,0 +1,120 @@ +assertInstanceOf(WP_Taxonomy::class, $taxonomy); + + $package_statuses = Wiaas_Package_Status::get_available_package_statuses(); + + $this->assertNotEmpty($package_statuses); + + $this->assertContains(Wiaas_Package_Status::AVAILABLE, $package_statuses); + } + + /** + * @covers Wiaas_Package_Type::set_package_status() + * @covers Wiaas_Package_Type::get_package_status() + */ + function test_adding_package_status() { + $package = $this->create_new_package(); + + Wiaas_Package_Status::set_package_status($package->get_id(), Wiaas_Package_Status::AVAILABLE); + + $package_status = Wiaas_Package_Status::get_package_status($package->get_id()); + + $this->assertNotNull($package_status); + $this->assertEquals($package_status, Wiaas_Package_Status::AVAILABLE); + } + + /** + * Test package status update on simple product price update + */ + function test_package_status_update_on_simple_product_price_update() { + $product1 = $this->create_new_product(20); + $this->add_product_category($product1, 'hardware'); + + $product2 = $this->create_new_product(20); + $this->add_product_category($product2, 'software'); + + $package = $this->create_new_package(); + + $this->add_products_to_package($package, array( $product1, $product2)); + + $pricing_rules = array( + 'purchase' => array( + 'minimal_fixed_price' => 100, + 'principal_amount' => 0, + 'minimal_services_price' => 0 + ), + 'purchase_24' => array( + 'minimal_fixed_price' => 100, + 'principal_amount' => 0, + 'minimal_services_price' => 100 + ), + 'managed_36' => array( + 'minimal_fixed_price' => 100, + 'principal_amount' => 100, + 'minimal_services_price' => 100 + ) + ); + $commision = 50; + $cost_margin = 100; + + Wiaas_Package_Pricing::set_package_prices($package, $pricing_rules, $commision, $cost_margin); + $this->assertEquals(Wiaas_Package_Status::get_package_status($package)->get_id(), Wiaas_Package_Status::AVAILABLE); + + $product1->set_price(1000); + $this->assertEquals(Wiaas_Package_Status::get_package_status($package)->get_id(), Wiaas_Package_Status::MARGIN_EXCEEDED); + + } + + /** + * Test package status update on cost margin update + */ + function test_package_status_update_on_margin_cost_update() { + $product1 = $this->create_new_product(20); + $this->add_product_category($product1, 'hardware'); + + $product2 = $this->create_new_product(20); + $this->add_product_category($product2, 'software'); + + $package = $this->create_new_package(); + + $this->add_products_to_package($package, array( $product1, $product2)); + + $pricing_rules = array( + 'purchase' => array( + 'minimal_fixed_price' => 100, + 'principal_amount' => 0, + 'minimal_services_price' => 0 + ), + 'purchase_24' => array( + 'minimal_fixed_price' => 100, + 'principal_amount' => 0, + 'minimal_services_price' => 100 + ), + 'managed_36' => array( + 'minimal_fixed_price' => 100, + 'principal_amount' => 100, + 'minimal_services_price' => 100 + ) + ); + $commision = 50; + $cost_margin = 0; + + Wiaas_Package_Pricing::set_package_prices($package, $pricing_rules, $commision, $cost_margin); + $this->assertEquals(Wiaas_Package_Status::get_package_status($package)->get_id(), Wiaas_Package_Status::AVAILABLE); + + $cost_margin = 1; + Wiaas_Package_Pricing::set_package_prices($package, $pricing_rules, $commision, $cost_margin); + $this->assertEquals(Wiaas_Package_Status::get_package_status($package)->get_id(), Wiaas_Package_Status::MARGIN_EXCEEDED); + + } +} \ No newline at end of file