aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/test/java/com/vaadin/tests/components/javascriptcomponent/StateChangeCounterTest.java
blob: 9500265bb376a470f8373eab0d1bd5d0de7a90f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.vaadin.tests.components.javascriptcomponent;

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import org.junit.Test;
import org.openqa.selenium.WebElement;

import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.tests.tb3.SingleBrowserTest;

public class StateChangeCounterTest extends SingleBrowserTest {
    @Test
    public void testStateChanges() {
        openTestURL();

        // Expecting message from initial state change
        assertMessages("State change, counter = 0");

        $(ButtonElement.class).caption("Mark as dirty").first().click();
        // Shouldn't change anything
        assertMessages("State change, counter = 0");

        $(ButtonElement.class).caption("Send RPC").first().click();

        // Should only add an RPC message, no state change message
        assertMessages("State change, counter = 0", "RPC");

        $(ButtonElement.class).caption("Change state").first().click();

        // Should add one message, about a new state change
        assertMessages("State change, counter = 0", "RPC",
                "State change, counter = 1");
    }

    private void assertMessages(String... expectedMessages) {
        List<String> actualMessages = findElements(By.className("logRow"))
                .stream().map(WebElement::getText).collect(Collectors.toList());
        assertEquals(Arrays.asList(expectedMessages), actualMessages);
    }
}