/*
* Copyright 2000-2016 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.tests.components.textfield;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class TextFieldsValueChangeModeTest extends MultiBrowserTest {
@Test
public void textFieldEager() {
testEager("textfield-eager");
}
@Test
public void textAreaEager() {
testEager("textarea-eager");
}
@Test
@Ignore("No support for typing in a RichTextArea in TestBench")
public void richTextAreaEager() {
testEager("richtextarea-eager");
}
@Test
public void textFieldDefault() {
testDefault("textfield-default");
}
@Test
public void textAreaDefault() {
testDefault("textarea-default");
}
@Test
@Ignore("No support for typing in a RichTextArea in TestBench")
public void richTextAreaDefault() {
testEager("richtextarea-default");
}
@Test
public void textFieldTimeout() {
testTimeout("textfield-timeout");
}
@Test
public void textAreaTimeout() {
testTimeout("textarea-timeout");
}
@Test
@Ignore("No support for typing in a RichTextArea in TestBench")
public void richTextAreaTimeout() {
testEager("richtextarea-timeout");
}
private void testEager(String id) {
openTestURL();
WebElement eagerTextField = findElement(By.id(id));
eagerTextField.sendKeys("f");
eagerTextField.sendKeys("o");
eagerTextField.sendKeys("o");
assertLog(id, "f", "fo", "foo");
}
private void testDefault(String id) {
openTestURL();
WebElement eagerTextField = findElement(By.id(id));
eagerTextField.sendKeys("f");
eagerTextField.sendKeys("o");
eagerTextField.sendKeys("o");
sleep(400); // Default timeout is 400ms
assertLog(id, "foo");
}
private void testTimeout(String id) {
openTestURL();
WebElement eagerTextField = findElement(By.id(id));
eagerTextField.sendKeys("foo");
sleep(1000); // Timer set to 1000ms
eagerTextField.sendKeys("baa");
sleep(1000); // Timer set to 1000ms
assertLog(id, "foo", "foobaa");
}
private void assertLog(String id, String... messages) {
for (int i = 0; i < messages.length; i++) {
String expected = "Value change event for " + id + ", new value: '"
+ messages[i] + "'";
String log = getLogRow(messages.length - 1 - i);
int tail = log.indexOf(" Cursor at");
if (tail != -1) {
log = log.substring(0, tail);
}
Assert.assertEquals(expected, log);
}
}
}