package org.fluentlenium.core.action;
import org.fluentlenium.adapter.FluentAdapter;
import org.fluentlenium.core.components.DefaultComponentInstantiator;
import org.fluentlenium.core.domain.FluentList;
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.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import java.util.Arrays;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class FillTest {
@Mock
private WebDriver driver;
@Mock
private WebElement element1;
@Mock
private WebElement element2;
@Mock
private WebElement element3;
@Mock
private WebElement element4;
private FluentAdapter fluentAdapter;
private DefaultComponentInstantiator instantiator;
@Before
public void before() {
fluentAdapter = new FluentAdapter();
fluentAdapter.initFluent(driver);
instantiator = new DefaultComponentInstantiator(fluentAdapter);
}
@After
public void after() {
reset(driver, element1, element2, element3, element4);
}
public FluentWebElement el(WebElement element) {
return new FluentWebElement(element, fluentAdapter, new DefaultComponentInstantiator(fluentAdapter));
}
@Test
public void testFillList() {
FluentList<FluentWebElement> list = instantiator.asFluentList(Arrays.asList(element1, element2, element3, element4));
Fill fill = new Fill(list);
when(element2.isDisplayed()).thenReturn(true);
when(element2.isEnabled()).thenReturn(true);
when(element3.isDisplayed()).thenReturn(true);
when(element4.isDisplayed()).thenReturn(true);
when(element4.isEnabled()).thenReturn(true);
verify(driver, never()).findElement(any(By.class));
fill.withText("1", "2", "3");
verify(element1, never()).sendKeys(anyString());
verify(element2).sendKeys("1");
verify(element3, never()).sendKeys(anyString());
verify(element4).sendKeys("3");
}
@Test
public void testFillElement() {
when(element1.isDisplayed()).thenReturn(true);
when(element1.isEnabled()).thenReturn(true);
Fill fill = new Fill(el(element1));
verify(driver, never()).findElement(any(By.class));
fill.withText("1", "2", "3");
verify(element1).sendKeys("1");
}
}