import { expect, type Locator, type Page } from '@playwright/test';
import { BasePage } from './BasePage';

export class CoverageStatementPage extends BasePage {
    readonly page: Page;
    readonly scheduleOnlineButton: Locator;
    readonly cancelMyClaimButton: Locator;
    readonly cancelMyClaimConfirm: Locator;
    readonly deductibleAmount: Locator;
    readonly verfiyingCoverageText: Locator;
    readonly continueToScheduleButton: Locator;     // For ITAC/NoComp
    issPageValue = 'coverage-statement';

    constructor(page: Page) {
        super(page);
        this.page = page;
        this.scheduleOnlineButton = this.page.getByText('Continue to schedule online');
        this.cancelMyClaimButton = this.page.getByText('Cancel my claim');
        this.cancelMyClaimConfirm = this.page.getByText('No, I want to cancel');
        
        this.deductibleAmount = this.page.getByText('$');
        this.verfiyingCoverageText = this.page.getByRole('heading', { name: 'We’re verifying your coverage' });
        this.continueToScheduleButton = page.locator('div[class*="button-content"]', {hasText:'Continue to schedule online'});
    }

    async scheduleOnline(){
        await this.scheduleOnlineButton.click();
    }

    async cancelMyClaim(){
        await this.cancelMyClaimButton.click();
        await this.cancelMyClaimConfirm.click();
    }

    async validateDeductibleAmount(customer){
        await expect(this.deductibleAmount). toContainText(`$${customer.deductibleAmount}`, {timeout: 60000});
    }

    async validateUnverifiedText(){
        await expect(this.verfiyingCoverageText).toBeEnabled();
    }
}