import { CustomerLoginData } from '@/portal/modules/customer/customer-types';
import { CustomerAccountView } from '@/portal/modules/customer/views/CustomerAccountView';
import { BaseView } from '@/shared/base/BaseView';

export class CustomerLoginView extends BaseView {
  readonly emailTextField = this.host.locator('input#email');
  readonly passwordField = this.host.locator('input#password');
  readonly submitButton = this.host.locator('button[type="submit"]');

  async login(data: CustomerLoginData): Promise<CustomerAccountView> {
    await this.fill(data);
    await Promise.all([this.host.waitForURL('**/customer-portal/account-overview/*'), this.submit()]);
    return new CustomerAccountView(this.host);
  }

  async fill(data: CustomerLoginData): Promise<void> {
    await this.emailTextField.fill(data.email);
    await this.passwordField.fill(data.password);
  }

  async submit(): Promise<void> {
    await this.submitButton.click();
  }
}
