From 3cd6ad805bb0c087ed96c95b88d80bae415c7052 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 26 Feb 2025 11:12:06 +0100 Subject: [PATCH] Migrate `@pages/BO/design/imageSettings/add` from Core --- src/index.ts | 1 + .../BO/design/imageSettings/create.ts | 10 +++ src/pages/BO/design/imageSettings/create.ts | 9 ++ .../pages/BO/design/imageSettings/create.ts | 87 +++++++++++++++++++ 4 files changed, 107 insertions(+) create mode 100644 src/interfaces/BO/design/imageSettings/create.ts create mode 100644 src/pages/BO/design/imageSettings/create.ts create mode 100644 src/versions/develop/pages/BO/design/imageSettings/create.ts diff --git a/src/index.ts b/src/index.ts index 270e89cd..73229db9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -249,6 +249,7 @@ export {default as boFilesPage} from '@pages/BO/catalog/files'; export {default as boFilesCreatePage} from '@pages/BO/catalog/files/create'; export {default as boInformationPage} from '@pages/BO/advancedParameters/information'; export {default as boImageSettingsPage} from '@pages/BO/design/imageSettings'; +export {default as boImageSettingsCreatePage} from '@pages/BO/design/imageSettings/create'; export {default as boImportPage} from '@pages/BO/advancedParameters/import'; export {default as boInvoicesPage} from '@pages/BO/orders/invoices'; export {default as boLanguagesPage} from '@pages/BO/international/languages'; diff --git a/src/interfaces/BO/design/imageSettings/create.ts b/src/interfaces/BO/design/imageSettings/create.ts new file mode 100644 index 00000000..efcde821 --- /dev/null +++ b/src/interfaces/BO/design/imageSettings/create.ts @@ -0,0 +1,10 @@ +import type FakerImageType from '@data/faker/imageType'; +import {BOBasePagePageInterface} from '@interfaces/BO'; +import type {Page} from '@playwright/test'; + +export interface BOImageSettingsCreatePageInterface extends BOBasePagePageInterface { + readonly pageTitleCreate: string; + readonly pageTitleEdit: (name: string) => string; + + createEditImageType(page: Page, imageTypeData: FakerImageType): Promise; +} diff --git a/src/pages/BO/design/imageSettings/create.ts b/src/pages/BO/design/imageSettings/create.ts new file mode 100644 index 00000000..f46f53b1 --- /dev/null +++ b/src/pages/BO/design/imageSettings/create.ts @@ -0,0 +1,9 @@ +import {BOImageSettingsCreatePageInterface} from '@interfaces/BO/design/imageSettings/create'; + +/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */ +function requirePage(): BOImageSettingsCreatePageInterface { + return require('@versions/develop/pages/BO/design/imageSettings/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/design/imageSettings/create.ts b/src/versions/develop/pages/BO/design/imageSettings/create.ts new file mode 100644 index 00000000..8d0f1983 --- /dev/null +++ b/src/versions/develop/pages/BO/design/imageSettings/create.ts @@ -0,0 +1,87 @@ +import type FakerImageType from '@data/faker/imageType'; +import {type BOImageSettingsCreatePageInterface} from '@interfaces/BO/design/imageSettings/create'; +import BOBasePage from '@pages/BO/BOBasePage'; +import {type Page} from '@playwright/test'; + +/** + * Add image type page, contains functions that can be used on the page + * @class + * @extends BOBasePage + */ +class BOImageSettingsCreatePage extends BOBasePage implements BOImageSettingsCreatePageInterface { + public readonly pageTitleCreate: string; + + public readonly pageTitleEdit: (name: string) => string; + + private readonly imageTypeForm: string; + + private readonly nameInput: string; + + private readonly widthInput: string; + + private readonly heightInput: string; + + private readonly productsToggle: (toggle: number) => string; + + private readonly categoriesToggle: (toggle: number) => string; + + private readonly manufacturersToggle: (toggle: number) => string; + + private readonly suppliersToggle: (toggle: number) => string; + + private readonly storesToggle: (toggle: number) => string; + + private readonly saveButton: string; + + /** + * @constructs + * Setting up texts and selectors to use on add image type page + */ + constructor() { + super(); + + this.pageTitleCreate = `Add new • ${global.INSTALL.SHOP_NAME}`; + this.pageTitleEdit = (name: string) => `Edit: ${name} • ${global.INSTALL.SHOP_NAME}`; + + // Form selectors + this.imageTypeForm = 'form[name="image_type"]'; + this.nameInput = `${this.imageTypeForm} #image_type_name`; + this.widthInput = `${this.imageTypeForm} #image_type_width`; + this.heightInput = `${this.imageTypeForm} #image_type_height`; + this.productsToggle = (toggle: number) => `${this.imageTypeForm} #image_type_products_${toggle}`; + this.categoriesToggle = (toggle: number) => `${this.imageTypeForm} #image_type_categories_${toggle}`; + this.manufacturersToggle = (toggle: number) => `${this.imageTypeForm} #image_type_manufacturers_${toggle}`; + this.suppliersToggle = (toggle: number) => `${this.imageTypeForm} #image_type_suppliers_${toggle}`; + this.storesToggle = (toggle: number) => `${this.imageTypeForm} #image_type_stores_${toggle}`; + this.saveButton = `${this.imageTypeForm} #save-button`; + } + + /* Methods */ + + /** + * Fill image type form in create or edit page and save + * @param page {Page} Browser tab + * @param imageTypeData {FakerImageType} Data to set on new/edit image type form + * @return {Promise} + */ + async createEditImageType(page: Page, imageTypeData: FakerImageType): Promise { + await this.setValue(page, this.nameInput, imageTypeData.name); + await this.setValue(page, this.widthInput, imageTypeData.width.toString()); + await this.setValue(page, this.heightInput, imageTypeData.height.toString()); + + // Set status for image type + await this.setChecked(page, this.productsToggle(imageTypeData.productsStatus ? 1 : 0)); + await this.setChecked(page, this.categoriesToggle(imageTypeData.categoriesStatus ? 1 : 0)); + await this.setChecked(page, this.manufacturersToggle(imageTypeData.manufacturersStatus ? 1 : 0)); + await this.setChecked(page, this.suppliersToggle(imageTypeData.suppliersStatus ? 1 : 0)); + await this.setChecked(page, this.storesToggle(imageTypeData.storesStatus ? 1 : 0)); + + // Save image type + await this.clickAndWaitForURL(page, this.saveButton); + + // Return successful message + return this.getAlertSuccessBlockParagraphContent(page); + } +} + +module.exports = new BOImageSettingsCreatePage();