From c1e913d06351060eaac97dbbfab7093b256c19fc Mon Sep 17 00:00:00 2001 From: Dima Uryvskiy Date: Mon, 18 Apr 2022 09:56:49 +0300 Subject: [PATCH] Improvement of tests for corporate customers --- src/include/class-wc-retailcrm-customers.php | 2 +- src/include/class-wc-retailcrm-orders.php | 6 +- tests/datasets/data-customers-retailcrm.php | 15 +- .../class-wc-retailcrm-test-case-helper.php | 20 +-- tests/test-wc-retailcrm-customers.php | 130 +++++++++++------- 5 files changed, 101 insertions(+), 72 deletions(-) diff --git a/src/include/class-wc-retailcrm-customers.php b/src/include/class-wc-retailcrm-customers.php index 5e92a2d..05793ef 100644 --- a/src/include/class-wc-retailcrm-customers.php +++ b/src/include/class-wc-retailcrm-customers.php @@ -278,7 +278,7 @@ if (!class_exists('WC_Retailcrm_Customers')) : $addresses = $this->retailcrm->customersCorporateAddresses( $corporateId, - array(), + [], null, 100, 'id' diff --git a/src/include/class-wc-retailcrm-orders.php b/src/include/class-wc-retailcrm-orders.php index ff4b0f1..e15fb5f 100644 --- a/src/include/class-wc-retailcrm-orders.php +++ b/src/include/class-wc-retailcrm-orders.php @@ -227,7 +227,7 @@ if (!class_exists('WC_Retailcrm_Orders')) : $companiesResponse = $this->retailcrm->customersCorporateCompanies( $this->order['customer']['id'], - array(), + [], null, null, 'id' @@ -236,10 +236,10 @@ if (!class_exists('WC_Retailcrm_Orders')) : if (!empty($companiesResponse) && $companiesResponse->isSuccessful()) { foreach ($companiesResponse['companies'] as $company) { if ($company['name'] == $wcOrder->get_billing_company()) { - $this->order['company'] = array( + $this->order['company'] = [ 'id' => $company['id'], 'name' => $company['name'] - ); + ]; break; } } diff --git a/tests/datasets/data-customers-retailcrm.php b/tests/datasets/data-customers-retailcrm.php index 46501b5..7df9ae3 100644 --- a/tests/datasets/data-customers-retailcrm.php +++ b/tests/datasets/data-customers-retailcrm.php @@ -18,14 +18,13 @@ class DataCustomersRetailCrm public static function getCustomerAddress() { return [ 'success' => true, - 'addresses' => [ - 'id' => 3503, - 'index' => 144566, - 'countryIso' => 'ES', - 'region' => 'Region', - 'city' => 'City', - 'text' => 'street Test 777', - ] + 'addresses' => [[ + 'index' => 123456, + 'region' => 'test_state', + 'city' => 'test_city', + 'text' => 'test_address_line', + 'isMain' => false + ]] ]; } diff --git a/tests/helpers/class-wc-retailcrm-test-case-helper.php b/tests/helpers/class-wc-retailcrm-test-case-helper.php index 0ebe160..fdf63bf 100644 --- a/tests/helpers/class-wc-retailcrm-test-case-helper.php +++ b/tests/helpers/class-wc-retailcrm-test-case-helper.php @@ -21,12 +21,12 @@ class WC_Retailcrm_Test_Case_Helper extends WC_Unit_Test_Case 'api_url' => 'https://example.retailcrm.ru', 'api_key' => 'test_key', 'corporate_enabled' => 'yes', - 'online_assistant' => 'code', - 'p_draft' => 'no', + 'online_assistant' => 'code', + 'p_draft' => 'no', 'p_pending' => 'no', 'p_private' => 'no', 'p_publish' => 'no', - 'order_methods' => [ 0 => 'phone' ], + 'order_methods' => [0 => 'phone'], 'flat_rate_shipping' => 'delivery', 'free_shipping' => 'delivery2', 'local_pickup' => 'delivery3', @@ -51,14 +51,16 @@ class WC_Retailcrm_Test_Case_Helper extends WC_Unit_Test_Case 'whatsapp_active' => 'yes', 'whatsapp_location_icon' => 'yes', 'whatsapp_number' => '+79184567234', - 'icml' => 'yes', - 'single_order' => '123', - 'history' => 'yes', + 'icml' => 'yes', + 'single_order' => '123', + 'history' => 'yes', 'deactivate_update_order' => 'no', - 'bind_by_sku' => 'no', + 'bind_by_sku' => 'no', 'update_number' => 'yes', - 'debug_mode' => 'yes', - 'debug-info' => '' + 'debug_mode' => 'yes', + 'debug-info' => '', + 'order-meta-data-retailcrm' => json_encode(['woo_order' => 'woo_order_test']), + 'customer-meta-data-retailcrm' => json_encode(['woo_customer' => 'woo_customer_test']), ]; update_option(WC_Retailcrm_Base::$option_key, $options); diff --git a/tests/test-wc-retailcrm-customers.php b/tests/test-wc-retailcrm-customers.php index 9cbf2c4..076795d 100644 --- a/tests/test-wc-retailcrm-customers.php +++ b/tests/test-wc-retailcrm-customers.php @@ -23,17 +23,17 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper { $this->responseMock = $this->getMockBuilder('\WC_Retailcrm_Response_Helper') ->disableOriginalConstructor() - ->setMethods(array( + ->setMethods([ 'isSuccessful', 'offsetExists' - )) + ]) ->getMock(); - $this->responseMock->setResponse(array('id' => 1)); + $this->responseMock->setResponse(['id' => 1]); $this->apiMock = $this->getMockBuilder('\WC_Retailcrm_Proxy') ->disableOriginalConstructor() - ->setMethods(array( + ->setMethods([ 'ordersGet', 'ordersCreate', 'ordersEdit', @@ -47,7 +47,7 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper 'getSingleSiteForKey', 'customersCorporateAddresses', 'customersList' - )) + ]) ->getMock(); $this->setMockResponse($this->responseMock, 'isSuccessful', true); @@ -74,6 +74,8 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper $this->customer->set_billing_address_1('test_address_line'); $this->customer->set_date_created(date('Y-m-d H:i:s')); $this->customer->save(); + + update_user_meta($this->customer->get_id(), 'woo_customer', 'test_custom_fields'); } /** @@ -84,9 +86,9 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper public function test_wc_customer_get($retailcrm) { $wc_customer = new WC_Customer($this->customer->get_id()); - $retailcrmCustomer = $this->getRetailcrmCustomer($retailcrm); + $crmCustomer = $this->getRetailcrmCustomer($retailcrm); - $this->assertEquals($wc_customer, $retailcrmCustomer->wcCustomerGet($this->customer->get_id())); + $this->assertEquals($wc_customer, $crmCustomer->wcCustomerGet($this->customer->get_id())); } /** @@ -96,9 +98,10 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper */ public function test_create_customer($retailcrm) { - $retailcrmCustomer = $this->getRetailcrmCustomer($retailcrm); - $id = $retailcrmCustomer->createCustomer($this->customer->get_id()); - $customer = $retailcrmCustomer->getCustomer(); + $crmCustomer = $this->getRetailcrmCustomer($retailcrm); + + $id = $crmCustomer->createCustomer($this->customer->get_id()); + $customer = $crmCustomer->getCustomer(); if ($retailcrm) { $this->assertArrayHasKey('firstName', $customer); @@ -110,9 +113,10 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper $this->assertNotEmpty($customer['email']); $this->assertEquals($customer['firstName'], $this->customer->get_first_name()); $this->assertEquals($customer['email'], $this->customer->get_email()); + $this->assertEquals($customer['customFields']['woo_customer_test'], 'test_custom_fields'); } else { $this->assertEquals(null, $id); - $this->assertEquals(array(), $customer); + $this->assertEquals([], $customer); } } @@ -127,9 +131,10 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper $this->buildResponseCustomersList($retailcrm, DataCustomersRetailCrm::getEmptyCustomersList()); } - $retailcrmCustomer = $this->getRetailcrmCustomer($retailcrm); - $id = $retailcrmCustomer->registerCustomer($this->customer->get_id()); - $customer = $retailcrmCustomer->getCustomer(); + $crmCustomer = $this->getRetailcrmCustomer($retailcrm); + + $id = $crmCustomer->registerCustomer($this->customer->get_id()); + $customer = $crmCustomer->getCustomer(); if ($retailcrm) { $this->assertArrayHasKey('firstName', $customer); @@ -141,20 +146,30 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper $this->assertNotEmpty($customer['email']); $this->assertEquals($customer['firstName'], $this->customer->get_first_name()); $this->assertEquals($customer['email'], $this->customer->get_email()); + $this->assertEquals($customer['customFields']['woo_customer_test'], 'test_custom_fields'); } else { $this->assertEquals(null, $id); - $this->assertEquals(array(), $customer); + $this->assertEquals([], $customer); } } + public function test_empty_customer_registration() + { + $emptyCustomer = new WC_Customer(); + $crmCustomer = $this->getRetailcrmCustomer($this->apiMock); + + $this->assertEquals(null, $crmCustomer->registerCustomer($emptyCustomer->get_id())); + } + public function test_create_customer_empty_data() { - $retailcrmCustomer = $this->getRetailcrmCustomer($this->apiMock); - $id = $retailcrmCustomer->createCustomer(null); - $customer = $retailcrmCustomer->getCustomer(); + $crmCustomer = $this->getRetailcrmCustomer($this->apiMock); + + $id = $crmCustomer->createCustomer(null); + $customer = $crmCustomer->getCustomer(); $this->assertEquals(null, $id); - $this->assertEquals(array(), $customer); + $this->assertEquals([], $customer); } /** @@ -168,9 +183,9 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper $this->buildResponseCustomersList($retailcrm, DataCustomersRetailCrm::getCustomersList()); } - $retailcrmCustomer = $this->getRetailcrmCustomer($retailcrm); - $wcCustomer = $retailcrmCustomer->registerCustomer($this->customer->get_id()); - $customer = $retailcrmCustomer->getCustomer(); + $crmCustomer = $this->getRetailcrmCustomer($retailcrm); + $wcCustomer = $crmCustomer->registerCustomer($this->customer->get_id()); + $customer = $crmCustomer->getCustomer(); if ($retailcrm) { $this->assertArrayHasKey('externalId', $customer); @@ -181,9 +196,10 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper $this->assertNotEmpty($customer['createdAt']); $this->assertNotEmpty($customer['firstName']); $this->assertNotEmpty($customer['email']); + $this->assertEquals($customer['customFields']['woo_customer_test'], 'test_custom_fields'); } else { $this->assertEquals(null, $wcCustomer); - $this->assertEquals(array(), $customer); + $this->assertEquals([], $customer); } } @@ -195,9 +211,9 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper */ public function test_update_customer($retailcrm) { - $retailcrmCustomer = $this->getRetailcrmCustomer($retailcrm); - $wcCustomer = $retailcrmCustomer->updateCustomer($this->customer->get_id()); - $customer = $retailcrmCustomer->getCustomer(); + $crmCustomer = $this->getRetailcrmCustomer($retailcrm); + $wcCustomer = $crmCustomer->updateCustomer($this->customer->get_id()); + $customer = $crmCustomer->getCustomer(); if ($retailcrm) { $this->assertInstanceOf('WC_Customer', $wcCustomer); @@ -209,9 +225,10 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper $this->assertNotEmpty($customer['createdAt']); $this->assertNotEmpty($customer['firstName']); $this->assertNotEmpty($customer['email']); + $this->assertEquals($customer['customFields']['woo_customer_test'], 'test_custom_fields'); } else { $this->assertEquals(null, $wcCustomer); - $this->assertEquals(array(), $customer); + $this->assertEquals([], $customer); } } @@ -222,9 +239,9 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper */ public function test_update_customer_by_id($retailcrm) { - $retailcrmCustomer = $this->getRetailcrmCustomer($retailcrm); - $wcCustomer = $retailcrmCustomer->updateCustomerById($this->customer->get_id(), '12345'); - $customer = $retailcrmCustomer->getCustomer(); + $crmCustomer = $this->getRetailcrmCustomer($retailcrm); + $wcCustomer = $crmCustomer->updateCustomerById($this->customer->get_id(), '12345'); + $customer = $crmCustomer->getCustomer(); if ($retailcrm) { $this->assertInstanceOf('WC_Customer', $wcCustomer); @@ -238,7 +255,7 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper $this->assertNotEmpty($customer['email']); } else { $this->assertEquals(null, $wcCustomer); - $this->assertEquals(array(), $customer); + $this->assertEquals([], $customer); } } @@ -249,8 +266,8 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper */ public function test_is_corparate_enabled($retailcrm) { - $retailcrmCustomer = $this->getRetailcrmCustomer($retailcrm); - $isCorporate = $retailcrmCustomer->isCorporateEnabled(); + $crmCustomer = $this->getRetailcrmCustomer($retailcrm); + $isCorporate = $crmCustomer->isCorporateEnabled(); if ($retailcrm) { $this->assertEquals(true, $isCorporate); @@ -266,9 +283,10 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper */ public function test_create_customer_corporate($retailcrm) { - $retailcrmCustomer = $this->getRetailcrmCustomer($retailcrm); - $id = $retailcrmCustomer->createCorporateCustomerForOrder(777, $this->customer->get_id(), new WC_Order()); - $customer = $retailcrmCustomer->getCorporateCustomer(); + $crmCustomer = $this->getRetailcrmCustomer($retailcrm); + + $id = $crmCustomer->createCorporateCustomerForOrder(777, $this->customer->get_id(), new WC_Order()); + $customer = $crmCustomer->getCorporateCustomer(); if ($retailcrm) { $this->assertArrayHasKey('customerContacts', $customer); @@ -281,28 +299,29 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper } } else { $this->assertEquals(null, $id); - $this->assertEquals(array(), $customer); + $this->assertEquals([], $customer); } } public function test_create_customer_corporate_empty_data() { - $retailcrmCustomer = $this->getRetailcrmCustomer($this->apiMock); - $id = $retailcrmCustomer->createCorporateCustomerForOrder(777, null, new WC_Order()); - $customer = $retailcrmCustomer->getCorporateCustomer(); + $crmCustomer = $this->getRetailcrmCustomer($this->apiMock); + + $id = $crmCustomer->createCorporateCustomerForOrder(777, null, new WC_Order()); + $customer = $crmCustomer->getCorporateCustomer(); $this->assertEquals(null, $id); - $this->assertEquals(array(), $customer); + $this->assertEquals([], $customer); } public function test_fill_corporate_address() { - $retailcrmCustomer = $this->getRetailcrmCustomer($this->apiMock); + $crmCustomer = $this->getRetailcrmCustomer($this->apiMock); // Mock response for get customer address $responseCustomerAddress = $this->getMockBuilder('\WC_Retailcrm_Response_Helper') ->disableOriginalConstructor() - ->setMethods(array('isSuccessful')) + ->setMethods(['isSuccessful']) ->getMock(); $this->setMockResponse($responseCustomerAddress, 'isSuccessful', true); @@ -311,23 +330,32 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper //Set responseCustomerAddress mock for apiMock $this->setMockResponse($this->apiMock, 'customersCorporateAddresses', $responseCustomerAddress); - $addressFound = $retailcrmCustomer->fillCorporateAddress($this->customer->get_id(), $this->customer); + $addressFound = $crmCustomer->fillCorporateAddress($this->customer->get_id(), $this->customer); $this->assertEquals(true, $addressFound); + + $this->customer->set_billing_state('test_state123'); + $this->customer->set_billing_postcode('123456123'); + $this->customer->set_billing_city('test_city123'); + $this->customer->set_billing_address_1('test_address_line123'); + + $addressFound = $crmCustomer->fillCorporateAddress($this->customer->get_id(), $this->customer); + + $this->assertEquals(false, $addressFound); } public function dataProviderApiClient() { $this->setUp(); - return array( - array( + return [ + [ 'retailcrm' => $this->apiMock - ), - array( + ], + [ 'retailcrm' => false - ) - ); + ] + ]; } /** @@ -355,7 +383,7 @@ class WC_Retailcrm_Customers_Test extends WC_Retailcrm_Test_Case_Helper // Mock response for get customers list $responseCustomersList = $this->getMockBuilder('\WC_Retailcrm_Response_Helper') ->disableOriginalConstructor() - ->setMethods(array('isSuccessful')) + ->setMethods(['isSuccessful']) ->getMock(); $this->setMockResponse($responseCustomersList, 'isSuccessful', true);