diff --git a/tests/_support/Actions/CleanAction.php b/tests/_support/Actions/CleanAction.php new file mode 100644 index 000000000..511e9012e --- /dev/null +++ b/tests/_support/Actions/CleanAction.php @@ -0,0 +1,30 @@ +map(function ($field, $key) { + return $this->cleanField($field); + })->toArray(); + } + + /** + * Clean field. + * + * @param string $field + * @return string + */ + public function cleanField($field) + { + return preg_replace('/[^A-Za-z0-9 ]/', '', $field); + } +} diff --git a/tests/_support/ApiTester.php b/tests/_support/ApiTester.php index c73c0c32c..9b1e87f96 100644 --- a/tests/_support/ApiTester.php +++ b/tests/_support/ApiTester.php @@ -1,6 +1,7 @@ map(function ($field, $key) { - return $this->cleanField($field); - })->toArray(); - } - - /** - * Clean field. - * - * @param string $field - * @return string - */ - public function cleanField($field) - { - return preg_replace('/[^A-Za-z0-9 ]/', '', $field); - } } diff --git a/tests/functional/Admin/Customer/AddressCest.php b/tests/functional/Admin/Customer/AddressCest.php new file mode 100644 index 000000000..d8f2c4e42 --- /dev/null +++ b/tests/functional/Admin/Customer/AddressCest.php @@ -0,0 +1,108 @@ +have(Customer::class); + + $I->loginAsAdmin(); + + $I->amOnAdminRoute('admin.customer.edit', [$customer->id]); + $I->seeCurrentRouteIs('admin.customer.edit'); + + $I->sendAjaxGetRequest(route('admin.customer.addresses.index', $customer->id)); + $I->seeResponseCodeIsSuccessful(); + } + + /** + * Test create address page. + * + * @param FunctionalTester $I + * @return void + */ + public function testCreate(FunctionalTester $I): void + { + $customer = $I->have(Customer::class); + + $I->loginAsAdmin(); + + $I->amOnAdminRoute('admin.customer.edit', [$customer->id]); + + $I->click(__('admin::app.customers.addresses.create-btn-title'), '//*[contains(@class, "page-content")]'); + $I->seeCurrentRouteIs('admin.customer.addresses.create'); + + $I->click(__('admin::app.customers.addresses.save-btn-title'), '//*[contains(@class, "page-action")]'); + $I->seeFormHasErrors(); + + // To Do (@devansh-webkul): Simulate this... + // $addressData = $this->generateAddressData($I); + // $this->fillForm($I, $addressData); + + // $I->click(__('admin::app.customers.addresses.save-btn-title'), '//*[contains(@class, "page-action")]'); + // $I->dontSeeFormErrors(); + + // $I->seeCurrentRouteIs('admin.customer.addresses.index'); + // $I->seeRecord(Customer::class, $addressData); + } + + /** + * Generate address data. + * + * @param FunctionalTester $I + * @return void + */ + private function generateAddressData(FunctionalTester $I) + { + return $this->cleanAllFields([ + 'first_name' => $I->fake()->firstName, + 'last_name' => $I->fake()->lastName, + 'address1' => $I->fake()->streetAddress, + 'country' => $I->fake()->countryCode, + 'state' => $I->fake()->word, + 'city' => $I->fake()->city, + 'postcode' => $I->fake()->postcode, + 'phone' => $I->fake()->phoneNumber, + ]); + } + + /** + * Fill form data. + * + * @param FunctionalTester $I + * @param array $addressData + * @return void + */ + private function fillForm(FunctionalTester $I, array $addressData) + { + $I->fillField('first_name', $addressData['first_name']); + + $I->fillField('last_name', $addressData['last_name']); + + $I->fillField('address1[]', $addressData['address1']); + + $I->fillField('city', $addressData['city']); + + $I->selectOption('country', $addressData['country']); + + $I->selectOption('state', $addressData['state']); + + $I->fillField('postcode', $addressData['postcode']); + + $I->fillField('phone', $addressData['phone']); + } +} diff --git a/tests/functional/Customer/CustomerCest.php b/tests/functional/Customer/CustomerCest.php index 0449eb3ae..dec9389fd 100644 --- a/tests/functional/Customer/CustomerCest.php +++ b/tests/functional/Customer/CustomerCest.php @@ -2,6 +2,7 @@ namespace Tests\Functional\Customer; +use Actions\CleanAction; use Faker\Factory; use FunctionalTester; use Webkul\Customer\Models\Customer; @@ -9,6 +10,8 @@ use Webkul\Customer\Models\CustomerAddress; class CustomerCest { + use CleanAction; + /** * Faker factory. * @@ -186,28 +189,4 @@ class CustomerCest 'phone' => $this->faker->phoneNumber, ]); } - - /** - * Clean all fields. - * - * @param array $fields - * @return array - */ - private function cleanAllFields(array $fields) - { - return collect($fields)->map(function ($field, $key) { - return $this->cleanField($field); - })->toArray(); - } - - /** - * Clean fields. - * - * @param string $field - * @return string - */ - private function cleanField($field) - { - return preg_replace('/[^A-Za-z0-9 ]/', '', $field); - } }