package org.fluentlenium.core.conditions; import org.fluentlenium.adapter.FluentAdapter; import org.fluentlenium.core.components.DefaultComponentInstantiator; import org.fluentlenium.core.domain.FluentWebElement; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.openqa.selenium.Rectangle; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class RectangleConditionsTest { private static final int RECTANGLE_X_VALID_POS = 1; private static final int RECTANGLE_X_INVALID_POS = 2; private static final int RECTANGLE_Y_VALID_POS = 1; private static final int RECTANGLE_Y_INVALID_POS = 2; private static final int RECTANGLE_X_POS = 3; private static final int RECTANGLE_Y_POS = 4; private static final int RECTANGLE_INVALID_Y_POS = 5; private static final int RECTANGLE_WIDTH = 1; private static final int RECTANGLE_INVALID_WIDTH = 2; private static final int RECTANGLE_HEIGHT = 1; private static final int RECTANGLE_INVALID_HEIGHT = 2; private static final int RECTANGLE_DIMENSION_WIDTH = 3; private static final int RECTANGLE_DIMENSION_HEIGHT = 4; private static final int RECTANGLE_DIMENSION_INVALID_HEIGHT = 5; private static final int RECTANGLE_POSITION_X = 3; private static final int RECTANGLE_POSITION_Y = 4; private static final int RECTANGLE_DIMENSION_WIDTH1 = 5; private static final int RECTANGLE_DIMENSION_HEIGHT1 = 6; private static final int RECTANGLE_DIMENSION_INVALID_HEIGHT1 = 7; @Mock private WebElement webElement; @Mock private Rectangle rectangle; @Mock private WebDriver driver; private WebElementConditions conditions; @Before public void before() { when(webElement.getRect()).thenReturn(rectangle); FluentAdapter fluentAdapter = new FluentAdapter(); fluentAdapter.initFluent(driver); FluentWebElement fluentWebElement = new FluentWebElement(webElement, fluentAdapter, new DefaultComponentInstantiator(fluentAdapter)); conditions = new WebElementConditions(fluentWebElement); } @After public void after() { reset(webElement); } @Test public void withX() { when(rectangle.getX()).thenReturn(RECTANGLE_X_VALID_POS); assertThat(conditions.rectangle().x(RECTANGLE_X_VALID_POS)).isTrue(); assertThat(conditions.rectangle().x(RECTANGLE_X_INVALID_POS)).isFalse(); assertThat(conditions.rectangle().x().equalTo(RECTANGLE_X_VALID_POS)).isTrue(); assertThat(conditions.rectangle().x().equalTo(RECTANGLE_X_INVALID_POS)).isFalse(); } @Test public void notWithX() { when(rectangle.getX()).thenReturn(RECTANGLE_X_VALID_POS); assertThat(conditions.rectangle().not().x(RECTANGLE_X_VALID_POS)).isFalse(); assertThat(conditions.rectangle().not().x(RECTANGLE_X_INVALID_POS)).isTrue(); assertThat(conditions.rectangle().not().x().equalTo(RECTANGLE_X_VALID_POS)).isFalse(); assertThat(conditions.rectangle().not().x().equalTo(RECTANGLE_X_INVALID_POS)).isTrue(); } @Test public void notHasRectangleWithX() { when(rectangle.getX()).thenReturn(RECTANGLE_X_VALID_POS); assertThat(conditions.not().rectangle().x(RECTANGLE_X_VALID_POS)).isFalse(); assertThat(conditions.not().rectangle().x(RECTANGLE_X_INVALID_POS)).isTrue(); assertThat(conditions.not().rectangle().x().equalTo(RECTANGLE_X_VALID_POS)).isFalse(); assertThat(conditions.not().rectangle().x().equalTo(RECTANGLE_X_INVALID_POS)).isTrue(); } @Test public void withY() { when(rectangle.getY()).thenReturn(RECTANGLE_Y_VALID_POS); assertThat(conditions.rectangle().y(RECTANGLE_Y_VALID_POS)).isTrue(); assertThat(conditions.rectangle().y(RECTANGLE_Y_INVALID_POS)).isFalse(); assertThat(conditions.rectangle().y().equalTo(RECTANGLE_Y_VALID_POS)).isTrue(); assertThat(conditions.rectangle().y().equalTo(RECTANGLE_Y_INVALID_POS)).isFalse(); } @Test public void withPosition() { when(rectangle.getX()).thenReturn(RECTANGLE_X_POS); when(rectangle.getY()).thenReturn(RECTANGLE_Y_POS); assertThat(conditions.rectangle().position(RECTANGLE_X_POS, RECTANGLE_Y_POS)).isTrue(); assertThat(conditions.rectangle().position(RECTANGLE_X_POS, RECTANGLE_INVALID_Y_POS)).isFalse(); } @Test public void withWidth() { when(rectangle.getWidth()).thenReturn(RECTANGLE_WIDTH); assertThat(conditions.rectangle().width(RECTANGLE_WIDTH)).isTrue(); assertThat(conditions.rectangle().width(RECTANGLE_INVALID_WIDTH)).isFalse(); assertThat(conditions.rectangle().width().equalTo(RECTANGLE_WIDTH)).isTrue(); assertThat(conditions.rectangle().width().equalTo(RECTANGLE_INVALID_WIDTH)).isFalse(); } @Test public void withHeight() { when(rectangle.getHeight()).thenReturn(RECTANGLE_HEIGHT); assertThat(conditions.rectangle().height(RECTANGLE_HEIGHT)).isTrue(); assertThat(conditions.rectangle().height(RECTANGLE_INVALID_HEIGHT)).isFalse(); assertThat(conditions.rectangle().height(RECTANGLE_HEIGHT)).isTrue(); assertThat(conditions.rectangle().height(RECTANGLE_INVALID_HEIGHT)).isFalse(); assertThat(conditions.rectangle().height().equalTo(RECTANGLE_HEIGHT)).isTrue(); assertThat(conditions.rectangle().height().equalTo(RECTANGLE_INVALID_HEIGHT)).isFalse(); } @Test public void withDimension() { when(rectangle.getWidth()).thenReturn(RECTANGLE_DIMENSION_WIDTH); when(rectangle.getHeight()).thenReturn(RECTANGLE_DIMENSION_HEIGHT); assertThat(conditions.rectangle().dimension(RECTANGLE_DIMENSION_WIDTH, RECTANGLE_DIMENSION_HEIGHT)).isTrue(); assertThat(conditions.rectangle().dimension(RECTANGLE_DIMENSION_WIDTH, RECTANGLE_DIMENSION_INVALID_HEIGHT)).isFalse(); } @Test public void withPositionAndDimension() { when(rectangle.getX()).thenReturn(RECTANGLE_POSITION_X); when(rectangle.getY()).thenReturn(RECTANGLE_POSITION_Y); when(rectangle.getWidth()).thenReturn(RECTANGLE_DIMENSION_WIDTH1); when(rectangle.getHeight()).thenReturn(RECTANGLE_DIMENSION_HEIGHT1); assertThat(conditions.rectangle() .positionAndDimension(RECTANGLE_POSITION_X, RECTANGLE_POSITION_Y, RECTANGLE_DIMENSION_WIDTH1, RECTANGLE_DIMENSION_HEIGHT1)).isTrue(); assertThat(conditions.rectangle() .positionAndDimension(RECTANGLE_POSITION_X, RECTANGLE_POSITION_Y, RECTANGLE_DIMENSION_HEIGHT1, RECTANGLE_DIMENSION_INVALID_HEIGHT1)).isFalse(); } }