import { IPageElement, PageElement } from './page-element';

export enum ButtonType {
  COMMON,
  MATICON,
  IELEMENT,
  MATICON_FA
}

export class PageElementButton extends PageElement {

  constructor(ipe: IPageElement, private btnType = ButtonType.COMMON) {
    super(ipe);
  }

  click(): void {
    this.pageElement.click();
  }

  override getText(): Cypress.Chainable {
    return this.pageElement.get(this.id + ' .mdc-button__label').invoke('text');
  }

  override getIconName(): Cypress.Chainable {
    switch(this.btnType) {
      case ButtonType.MATICON:
        return this.pageElement.get(this.id + ' mat-icon').invoke('text');
      case ButtonType.IELEMENT:
        return this.pageElement.get(this.id + ' mat-icon').invoke('text');
      case ButtonType.MATICON_FA:
        return this.pageElement.get(this.id + ' mat-icon').invoke('attr', 'fonticon');
      }
      return this.pageElement.get(this.id + ' mat-icon').invoke('text');
  }

}
