From c378a89baadc0ce38150272a9eec606a76a2f275 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Mon, 3 Mar 2025 09:19:27 +0100 Subject: [PATCH] Migrate `@pages/BO/international/locations/states/add` from Core --- src/index.ts | 1 + .../international/locations/states/create.ts | 10 +++ .../international/locations/states/create.ts | 9 +++ .../international/locations/states/create.ts | 72 +++++++++++++++++++ 4 files changed, 92 insertions(+) create mode 100644 src/interfaces/BO/international/locations/states/create.ts create mode 100644 src/pages/BO/international/locations/states/create.ts create mode 100644 src/versions/develop/pages/BO/international/locations/states/create.ts diff --git a/src/index.ts b/src/index.ts index 07598e17..7c9df538 100644 --- a/src/index.ts +++ b/src/index.ts @@ -321,6 +321,7 @@ export {default as boSqlManagerPage} from '@pages/BO/advancedParameters/database export {default as boSqlManagerCreatePage} from '@pages/BO/advancedParameters/database/sqlManager/create'; export {default as boSqlManagerViewPage} from '@pages/BO/advancedParameters/database/sqlManager/view'; export {default as boStatesPage} from '@pages/BO/international/locations/states'; +export {default as boStatesCreatePage} from '@pages/BO/international/locations/states/create'; export {default as boStatisticsPage} from '@pages/BO/statistics'; export {default as boStockPage} from '@pages/BO/catalog/stock'; export {default as boStockMovementsPage} from '@pages/BO/catalog/stock/movements'; diff --git a/src/interfaces/BO/international/locations/states/create.ts b/src/interfaces/BO/international/locations/states/create.ts new file mode 100644 index 00000000..9b1d38c7 --- /dev/null +++ b/src/interfaces/BO/international/locations/states/create.ts @@ -0,0 +1,10 @@ +import type FakerState from '@data/faker/state'; +import {BOBasePagePageInterface} from '@interfaces/BO'; +import {type Page} from '@playwright/test'; + +export interface BOStatesCreatePageInterface extends BOBasePagePageInterface { + readonly pageTitleCreate: string; + readonly pageTitleEdit: string; + + createEditState(page: Page, stateData: FakerState): Promise; +} diff --git a/src/pages/BO/international/locations/states/create.ts b/src/pages/BO/international/locations/states/create.ts new file mode 100644 index 00000000..f65a09ea --- /dev/null +++ b/src/pages/BO/international/locations/states/create.ts @@ -0,0 +1,9 @@ +import {type BOStatesCreatePageInterface} from '@interfaces/BO/international/locations/states/create'; + +/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */ +function requirePage(): BOStatesCreatePageInterface { + return require('@versions/develop/pages/BO/international/locations/states/create'); +} +/* eslint-enable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */ + +export default requirePage(); diff --git a/src/versions/develop/pages/BO/international/locations/states/create.ts b/src/versions/develop/pages/BO/international/locations/states/create.ts new file mode 100644 index 00000000..66bef7b6 --- /dev/null +++ b/src/versions/develop/pages/BO/international/locations/states/create.ts @@ -0,0 +1,72 @@ +import type FakerState from '@data/faker/state'; +import {type BOStatesCreatePageInterface} from '@interfaces/BO/international/locations/states/create'; +import BOBasePage from '@pages/BO/BOBasePage'; +import {type Page} from '@playwright/test'; + +/** + * Add state page, contains functions that can be used on the page + * @class + * @extends BOBasePage + */ +class BOStatesCreatePage extends BOBasePage implements BOStatesCreatePageInterface { + public readonly pageTitleCreate: string; + + public readonly pageTitleEdit: string; + + private readonly nameInput: string; + + private readonly isoCodeInput: string; + + private readonly countrySelect: string; + + private readonly zoneSelect: string; + + private readonly statusToggle: (toggle: number) => string; + + private readonly saveStateButton: string; + + /** + * @constructs + * Setting up texts and selectors to use on add state page + */ + constructor() { + super(); + + this.pageTitleCreate = `New state • ${global.INSTALL.SHOP_NAME}`; + this.pageTitleEdit = 'Editing state'; + + // Selectors + this.nameInput = '#state_name'; + this.isoCodeInput = '#state_iso_code'; + this.countrySelect = '#state_id_country'; + this.zoneSelect = '#state_id_zone'; + this.statusToggle = (toggle: number) => `#state_active_${toggle}`; + this.saveStateButton = '#save-button'; + } + + /* + Methods + */ + /** + * Fill form for add/edit state + * @param page {Page} Browser tab + * @param stateData {FakerState} Data to set on new/edit state form + * @returns {Promise} + */ + async createEditState(page: Page, stateData: FakerState): Promise { + // Fill form + await this.setValue(page, this.nameInput, stateData.name); + await this.setValue(page, this.isoCodeInput, stateData.isoCode); + await this.selectByVisibleText(page, this.countrySelect, stateData.country); + await this.selectByVisibleText(page, this.zoneSelect, stateData.zone); + await this.setChecked(page, this.statusToggle(stateData.status ? 1 : 0)); + + // Save zone + await this.clickAndWaitForURL(page, this.saveStateButton); + + // Return successful message + return this.getAlertSuccessBlockParagraphContent(page); + } +} + +module.exports = new BOStatesCreatePage();