diff --git a/.gitignore b/.gitignore index 765fc42e..f822f026 100755 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ vendor .phpunit.result.cache composer.lock .nvmrc +wp-content \ No newline at end of file diff --git a/composer.json b/composer.json index 4b78e989..e2d6e7eb 100644 --- a/composer.json +++ b/composer.json @@ -6,9 +6,16 @@ "require-dev": { "phpunit/phpunit": "^5.7 || ^9.5", "mockery/mockery": "^1.6", - "brain/monkey": "^2.6" + "brain/monkey": "^2.6", + "woocommerce/woocommerce-blocks": "^11.7" }, "scripts": { "test": "vendor/bin/phpunit --testdox --colors" + }, + "config": { + "allow-plugins": { + "composer/installers": true, + "automattic/jetpack-autoloader": true + } } } diff --git a/tests/unit/includes/admin/class-omise-page-card-form-customization-test.php b/tests/unit/includes/admin/class-omise-page-card-form-customization-test.php index 43a1dc41..aa485590 100644 --- a/tests/unit/includes/admin/class-omise-page-card-form-customization-test.php +++ b/tests/unit/includes/admin/class-omise-page-card-form-customization-test.php @@ -7,14 +7,14 @@ */ class Omise_Page_Card_From_Customization_Test extends TestCase { - public function setUp(): void + protected function setUp(): void { Brain\Monkey\setUp(); Mockery::mock('alias:Omise_Admin_Page'); require_once __DIR__ . '/../../../../includes/admin/class-omise-page-card-form-customization.php'; } - public function tearDown(): void + protected function tearDown(): void { Brain\Monkey\tearDown(); Mockery::close(); diff --git a/tests/unit/includes/blocks/gateways/abstract-omise-block-apm-test.php b/tests/unit/includes/blocks/gateways/abstract-omise-block-apm-test.php new file mode 100644 index 00000000..50177082 --- /dev/null +++ b/tests/unit/includes/blocks/gateways/abstract-omise-block-apm-test.php @@ -0,0 +1,121 @@ +obj = new class extends Omise_Block_Apm {}; + } + + /** + * @test + */ + public function initialize() + { + $clazz = (object) [ + 'payment_gateways' => new class { + function payment_gateways() { + // dummy gateway + $gateway = new class { + public $supports = ['products']; + + public function is_available() { + return true; + } + + public function supports() { + return $this->supports; + } + }; + + return [ + 'abc' => $gateway, + 'xyz' => $gateway, + ]; + } + } + ]; + + Monkey\Functions\expect('get_option')->andReturn(null); + Monkey\Functions\expect('WC')->andReturn($clazz); + + $reflection = new \ReflectionClass($this->obj); + $name_property = $reflection->getProperty('name'); + $name_property->setAccessible(true); + $name_property->setValue($this->obj, 'abc'); + + $this->obj->initialize(); + + $gateway_property = $reflection->getProperty('gateway'); + $gateway_property->setAccessible(true); + $gateway_val = $gateway_property->getValue($this->obj); + + $this->assertEquals('object', gettype($gateway_val)); + } + + /** + * @test + */ + public function is_active() + { + // Calling initialize() to set $gateway value + $reflection = new \ReflectionClass($this->obj); + $name_property = $reflection->getProperty('name'); + $name_property->setAccessible(true); + $name_property->setValue($this->obj, 'abc'); + + $this->obj->initialize(); + + $is_active = $this->obj->is_active(); + $this->assertTrue($is_active); + } + + /** + * @test + */ + public function get_payment_method_data() + { + // Calling initialize() to set $gateway value + $reflection = new \ReflectionClass($this->obj); + $name_property = $reflection->getProperty('name'); + $name_property->setAccessible(true); + $name_property->setValue($this->obj, 'abc'); + + $this->obj->initialize(); + + $data = $this->obj->get_payment_method_data(); + + $this->assertArrayHasKey('title', $data); + $this->assertArrayHasKey('description', $data); + $this->assertArrayHasKey('supports', $data); + $this->assertEquals('array', gettype($data['supports'])); + $this->assertEquals('abc', $data['name']); + } + + /** + * @test + */ + public function get_payment_method_script_handles() + { + Monkey\Functions\expect('wp_script_is')->andReturn(false); + Monkey\Functions\expect('wp_register_script'); + Monkey\Functions\expect('plugin_dir_url'); + Monkey\Functions\expect('wp_enqueue_script'); + + $result = $this->obj->get_payment_method_script_handles(); + + $this->assertEquals([ 'wc-omise-one-click-apms-payments-blocks' ], $result); + } +} diff --git a/tests/unit/includes/class-omise-capabilities-test.php b/tests/unit/includes/class-omise-capabilities-test.php index 6ea5badc..c4cc6cac 100644 --- a/tests/unit/includes/class-omise-capabilities-test.php +++ b/tests/unit/includes/class-omise-capabilities-test.php @@ -14,7 +14,7 @@ class Omise_Capabilities_Test extends Bootstrap_Test_Setup /** * setup add_action and do_action before the test run */ - public function setUp(): void + protected function setUp(): void { parent::setUp(); diff --git a/tests/unit/includes/class-omise-setting-test.php b/tests/unit/includes/class-omise-setting-test.php index ef066f74..7be6b719 100644 --- a/tests/unit/includes/class-omise-setting-test.php +++ b/tests/unit/includes/class-omise-setting-test.php @@ -4,7 +4,7 @@ class Omise_Setting_Test extends TestCase { - public function setUp(): void + protected function setUp(): void { require_once __DIR__ . '/../../../includes/class-omise-setting.php'; } diff --git a/tests/unit/includes/gateway/abstract-omise-payment-base-card-test.php b/tests/unit/includes/gateway/abstract-omise-payment-base-card-test.php index cff4a717..8e18ed10 100644 --- a/tests/unit/includes/gateway/abstract-omise-payment-base-card-test.php +++ b/tests/unit/includes/gateway/abstract-omise-payment-base-card-test.php @@ -6,7 +6,7 @@ class Omise_Payment_Base_Card_Test extends TestCase { public $obj; - public function setUp(): void + protected function setUp(): void { $omisePaymentMock = Mockery::mock('overload:Omise_Payment'); $omisePaymentMock->shouldReceive('is_test') @@ -45,7 +45,7 @@ public function returnThis() /** * close mockery after tests are done */ - public function tearDown(): void + protected function tearDown(): void { Mockery::close(); } diff --git a/tests/unit/includes/gateway/abstract-omise-payment-offline-test.php b/tests/unit/includes/gateway/abstract-omise-payment-offline-test.php index c2a7355e..64db2275 100644 --- a/tests/unit/includes/gateway/abstract-omise-payment-offline-test.php +++ b/tests/unit/includes/gateway/abstract-omise-payment-offline-test.php @@ -4,7 +4,7 @@ abstract class Omise_Payment_Offline_Test extends Bootstrap_Test_Setup { - public function setUp(): void + protected function setUp(): void { parent::setUp(); Mockery::mock('alias:Omise_Payment')->makePartial(); diff --git a/tests/unit/includes/gateway/bootstrap-test-setup.php b/tests/unit/includes/gateway/bootstrap-test-setup.php index 6bdec48f..d2f0a9a1 100644 --- a/tests/unit/includes/gateway/bootstrap-test-setup.php +++ b/tests/unit/includes/gateway/bootstrap-test-setup.php @@ -1,15 +1,22 @@ null, 'add_action' => null, ] ); @@ -18,10 +25,10 @@ public function setUp(): void /** * close mockery after tests are done */ - public function tearDown(): void + protected function tearDown(): void { - Brain\Monkey\tearDown(); - Mockery::close(); + Monkey\tearDown(); + parent::tearDown(); } public function getOrderMock($expectedAmount, $expectedCurrency) diff --git a/tests/unit/includes/gateway/class-omise-offsite-test.php b/tests/unit/includes/gateway/class-omise-offsite-test.php index f6918934..a40c50cc 100644 --- a/tests/unit/includes/gateway/class-omise-offsite-test.php +++ b/tests/unit/includes/gateway/class-omise-offsite-test.php @@ -6,7 +6,7 @@ abstract class Omise_Offsite_Test extends Bootstrap_Test_Setup { public $sourceType; - public function setUp(): void + protected function setUp(): void { parent::setUp(); @@ -19,9 +19,6 @@ public function setUp(): void ->andReturn([ 'source' => [ 'type' => $this->sourceType ] ]); - - // destroy object and clear memory - unset($offsite); } public function getChargeTest($classObj) diff --git a/tests/unit/includes/gateway/class-omise-payment-alipayplus-hk-test.php b/tests/unit/includes/gateway/class-omise-payment-alipayplus-hk-test.php index b65a5538..ddfa49b9 100644 --- a/tests/unit/includes/gateway/class-omise-payment-alipayplus-hk-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-alipayplus-hk-test.php @@ -7,7 +7,7 @@ */ class Omise_Payment_Alipay_Hk_Test extends Omise_Offsite_Test { - public function setUp(): void + protected function setUp(): void { $this->sourceType = 'alipay_hk'; parent::setUp(); diff --git a/tests/unit/includes/gateway/class-omise-payment-alipayplus-kakaopay-test.php b/tests/unit/includes/gateway/class-omise-payment-alipayplus-kakaopay-test.php index f9de6a00..2a938dff 100644 --- a/tests/unit/includes/gateway/class-omise-payment-alipayplus-kakaopay-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-alipayplus-kakaopay-test.php @@ -7,7 +7,7 @@ */ class Omise_Payment_Kakaopay_Test extends Omise_Offsite_Test { - public function setUp(): void + protected function setUp(): void { $this->sourceType = 'kakaopay'; parent::setUp(); diff --git a/tests/unit/includes/gateway/class-omise-payment-atome-test.php b/tests/unit/includes/gateway/class-omise-payment-atome-test.php index 497313a1..84ad63d7 100644 --- a/tests/unit/includes/gateway/class-omise-payment-atome-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-atome-test.php @@ -4,7 +4,7 @@ class Omise_Payment_Atome_Test extends Omise_Offsite_Test { - public function setUp(): void + protected function setUp(): void { $this->sourceType = 'atome'; parent::setUp(); @@ -22,6 +22,11 @@ function plugins_url() {} if (!defined('WC_VERSION')) { define('WC_VERSION', '1.0.0'); } + + Brain\Monkey\setUp(); + Brain\Monkey\Functions\stubs( [ + 'wp_kses' => null, + ] ); } public function testGetChargeRequest() @@ -42,9 +47,6 @@ public function testGetChargeRequest() $result = $obj->get_charge_request($orderId, $orderMock); $this->assertEquals($this->sourceType, $result['source']['type']); - - unset($_POST['source']); - unset($obj); } public function testCharge() diff --git a/tests/unit/includes/gateway/class-omise-payment-creditcard-test.php b/tests/unit/includes/gateway/class-omise-payment-creditcard-test.php index 7067008c..eb5aaed7 100644 --- a/tests/unit/includes/gateway/class-omise-payment-creditcard-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-creditcard-test.php @@ -4,7 +4,7 @@ class Omise_Payment_CreditCard_Test extends TestCase { - public function setUp(): void + protected function setUp(): void { Brain\Monkey\setUp(); @@ -34,7 +34,7 @@ public function setUp(): void require_once __DIR__ . '/../../../../includes/gateway/class-omise-payment-creditcard.php'; } - public function tearDown(): void + protected function tearDown(): void { Brain\Monkey\tearDown(); Mockery::close(); diff --git a/tests/unit/includes/gateway/class-omise-payment-duitnow-obw-test.php b/tests/unit/includes/gateway/class-omise-payment-duitnow-obw-test.php index 6cf46be5..504ed4e6 100644 --- a/tests/unit/includes/gateway/class-omise-payment-duitnow-obw-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-duitnow-obw-test.php @@ -4,10 +4,13 @@ class Omise_Payment_DuitNow_OBW_Test extends Omise_Offsite_Test { - public function setUp(): void + private $omise_capability_mock; + + protected function setUp(): void { $this->sourceType = 'duitnow_obw'; parent::setUp(); + $this->omise_capability_mock = Mockery::mock('alias:Omise_Capabilities'); require_once __DIR__ . '/../../../../includes/gateway/class-omise-payment-duitnow-obw.php'; } @@ -19,6 +22,7 @@ function sanitize_text_field() { } } + $this->omise_capability_mock->shouldReceive('retrieve')->once(); $_POST['source'] = ['bank' => 'SCB']; $obj = new Omise_Payment_DuitNow_OBW(); $this->getChargeTest($obj); diff --git a/tests/unit/includes/gateway/class-omise-payment-fpx-test.php b/tests/unit/includes/gateway/class-omise-payment-fpx-test.php index 71bc2e8f..b2e03afd 100644 --- a/tests/unit/includes/gateway/class-omise-payment-fpx-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-fpx-test.php @@ -4,7 +4,7 @@ class Omise_Payment_FPX_Test extends Omise_Offsite_Test { - public function setUp(): void + protected function setUp(): void { $this->sourceType = 'fpx'; parent::setUp(); diff --git a/tests/unit/includes/gateway/class-omise-payment-installment-test.php b/tests/unit/includes/gateway/class-omise-payment-installment-test.php index 329b86bb..c7b82bfd 100644 --- a/tests/unit/includes/gateway/class-omise-payment-installment-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-installment-test.php @@ -2,9 +2,11 @@ require_once __DIR__ . '/class-omise-offsite-test.php'; +use Brain\Monkey; + class Omise_Payment_Installment_Test extends Omise_Offsite_Test { - public function setUp(): void + protected function setUp(): void { $this->sourceType = 'installment_ktc'; parent::setUp(); @@ -43,10 +45,6 @@ public function get_total() { $total = $installment->get_total_amount(); $this->assertEquals($total, 999999); - - unset($GLOBALS['wp']); - unset($installment); - unset($wp); } /** @@ -54,15 +52,11 @@ public function get_total() { */ public function getTotalAmountFromCart() { - // mocking WC() method - if (!function_exists('WC')) { - function WC() { - $class = new stdClass(); - $class->cart = new stdClass(); - $class->cart->total = 999999; - return $class; - } - } + $clazz = new stdClass(); + $clazz->cart = new stdClass(); + $clazz->cart->total = 999999; + + Monkey\Functions\expect('WC')->andReturn($clazz); $installment = new Omise_Payment_Installment(); $total = $installment->get_total_amount(); diff --git a/tests/unit/includes/gateway/class-omise-payment-internetbanking-test.php b/tests/unit/includes/gateway/class-omise-payment-internetbanking-test.php index 37e44b68..5a0edca3 100644 --- a/tests/unit/includes/gateway/class-omise-payment-internetbanking-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-internetbanking-test.php @@ -4,7 +4,7 @@ class Omise_Payment_Internetbanking_Test extends Omise_Offsite_Test { - public function setUp(): void + protected function setUp(): void { $this->sourceType = 'fpx'; parent::setUp(); diff --git a/tests/unit/includes/gateway/class-omise-payment-konbini-test.php b/tests/unit/includes/gateway/class-omise-payment-konbini-test.php index a29dcf4f..40d224d7 100644 --- a/tests/unit/includes/gateway/class-omise-payment-konbini-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-konbini-test.php @@ -5,7 +5,7 @@ class Omise_Payment_Konbini_Test extends Omise_Payment_Offline_Test public $expectedAmount = 999999; public $expectedCurrency = 'thb'; - public function setUp(): void + protected function setUp(): void { parent::setUp(); // Mocking the parent class diff --git a/tests/unit/includes/gateway/class-omise-payment-mobilebanking-test.php b/tests/unit/includes/gateway/class-omise-payment-mobilebanking-test.php index cad1e084..70e145e7 100644 --- a/tests/unit/includes/gateway/class-omise-payment-mobilebanking-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-mobilebanking-test.php @@ -4,7 +4,7 @@ class Omise_Payment_Mobilebanking_Test extends Omise_Offsite_Test { - public function setUp(): void + protected function setUp(): void { parent::setUp(); require_once __DIR__ . '/../../../../includes/backends/class-omise-backend-mobile-banking.php'; diff --git a/tests/unit/includes/gateway/class-omise-payment-ocbc-digital-test.php b/tests/unit/includes/gateway/class-omise-payment-ocbc-digital-test.php index 14987bc8..4f24fb44 100644 --- a/tests/unit/includes/gateway/class-omise-payment-ocbc-digital-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-ocbc-digital-test.php @@ -6,7 +6,7 @@ class Omise_Payment_OCBC_Digital_Test extends Omise_Offsite_Test { private $obj; - public function setUp(): void + protected function setUp(): void { $this->sourceType = 'mobile_banking_ocbc'; parent::setUp(); @@ -22,7 +22,7 @@ function plugins_url() { } } - public function tearDown(): void + protected function tearDown(): void { parent::tearDown(); // destroy object and clear memory diff --git a/tests/unit/includes/gateway/class-omise-payment-ocbc-pao-test.php b/tests/unit/includes/gateway/class-omise-payment-ocbc-pao-test.php index 5d1f6de2..5af99d6e 100644 --- a/tests/unit/includes/gateway/class-omise-payment-ocbc-pao-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-ocbc-pao-test.php @@ -6,7 +6,7 @@ class Omise_Payment_OCBC_PAO_Test extends Omise_Offsite_Test { private $obj; - public function setUp(): void + protected function setUp(): void { $this->sourceType = 'mobile_banking_ocbc'; parent::setUp(); @@ -14,7 +14,7 @@ public function setUp(): void $this->obj = new Omise_Payment_OCBC_PAO(); } - public function tearDown(): void + protected function tearDown(): void { parent::tearDown(); // destroy object and clear memory diff --git a/tests/unit/includes/gateway/class-omise-payment-promptpay-test.php b/tests/unit/includes/gateway/class-omise-payment-promptpay-test.php index a053b9a8..0bd51a2c 100644 --- a/tests/unit/includes/gateway/class-omise-payment-promptpay-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-promptpay-test.php @@ -10,7 +10,7 @@ class Omise_Payment_Promptpay_Test extends Omise_Payment_Offline_Test public $mockOmiseCharge; public $mockFileGetContent; - public function setUp(): void + protected function setUp(): void { parent::setUp(); function wc_timezone_offset() {} diff --git a/tests/unit/includes/gateway/class-omise-payment-rabbit-linepay-test.php b/tests/unit/includes/gateway/class-omise-payment-rabbit-linepay-test.php index 6594cea1..737ba110 100644 --- a/tests/unit/includes/gateway/class-omise-payment-rabbit-linepay-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-rabbit-linepay-test.php @@ -6,7 +6,7 @@ class Omise_Payment_RabbitLinePay_Test extends Omise_Offsite_Test { private $obj; - public function setUp(): void + protected function setUp(): void { $this->sourceType = 'mobile_banking_ocbc'; parent::setUp(); @@ -14,7 +14,7 @@ public function setUp(): void $this->obj = new Omise_Payment_RabbitLinePay(); } - public function tearDown(): void + protected function tearDown(): void { parent::tearDown(); // destroy object and clear memory diff --git a/tests/unit/includes/gateway/class-omise-payment-touch-n-go-test.php b/tests/unit/includes/gateway/class-omise-payment-touch-n-go-test.php index 15f459d4..2ecaca2b 100644 --- a/tests/unit/includes/gateway/class-omise-payment-touch-n-go-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-touch-n-go-test.php @@ -4,7 +4,7 @@ class Omise_Payment_TouchNGo_Test extends Omise_Offsite_Test { - public function setUp(): void + protected function setUp(): void { $this->sourceType = 'touch_n_go'; parent::setUp(); diff --git a/tests/unit/includes/gateway/class-omise-payment-truemoney-test.php b/tests/unit/includes/gateway/class-omise-payment-truemoney-test.php index 258567f5..d18edfbc 100644 --- a/tests/unit/includes/gateway/class-omise-payment-truemoney-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-truemoney-test.php @@ -6,7 +6,7 @@ class Omise_Payment_Truemoney_Test extends Omise_Offsite_Test { private $omise_capability_mock; - public function setUp(): void + protected function setUp(): void { $this->sourceType = 'truemoney'; parent::setUp(); diff --git a/tests/unit/includes/gateway/class-omise-payment-wechat-pay-test.php b/tests/unit/includes/gateway/class-omise-payment-wechat-pay-test.php index 648f96ad..d9bafbbd 100644 --- a/tests/unit/includes/gateway/class-omise-payment-wechat-pay-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-wechat-pay-test.php @@ -4,12 +4,11 @@ class Omise_Payment_Wechat_Pay_Test extends Omise_Offsite_Test { - public function setUp(): void + protected function setUp(): void { parent::setUp(); $this->sourceType = 'wechat_pay'; - Brain\Monkey\setUp(); Brain\Monkey\Functions\stubs([ 'apply_filters' => function () { return Omise_Image::get_image([ diff --git a/tests/unit/includes/gateway/traits/charge-request-builder-test.php b/tests/unit/includes/gateway/traits/charge-request-builder-test.php index 3ffe5cc4..6411cd06 100644 --- a/tests/unit/includes/gateway/traits/charge-request-builder-test.php +++ b/tests/unit/includes/gateway/traits/charge-request-builder-test.php @@ -18,7 +18,7 @@ function get_rest_url() { /** * close mockery after tests are done */ - public function tearDown(): void + protected function tearDown(): void { Mockery::close(); } diff --git a/tests/unit/includes/libraries/omise-plugin/helpers/request-test.php b/tests/unit/includes/libraries/omise-plugin/helpers/request-test.php index b235a8a7..b0bd0e53 100644 --- a/tests/unit/includes/libraries/omise-plugin/helpers/request-test.php +++ b/tests/unit/includes/libraries/omise-plugin/helpers/request-test.php @@ -4,7 +4,7 @@ class RequestHelperTest extends TestCase { - public function setUp(): void + protected function setUp(): void { require_once __DIR__ . '/../../../../../../includes/libraries/omise-plugin/helpers/request.php'; } diff --git a/tests/unit/omise-woocommerce-test.php b/tests/unit/omise-woocommerce-test.php index 0d97262e..8a937649 100644 --- a/tests/unit/omise-woocommerce-test.php +++ b/tests/unit/omise-woocommerce-test.php @@ -9,7 +9,7 @@ class Omise_Test extends TestCase /** * setup add_action and do_action before the test run */ - public function setUp(): void + protected function setUp(): void { if (!function_exists('add_action')) { function add_action() @@ -28,7 +28,7 @@ function do_action() /** * close mockery after test cases are done */ - public function tearDown(): void + protected function tearDown(): void { Mockery::close(); }