All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.redhat.darcy.ui.matchers.LoadConditionMatcher Maven / Gradle / Ivy

Go to download

Framework for writing page objects to automate interaction with graphical user interfaces.

The newest version!
/*
 Copyright 2014 Red Hat, Inc. and/or its affiliates.

 This file is part of darcy-ui.

 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program.  If not, see .
 */

package com.redhat.darcy.ui.matchers;

import com.redhat.darcy.ui.api.View;
import com.redhat.darcy.ui.api.elements.Element;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.hamcrest.Matcher;

import static com.redhat.darcy.ui.matchers.DarcyMatchers.displayed;
import static com.redhat.darcy.ui.matchers.DarcyMatchers.loaded;
import static com.redhat.darcy.ui.matchers.DarcyMatchers.present;

/**
 * Tests whether a required field's object's state is appropriate for a view with those fields to be
 * considered loaded. What is required of an object's state is dependent on the type of object.
 * See {@link #doesItemMatchAppropriateCondition(Object)} for details.
 * 

* If the tested object is not a {@link com.redhat.darcy.ui.api.elements.Findable}, * {@link com.redhat.darcy.ui.api.elements.Element}, or {@link com.redhat.darcy.ui.api.View}, then * it will never match. */ public class LoadConditionMatcher extends BaseMatcher { @Override public boolean matches(Object item) { return doesItemMatchAppropriateCondition(item); } @Override public void describeTo(Description description) { description.appendText("a Findable, Element, or View that is present, displayed, or loaded " + "respectively, depending on the type."); } /** * Takes an object, and determines a condition for that object that should satisfy the * containing view is loaded. Different conditions are made depending on the type of object. * * * * * * * * * * * * * * * * * * * * * * *
TypeMethod
{@link com.redhat.darcy.ui.api.View}{@link com.redhat.darcy.ui.api.View#isLoaded()}
{@link com.redhat.darcy.ui.api.elements.Element}{@link com.redhat.darcy.ui.api.elements.Element#isDisplayed()}
{@link com.redhat.darcy.ui.api.elements.Findable}{@link com.redhat.darcy.ui.api.elements.Findable#isPresent()}
*/ private boolean doesItemMatchAppropriateCondition(Object item) { Matcher matcher; if (item instanceof View) { matcher = loaded(); } else if (item instanceof Element) { matcher = displayed(); } else { matcher = present(); } return matcher.matches(item); } }