package com.vaadin.tests.converter; import org.junit.Test; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import com.vaadin.testbench.elements.TextFieldElement; import com.vaadin.tests.tb3.MultiBrowserTest; public class ConverterThatEnforcesAFormatTest extends MultiBrowserTest { private TextFieldElement field; @Override public void setup() throws Exception { super.setup(); openTestURL(); field = $(TextFieldElement.class).first(); } @Test public void checkDefault() { waitUntilValueIs("50.000"); } @Test public void checkRounding() { setValue("50.0202", Keys.ENTER); waitUntilValueIs("50.020"); } @Test public void checkElaborating() { setValue("12"); waitUntilValueIs("12.000"); } @Test public void checkText() { setValue("abc", Keys.ENTER); waitUntilValueIs("abc"); waitUntilHasCssClass("v-textfield-error"); } private void setValue(String value, CharSequence... keysToSend) { field.setValue(value); if (keysToSend.length > 0) { field.sendKeys(keysToSend); } else { field.submit(); } } private void waitUntilValueIs(final String expected) { waitUntil(new ExpectedCondition<Boolean>() { private String actual; @Override public Boolean apply(WebDriver arg0) { actual = field.getValue(); return expected.equals(actual); } @Override public String toString() { return String.format("the field to have value '%s' (was: '%s')", expected, actual); } }); } private void waitUntilHasCssClass(final String className) { waitUntil(new ExpectedCondition<Boolean>() { @Override public Boolean apply(WebDriver arg0) { return hasCssClass(field, className); } @Override public String toString() { return String.format("the field to have css class '%s'", className); } }); } }