import { expect, type Locator, type Page } from '@playwright/test';
import { BasePage } from './BasePage';
import { IPartQuestion } from '@business-logic/types/CustomerDetails';

export class PartQuestionsPage extends BasePage {
    readonly page: Page;
    issPageValue = 'part-questions';

    constructor(page: Page) {
        super(page);
        this.page = page;
    }

    async validatePartQuestions(partQuestions: IPartQuestion[]) {
        for (const pq of partQuestions) {
            const partQuestionOptions = this.page.locator(`fieldset[aria-labelledby="${pq.partQuestionType}"]`);
            if (pq.isOnPage) {
                await expect(partQuestionOptions).toBeAttached();
            } else {
                await expect(partQuestionOptions).not.toBeAttached();
            }
        }
    }

    async selectPartQuestionResponses(partQuestions: IPartQuestion[]) {
        for (const pq of partQuestions) {
            const parentobject=this.page.locator(`fieldset[aria-labelledby="${pq.partQuestionType}"]`);
            const partQuestionOptionButton = parentobject.locator(`[buttonlabel="${pq.optionToSelect}"]`);
            await partQuestionOptionButton.click();
            if (pq.secondaryQuestionOptionToSelect != null) {
                const secondaryQuestionButton = parentobject.getByText(`${pq.secondaryQuestionOptionToSelect}`);
                await secondaryQuestionButton.click();
            }
        }
    }
}
