aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/test/java/com/vaadin/tests/components/grid/GridRendererSwitchTest.java
blob: 959a83b8d296e0f83d0a6c6d99ba44fe157f3d33 (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package com.vaadin.tests.components.grid;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import org.junit.Test;

import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.elements.NotificationElement;
import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.SingleBrowserTest;

@TestCategory("xvfb-test")
public class GridRendererSwitchTest extends SingleBrowserTest {

    @Test
    public void testSwitchRenderer() {
        setDebug(true);
        openTestURL();

        GridElement grid = $(GridElement.class).first();
        assertEquals("Unexpected content in first grid cell", "Foo 0",
                grid.getCell(0, 0).getAttribute("innerHTML"));
        ButtonElement button = $(ButtonElement.class).first();
        button.click();
        assertFalse("No button in cell", grid.getCell(0, 0)
                .findElements(By.tagName("button")).isEmpty());
        grid.getCell(0, 0).findElement(By.tagName("button")).click();
        assertTrue("Notification not shown",
                isElementPresent(NotificationElement.class));
        button.click();
        assertEquals("Cell should be back to text content.", "Foo 0",
                grid.getCell(0, 0).getAttribute("innerHTML"));

        assertNoErrorNotifications();
    }

    @Test
    public void testSwitchRendererReorderColumns() {
        setDebug(true);
        openTestURL();

        GridElement grid = $(GridElement.class).first();
        assertEquals("Unexpected content in first grid cell", "Foo 0",
                grid.getCell(0, 0).getAttribute("innerHTML"));
        ButtonElement button = $(ButtonElement.class).caption("Switch").first();
        button.click();
        ButtonElement reverse = $(ButtonElement.class).caption("Reverse")
                .first();
        reverse.click();
        assertEquals("Unexpected content in first grid cell after reorder",
                "Bar 0", grid.getCell(0, 0).getAttribute("innerHTML"));

        assertFalse("No button in cell after reversing order", grid
                .getCell(0, 1).findElements(By.tagName("button")).isEmpty());
        grid.getCell(0, 1).findElement(By.tagName("button")).click();
        assertTrue("Notification not shown",
                isElementPresent(NotificationElement.class));
        reverse.click();
        assertFalse("No button in cell after restoring original order", grid
                .getCell(0, 0).findElements(By.tagName("button")).isEmpty());

        assertNoErrorNotifications();
    }

    @Test
    public void testReorderColumnsSwitchRenderer() {
        setDebug(true);
        openTestURL();

        GridElement grid = $(GridElement.class).first();
        assertEquals("Unexpected content in first grid cell", "Foo 0",
                grid.getCell(0, 0).getAttribute("innerHTML"));
        ButtonElement reverse = $(ButtonElement.class).caption("Reverse")
                .first();

        reverse.click();
        assertEquals("Unexpected content in first grid cell after reorder",
                "Bar 0", grid.getCell(0, 0).getAttribute("innerHTML"));

        ButtonElement button = $(ButtonElement.class).caption("Switch").first();
        button.click();

        assertFalse(
                "No button in cell after reversing order and changing renderer",
                grid.getCell(0, 1).findElements(By.tagName("button"))
                        .isEmpty());
        grid.getCell(0, 1).findElement(By.tagName("button")).click();
        assertTrue("Notification not shown",
                isElementPresent(NotificationElement.class));

        button.click();
        assertEquals("Cell should be back to text content.", "Foo 0",
                grid.getCell(0, 1).getAttribute("innerHTML"));

        assertNoErrorNotifications();
    }

    @Test
    public void testReorderColumnsHideAndSwitch() {
        setDebug(true);
        openTestURL();

        GridElement grid = $(GridElement.class).first();
        assertEquals("Unexpected content in first grid cell", "Foo 0",
                grid.getCell(0, 0).getAttribute("innerHTML"));
        ButtonElement reverse = $(ButtonElement.class).caption("Reverse")
                .first();

        reverse.click();
        assertEquals("Unexpected content in first grid cell after reorder",
                "Bar 0", grid.getCell(0, 0).getAttribute("innerHTML"));

        grid.toggleColumnHidden("Bar");

        ButtonElement button = $(ButtonElement.class).caption("Switch").first();
        button.click();

        assertNoErrorNotifications();

        assertFalse(
                "No button in cell after reversing order and changing renderer",
                grid.getCell(0, 0).findElements(By.tagName("button"))
                        .isEmpty());
        grid.getCell(0, 0).findElement(By.tagName("button")).click();
        assertTrue("Notification not shown",
                isElementPresent(NotificationElement.class));
    }

    @Test
    public void testSwitchRendererOfHiddenColumn() {
        setDebug(true);
        openTestURL();

        GridElement grid = $(GridElement.class).first();
        assertEquals("Unexpected content in first grid cell", "Foo 0",
                grid.getCell(0, 0).getAttribute("innerHTML"));

        grid.toggleColumnHidden("Foo");

        assertEquals("Unexpected content in first grid cell after hide",
                "Bar 0", grid.getCell(0, 0).getAttribute("innerHTML"));

        ButtonElement button = $(ButtonElement.class).caption("Switch").first();
        button.click();

        assertNoErrorNotifications();

        assertEquals(
                "Unexpected content in first grid cell after hidden renderer change",
                "Bar 0", grid.getCell(0, 0).getAttribute("innerHTML"));
    }
}