From 5f2001726bcf34e794b45a0cce302daf39dda159 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Tue, 7 May 2024 14:36:40 +0200 Subject: [PATCH 1/2] @data/faker/carrier : Add ranges --- src/data/faker/carrier.ts | 34 +++++---------------- src/data/types/{carrier.d.ts => carrier.ts} | 26 ++++++++++++---- src/index.ts | 5 +++ 3 files changed, 33 insertions(+), 32 deletions(-) rename src/data/types/{carrier.d.ts => carrier.ts} (55%) diff --git a/src/data/faker/carrier.ts b/src/data/faker/carrier.ts index 2af775f7..365328d3 100644 --- a/src/data/faker/carrier.ts +++ b/src/data/faker/carrier.ts @@ -1,13 +1,10 @@ import TaxRules from '@data/demo/taxRule'; -import Zones from '@data/demo/zones'; import TaxRuleData from '@data/faker/taxRule'; -import ZoneData from '@data/faker/zone'; -import CarrierCreator from '@data/types/carrier'; +import {CarrierCreator, CarrierRange} from '@data/types/carrier'; import {faker} from '@faker-js/faker'; const taxes: string[] = Object.values(TaxRules).map((tax: TaxRuleData) => tax.name); -const zonesID: number[] = Object.values(Zones).map((zone: ZoneData) => zone.id); const outOfRangeBehavior: string[] = ['Apply the cost of the highest defined range', 'Disable carrier']; const billing: string[] = ['According to total price', 'According to total weight']; @@ -28,7 +25,7 @@ export default class CarrierData { public readonly speedGrade: number; - public readonly trakingURL: string; + public readonly trackingURL: string; public readonly handlingCosts: boolean; @@ -40,14 +37,6 @@ export default class CarrierData { public readonly outOfRangeBehavior: string; - public readonly rangeSup: number; - - public readonly allZones: boolean; - - public readonly allZonesValue: number; - - public readonly zoneID: number; - public readonly maxWidth: number; public readonly maxHeight: number; @@ -64,6 +53,8 @@ export default class CarrierData { public readonly priceTTC: number; + public readonly ranges: CarrierRange[]; + /** * Constructor for class CarrierData * @param carrierToCreate {CarrierCreator} Could be used to force the value of some members @@ -88,7 +79,7 @@ export default class CarrierData { this.speedGrade = carrierToCreate.speedGrade || faker.number.int({min: 1, max: 9}); /** @type {string} Url of carrier tracking */ - this.trakingURL = carrierToCreate.trakingURL || 'https://example.com/track.php?num=20'; + this.trackingURL = carrierToCreate.trackingURL || 'https://example.com/track.php?num=20'; /** @type {boolean} True to include handling costs on the price */ this.handlingCosts = carrierToCreate.handlingCosts === undefined ? true : carrierToCreate.handlingCosts; @@ -105,18 +96,6 @@ export default class CarrierData { /** @type {string} Behavior when no defined range matches the customer carts */ this.outOfRangeBehavior = carrierToCreate.outOfRangeBehavior || faker.helpers.arrayElement(outOfRangeBehavior); - /** @type {number} Superior range for the carrier */ - this.rangeSup = carrierToCreate.rangeSup || faker.number.int({min: 1, max: 100}); - - /** @type {boolean} True to apply it to all zones */ - this.allZones = carrierToCreate.allZones === undefined ? true : carrierToCreate.allZones; - - /** @type {number} Value to set when all zones is checked */ - this.allZonesValue = carrierToCreate.allZonesValue || faker.number.int({min: 1, max: 100}); - - /** @type {number} ID of the zone on carrier form */ - this.zoneID = carrierToCreate.zoneID || faker.helpers.arrayElement(zonesID); - /** @type {number} Max width that the carrier can handle */ this.maxWidth = carrierToCreate.maxWidth || faker.number.int({min: 1, max: 100}); @@ -140,5 +119,8 @@ export default class CarrierData { /** @type {number} Price TTC */ this.priceTTC = carrierToCreate.priceTTC || 0; + + /** @type {CarrierRange[]} Ranges */ + this.ranges = carrierToCreate.ranges || []; } } diff --git a/src/data/types/carrier.d.ts b/src/data/types/carrier.ts similarity index 55% rename from src/data/types/carrier.d.ts rename to src/data/types/carrier.ts index 906a9a09..2eaf0647 100644 --- a/src/data/types/carrier.d.ts +++ b/src/data/types/carrier.ts @@ -1,3 +1,16 @@ +import ZoneCreator from '@data/types/zone'; + +type CarrierRangeZone = { + zone: ZoneCreator | string + price: number +} + +type CarrierRange = { + weightMin: number + weightMax: number + zones: CarrierRangeZone[] +} + type CarrierCreator = { id?: number position?: number @@ -5,16 +18,12 @@ type CarrierCreator = { transitName?: string delay?: string speedGrade?: number - trakingURL?: string + trackingURL?: string handlingCosts?: boolean freeShipping?: boolean billing?: string taxRule?: string outOfRangeBehavior?: string - rangeSup?: number - allZones?: boolean - allZonesValue?: number - zoneID?: number maxWidth?: number maxHeight?: number maxDepth?: number @@ -23,6 +32,11 @@ type CarrierCreator = { price?: number priceText?: string priceTTC?: number + ranges?: CarrierRange[] }; -export default CarrierCreator; +export type { + CarrierCreator, + CarrierRange, + CarrierRangeZone, +}; diff --git a/src/index.ts b/src/index.ts index 1db8c345..869c2c94 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,9 @@ // Export data +export type { + CarrierCreator, + CarrierRange, + CarrierRangeZone, +} from '@data/types/carrier'; export type {CartProductDetails} from '@data/types/cart'; export type { GlobalInstall, From 7005d2fcfd5e325d4efbe36a7fe97fbb1f4f1c6a Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Tue, 7 May 2024 14:40:56 +0200 Subject: [PATCH 2/2] `@pages/FO/home/index` : Add method goToProductPage to the interface --- src/interfaces/FO/home/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/interfaces/FO/home/index.ts b/src/interfaces/FO/home/index.ts index 72f08a6f..bb252a2a 100644 --- a/src/interfaces/FO/home/index.ts +++ b/src/interfaces/FO/home/index.ts @@ -4,6 +4,7 @@ import type {Page} from '@playwright/test'; export interface FoHomePageInterface extends FOBasePagePageInterface { addProductToCartByQuickView(page: Page, id: number, quantityWanted?: number): Promise; goToAllProductsPage(page: Page): Promise; + goToProductPage(page: Page, id: number): Promise; isHomePage(page: Page): Promise; proceedToCheckout(page: Page): Promise; }