import { Locator, Page, expect } from "@playwright/test";
import { CommonPage } from "../../utils/tinymce";
import { WebAllLocators } from "../locator";

export class SellerCreateProduct {
    readonly page: Page;
    readonly locators: WebAllLocators;

    constructor(page: Page) {
        this.page = page;
        this.locators = new WebAllLocators(page);
    }

    async sellerProductPageGoto() {
        await this.page.goto("seller/products");
    }

    async sellerCreateProduct(
        sku: string,
        productname: string,
        shortDescription: string,
        price: Number,
        weight: Number,
        inventory: Number
    ) {
        const commonPage = new CommonPage(this.locators.page);
        await this.locators.createProductButton.click();
        await this.page.waitForTimeout(2000);
        await this.locators.selectProductType.selectOption("simple");
        await this.locators.selectAttribute.selectOption("1");
        await this.locators.productSku.fill(sku);
        await this.locators.clickContinueButton.click();
        await this.page.waitForTimeout(2000);
        await expect(this.locators.createProductSuccessToast).toBeVisible();

        await this.locators.productName.fill(productname);
        await commonPage.fillInTinymce(
            this.locators.productShortDescription,
            shortDescription
        );
        await commonPage.fillInTinymce(
            this.locators.productDescription,
            shortDescription
        );
        await this.locators.productPrice.fill(price.toString());
        await this.locators.productWeight.fill(weight.toString());
        await this.locators.productInventory.fill(inventory.toString());

        await this.locators.clickSaveProduct.click();
        await this.page.waitForTimeout(2000);

        await expect(this.locators.updateProductSuccessToast).toBeVisible();
    }
}
