Package org.lightadmin.page

Source Code of org.lightadmin.page.ListViewPage

package org.lightadmin.page;

import org.lightadmin.SeleniumContext;
import org.lightadmin.component.DataTableComponent;
import org.lightadmin.component.FilterFormComponent;
import org.lightadmin.component.QuickViewComponent;
import org.lightadmin.data.Domain;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.TimeoutException;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

import static org.junit.Assert.fail;

public class ListViewPage extends SecuredPage<ListViewPage> {

  public static final String DEFAULT_SCOPE_LABEL = "All";
  private Domain domain;

  @FindBy(id = "listViewTable")
  private WebElement listViewTable;

  private FilterFormComponent filterFormComponent;

  public ListViewPage( SeleniumContext seleniumContext, Domain domain ) {
    super( seleniumContext );

    filterFormComponent = new FilterFormComponent( seleniumContext );
    this.domain = domain;
  }

  public DataTableComponent getDataTable() {
    return new DataTableComponent( listViewTable, seleniumContext );
  }

  @Override
  protected void load() {
    webDriver().get( baseUrl().toString() + "/domain/" + domain.getDomainTypeName() );
  }

  @Override
  protected void isLoaded() throws Error {
    try {
      webDriver().waitForElementVisible( listViewTable );
    } catch ( TimeoutException e ) {
      fail( "ListViewTable was not found on ListViewPage" );
    }

    try {
      webDriver().waitForElementVisible( getScope( DEFAULT_SCOPE_LABEL ) );
    } catch ( TimeoutException e ) {
      fail( "Default scope is not displayed" );
    }
  }

  public void openAdvancedSearch() {
    filterFormComponent.openAdvancedSearch();
  }

  public void selectScope( String scopeLabel ) {
    getScope( scopeLabel ).click();
  }

  public boolean scopeIsHighlighted( String scopeLabel ) {
    try {
      return getScope( scopeLabel ).getAttribute( "class" ).contains( "active" );
    } catch ( NoSuchElementException e ) {
      return false;
    }
  }

  public void resetFilter() {
    filterFormComponent.resetFilter();
  }

  public void filter( String filterField, String filterValue ) {
    filterFormComponent.filter( filterField, filterValue );
  }

  private WebElement getScope( String scopeLabel ) {
    return webDriver().findElement( By.partialLinkText( scopeLabel ) );
  }

  public QuickViewComponent showQuickViewForItem( int itemId ) {
    return getDataTable().showQuickViewFor( itemId );
  }

  public QuickViewComponent showQuickViewForItem( String itemName ) {
    return getDataTable().showQuickViewFor( itemName );
  }

  public int getScopeCount( String scope ) {
    String fullScopeLabel = getScope( scope ).getText();
    return Integer.parseInt( fullScopeLabel.substring( fullScopeLabel.indexOf( "(" ) + 1, fullScopeLabel.indexOf( ")" ) ) );
  }

  public EditPage editItem( int i ) {
    return getDataTable().editItem( i, domain.getDomainTypeName() );
  }

  public CreatePage navigateToCreatePage() {
    webDriver().findElement( By.linkText( "Create New" ) );

    return new CreatePage( seleniumContext, domain.getDomainTypeName() ).get();
  }

  public void deleteItemByName( String itemName ) {
    getDataTable().deleteItemByName( itemName );
  }

  public String[] getFilterCaptions() {
    return filterFormComponent.getCaptions();
  }

  public WebElement getRowForItem( String itemName ) {
    return getDataTable().getRowForItem( itemName );
  }
}
TOP

Related Classes of org.lightadmin.page.ListViewPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.