]> source.dussan.org Git - vaadin-framework.git/blob
a0ca71482426652598791202d761020d0b718782
[vaadin-framework.git] /
1 /*
2  * Copyright 2000-2016 Vaadin Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */
16 package com.vaadin.v7.tests.components.grid.basicfeatures.client;
17
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.assertFalse;
20 import static org.junit.Assert.assertTrue;
21
22 import java.util.ArrayList;
23 import java.util.List;
24
25 import org.junit.Test;
26
27 import com.vaadin.testbench.elements.GridElement.GridCellElement;
28 import com.vaadin.tests.widgetset.client.v7.grid.GridBasicClientFeaturesWidget;
29 import com.vaadin.testbench.elements.NotificationElement;
30 import com.vaadin.v7.testbench.customelements.GridElement;
31 import com.vaadin.v7.tests.components.grid.basicfeatures.GridBasicClientFeaturesTest;
32
33 public class GridClientColumnPropertiesTest
34         extends GridBasicClientFeaturesTest {
35
36     @Test
37     public void initialColumnWidths() {
38         openTestURL();
39
40         for (int col = 0; col < GridBasicClientFeaturesWidget.COLUMNS; col++) {
41             int width = getGridElement().getCell(0, col).getSize().getWidth();
42             if (col <= 6) {
43                 // Growing column widths
44                 int expectedWidth = 50 + col * 25;
45                 assertEquals("column " + col + " has incorrect width",
46                         expectedWidth, width);
47             }
48         }
49     }
50
51     @Test
52     public void testChangingColumnWidth() {
53         openTestURL();
54
55         selectMenuPath("Component", "Columns", "Column 0", "Width", "50px");
56         int width = getGridElement().getCell(0, 0).getSize().getWidth();
57         assertEquals(50, width);
58
59         selectMenuPath("Component", "Columns", "Column 0", "Width", "200px");
60         width = getGridElement().getCell(0, 0).getSize().getWidth();
61         assertEquals(200, width);
62
63         selectMenuPath("Component", "Columns", "Column 0", "Width", "auto");
64         int autoWidth = getGridElement().getCell(0, 0).getSize().getWidth();
65         assertLessThan("Automatic sizing should've shrunk the column",
66                 autoWidth, width);
67     }
68
69     @Test
70     public void testFrozenColumns() {
71         openTestURL();
72
73         assertFalse(cellIsFrozen(0, 0));
74         assertFalse(cellIsFrozen(0, 1));
75
76         selectMenuPath("Component", "State", "Frozen column count",
77                 "1 columns");
78
79         assertTrue(cellIsFrozen(1, 0));
80         assertFalse(cellIsFrozen(1, 1));
81
82         selectMenuPath("Component", "State", "Selection mode", "multi");
83
84         assertTrue(cellIsFrozen(1, 1));
85         assertFalse(cellIsFrozen(1, 2));
86
87         selectMenuPath("Component", "State", "Frozen column count",
88                 "0 columns");
89
90         assertTrue(cellIsFrozen(1, 0));
91         assertFalse(cellIsFrozen(1, 1));
92
93         selectMenuPath("Component", "State", "Frozen column count",
94                 "-1 columns");
95
96         assertFalse(cellIsFrozen(1, 0));
97     }
98
99     @Test
100     public void testFrozenColumns_columnsReordered_frozenColumnsKept() {
101         openTestURL();
102
103         selectMenuPath("Component", "State", "Frozen column count",
104                 "2 columns");
105
106         assertTrue(cellIsFrozen(1, 0));
107         assertTrue(cellIsFrozen(1, 1));
108         assertFalse(cellIsFrozen(1, 2));
109
110         selectMenuPath("Component", "State", "Reverse grid columns");
111
112         assertTrue(cellIsFrozen(1, 0));
113         assertTrue(cellIsFrozen(1, 1));
114         assertFalse(cellIsFrozen(1, 2));
115     }
116
117     @Test
118     public void testBrokenRenderer() {
119         setDebug(true);
120         openTestURL();
121
122         GridElement gridElement = getGridElement();
123
124         // Scroll first row out of view
125         gridElement.getRow(50);
126
127         // Enable broken renderer for the first row
128         selectMenuPath("Component", "Columns", "Column 0", "Broken renderer");
129
130         // Shouldn't have an error notification yet
131         assertFalse("Notification was present",
132                 isElementPresent(NotificationElement.class));
133
134         // Scroll broken row into view and enjoy the chaos
135         gridElement.getRow(0);
136
137         assertTrue("Notification was not present",
138                 isElementPresent(NotificationElement.class));
139
140         assertFalse("Text in broken cell should have old value",
141                 "(0, 0)".equals(gridElement.getCell(0, 0).getText()));
142
143         assertEquals("Neighbour cell should be updated", "(0, 1)",
144                 gridElement.getCell(0, 1).getText());
145
146         assertEquals("Neighbour cell should be updated", "(1, 0)",
147                 gridElement.getCell(1, 0).getText());
148     }
149
150     @Test
151     public void testColumnWidths_onColumnReorder_columnWidthsKeptTheSame() {
152         // given
153         openTestURL();
154         GridElement gridElement = getGridElement();
155         List<GridCellElement> headerCells = gridElement.getHeaderCells(0);
156
157         final List<Integer> columnWidths = new ArrayList<>();
158         for (GridCellElement cell : headerCells) {
159             columnWidths.add(cell.getSize().getWidth());
160         }
161
162         // when
163         selectMenuPath("Component", "State", "Reverse grid columns");
164
165         // then
166         gridElement = getGridElement();
167         headerCells = gridElement.getHeaderCells(0);
168         final int size = headerCells.size();
169         for (int i = 0; i < size; i++) {
170             // Avoid issues with inaccuracies regarding subpixels.
171             assertEquals(
172                     "Column widths don't match after reset, index after flip "
173                             + i,
174                     columnWidths.get(i),
175                     headerCells.get(size - 1 - i).getSize().getWidth(), 1.0d);
176         }
177
178     }
179
180     private boolean cellIsFrozen(int row, int col) {
181         return getGridElement().getCell(row, col).isFrozen();
182     }
183 }