import { Locator, Page } from "@playwright/test";
import Locators from "../Locators";

// Interfaz que define los parámetros para el método methodExample
interface ExampleParams {
	exampleDate: string;
}

// Clase Example que extiende de Locators
export class Example extends Locators {
	// Record es un tipo de TypeScript que define un objeto con claves de tipo string
	// y valores de tipo Locator. Esto permite almacenar múltiples localizadores
	// en un solo objeto y acceder a ellos usando nombres descriptivos como claves
	readonly exampleRecord:Record<string,Locator>;

	constructor(page: Page) {
		super(page);

		// Aquí inicializamos el Record  exampleRecord con un objeto que contiene
		// pares clave-valor, donde:
		// Esto nos permite organizar y acceder a los localizadores de manera estructurada
		this.exampleRecord = {
			exampleLocator: this.fields.documentNumber,
		};
	}

	// Método de ejemplo 
	async methodExample(exampleParams: ExampleParams) {
		// Accedemos al locator exaple locator dentro de exampleRecord y 
		// le aplicamos un fill con el valor de exampleParams.exampleDate
		await this.exampleRecord.exampleLocator.fill(exampleParams.exampleDate);
	}
}
