package com.vaadin.tests.elements.listselect;
import java.util.List;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.openqa.selenium.WebElement;
import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.LabelElement;
import com.vaadin.testbench.elements.ListSelectElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class ListSelectOptionClickTest extends MultiBrowserTest {
ListSelectElement select;
LabelElement counterLbl;
@Before
public void init() {
openTestURL();
select = $(ListSelectElement.class).first();
counterLbl = $(LabelElement.class).id("multiCounterLbl");
}
@Test
@Ignore("depends on framework8-issues/issues/464 fix")
public void testOptionClick() {
List<WebElement> options = select.findElements(By.tagName("option"));
WebElement option = options.get(1);
option.click();
checkValueChanged();
}
@Test
@Ignore("depends on framework8-issues/issues/464 fix")
public void testSelectByText() {
select.selectByText("item2");
checkValueChanged();
}
@Test
public void testMultiSelectDeselectByText() {
select.selectByText("item2");
Assert.assertEquals("1: [item1, item2]", counterLbl.getText());
select.selectByText("item3");
Assert.assertEquals("2: [item1, item2, item3]", counterLbl.getText());
select.deselectByText("item2");
Assert.assertEquals("3: [item1, item3]", counterLbl.getText());
}
@Test
public void testDeselectSelectByText() {
select.deselectByText("item1");
Assert.assertEquals("1: []", counterLbl.getText());
select.selectByText("item1");
Assert.assertEquals("2: [item1]", counterLbl.getText());
select.selectByText("item3");
Assert.assertEquals("3: [item1, item3]", counterLbl.getText());
select.deselectByText("item1");
Assert.assertEquals("4: [item3]", counterLbl.getText());
}
/*
* Checks that value has changed. Checks that the change event was fired
* once.
*/
private void checkValueChanged() {
String actual = select.getValue();
String actualCounter = counterLbl.getText();
Assert.assertEquals("The value of the ListSelect has not changed",
"item2", actual);
Assert.assertEquals(
"The number of list select valueChange events is not one.",
"1: item2", actualCounter);
}
}