]> source.dussan.org Git - vaadin-framework.git/blob
2ba1dbc3113cdca6188cb967d1f2f153f2eb737c
[vaadin-framework.git] /
1 /*
2  * Copyright 2000-2014 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.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;
28 import com.vaadin.testbench.elements.GridElement.GridCellElement;
29 import com.vaadin.testbench.elements.NotificationElement;
30 import com.vaadin.tests.components.grid.basicfeatures.GridBasicClientFeaturesTest;
31 import com.vaadin.tests.widgetset.client.grid.GridBasicClientFeaturesWidget;
32
33 public class GridClientColumnPropertiesTest extends GridBasicClientFeaturesTest {
34
35     @Test
36     public void initialColumnWidths() {
37         openTestURL();
38
39         for (int col = 0; col < GridBasicClientFeaturesWidget.COLUMNS; col++) {
40             int width = getGridElement().getCell(0, col).getSize().getWidth();
41             if (col <= 6) {
42                 // Growing column widths
43                 int expectedWidth = 50 + col * 25;
44                 assertEquals("column " + col + " has incorrect width",
45                         expectedWidth, width);
46             }
47         }
48     }
49
50     @Test
51     public void testChangingColumnWidth() {
52         openTestURL();
53
54         selectMenuPath("Component", "Columns", "Column 0", "Width", "50px");
55         int width = getGridElement().getCell(0, 0).getSize().getWidth();
56         assertEquals(50, width);
57
58         selectMenuPath("Component", "Columns", "Column 0", "Width", "200px");
59         width = getGridElement().getCell(0, 0).getSize().getWidth();
60         assertEquals(200, width);
61
62         selectMenuPath("Component", "Columns", "Column 0", "Width", "auto");
63         int autoWidth = getGridElement().getCell(0, 0).getSize().getWidth();
64         assertLessThan("Automatic sizing should've shrunk the column",
65                 autoWidth, width);
66     }
67
68     @Test
69     public void testFrozenColumns() {
70         openTestURL();
71
72         assertFalse(cellIsFrozen(0, 0));
73         assertFalse(cellIsFrozen(0, 1));
74
75         selectMenuPath("Component", "State", "Frozen column count", "1 columns");
76
77         assertTrue(cellIsFrozen(1, 0));
78         assertFalse(cellIsFrozen(1, 1));
79
80         selectMenuPath("Component", "State", "Selection mode", "multi");
81
82         assertTrue(cellIsFrozen(1, 1));
83         assertFalse(cellIsFrozen(1, 2));
84
85         selectMenuPath("Component", "State", "Frozen column count", "0 columns");
86
87         assertTrue(cellIsFrozen(1, 0));
88         assertFalse(cellIsFrozen(1, 1));
89
90         selectMenuPath("Component", "State", "Frozen column count",
91                 "-1 columns");
92
93         assertFalse(cellIsFrozen(1, 0));
94     }
95
96     @Test
97     public void testBrokenRenderer() {
98         setDebug(true);
99         openTestURL();
100
101         GridElement gridElement = getGridElement();
102
103         // Scroll first row out of view
104         gridElement.getRow(50);
105
106         // Enable broken renderer for the first row
107         selectMenuPath("Component", "Columns", "Column 0", "Broken renderer");
108
109         // Shouldn't have an error notification yet
110         assertFalse("Notification was present",
111                 isElementPresent(NotificationElement.class));
112
113         // Scroll broken row into view and enjoy the chaos
114         gridElement.getRow(0);
115
116         assertTrue("Notification was not present",
117                 isElementPresent(NotificationElement.class));
118
119         assertFalse("Text in broken cell should have old value",
120                 "(0, 0)".equals(gridElement.getCell(0, 0).getText()));
121
122         assertEquals("Neighbour cell should be updated", "(0, 1)", gridElement
123                 .getCell(0, 1).getText());
124
125         assertEquals("Neighbour cell should be updated", "(1, 0)", gridElement
126                 .getCell(1, 0).getText());
127     }
128
129     @Test
130     public void testColumnWidths_onColumnReorder_columnWidthsKeptTheSame() {
131         // given
132         openTestURL();
133         GridElement gridElement = getGridElement();
134         List<GridCellElement> headerCells = gridElement.getHeaderCells(0);
135
136         final List<Integer> columnWidths = new ArrayList<Integer>();
137         for (GridCellElement cell : headerCells) {
138             columnWidths.add(cell.getSize().getWidth());
139         }
140
141         // when
142         selectMenuPath("Component", "State", "Reverse grid columns");
143
144         // then
145         gridElement = getGridElement();
146         headerCells = gridElement.getHeaderCells(0);
147         final int size = headerCells.size();
148         // skip last column since there is a bug in the width of the last column
149         for (int i = 0; i < size - 1; i++) {
150             assertEquals(
151                     "Column widths don't match after reset, index after flip "
152                             + i,
153                     columnWidths.get(i),
154                     Integer.valueOf(headerCells.get(size - 1 - i).getSize()
155                             .getWidth()));
156         }
157
158     }
159
160     private boolean cellIsFrozen(int row, int col) {
161         return getGridElement().getCell(row, col).isFrozen();
162     }
163 }