// File: PageObjectUpdateEntityTabForms.ts
// Author: Vinicius Martins Ferraz
// Date: 11/05/2025

import { UpdatePageTabGroupStruct } from './i-page-structure';
import { IPageElementMatTabGroup } from '../page-element/page-element-mat-tab-group';
import { Form } from '../page-element/form';
import { PageObjectUpdateEntity } from './page-object-update-entity';

export abstract class PageObjectUpdateEntityTabForms extends PageObjectUpdateEntity {

  tabGroupForms: IPageElementMatTabGroup;

  constructor(pageStruct: UpdatePageTabGroupStruct, pageTitle: string, newEntityUrl?: string) {
    super(pageStruct, pageTitle, newEntityUrl);
    this.tabGroupForms = pageStruct.tabGroupForms;
  }

  override setFieldsValues(entityToBeCreated: any) {
    this.tabGroupForms.tabs.forEach(tab => {
      let aux = entityToBeCreated;
      cy.get(tab.id).click();
      if (entityToBeCreated[tab.propertyName]) aux = entityToBeCreated[tab.propertyName];
      new Form(tab.form!)?.setFieldsValues(aux);
    });
  }


}


