Skip to content

Commit ece5cff

Browse files
authored
fix: Attach rendered component (#1967)
Fixes #1966
1 parent 4280a58 commit ece5cff

File tree

3 files changed

+28
-5
lines changed

3 files changed

+28
-5
lines changed

vaadin-testbench-unit-junit5/src/test/java/com/vaadin/flow/component/grid/BasicGridTesterTest.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
package com.vaadin.flow.component.grid;
1010

1111
import com.vaadin.flow.component.Component;
12+
import com.vaadin.flow.component.button.Button;
13+
import com.vaadin.flow.component.notification.Notification;
1214
import com.vaadin.flow.router.RouteConfiguration;
1315
import com.vaadin.testbench.unit.UIUnitTest;
1416
import com.vaadin.testbench.unit.ViewPackages;
@@ -165,6 +167,17 @@ void basicGrid_doubleClick() {
165167

166168
}
167169

170+
@Test
171+
void getCellComponent_columnByKey_canClickAButton() {
172+
final Component cellComponent = test(view.basicGrid).getCellComponent(1,
173+
BasicGridView.BUTTON_KEY);
174+
Assertions.assertInstanceOf(Button.class, cellComponent);
175+
var button = (Button) cellComponent;
176+
test(button).click();
177+
var notification = $(Notification.class).last();
178+
Assertions.assertEquals("Clicked!", test(notification).getText());
179+
}
180+
168181
@Test
169182
void getCellComponent_columnByKey_returnsInstantiatedComponent() {
170183
final Component cellComponent = test(view.basicGrid).getCellComponent(1,
@@ -206,12 +219,12 @@ void basicGrid_reorderColumns() {
206219

207220
// person 1
208221
Assertions.assertEquals("Jorma",
209-
test(view.basicGrid).getCellText(0, 3));
210-
Assertions.assertEquals("46", test(view.basicGrid).getCellText(0, 2));
222+
test(view.basicGrid).getCellText(0, 4));
223+
Assertions.assertEquals("46", test(view.basicGrid).getCellText(0, 3));
211224

212225
// person 2
213-
Assertions.assertEquals("Maya", test(view.basicGrid).getCellText(1, 3));
214-
Assertions.assertEquals("18", test(view.basicGrid).getCellText(1, 2));
226+
Assertions.assertEquals("Maya", test(view.basicGrid).getCellText(1, 4));
227+
Assertions.assertEquals("18", test(view.basicGrid).getCellText(1, 3));
215228
}
216229

217230
@Test

vaadin-testbench-unit-junit5/src/test/java/com/vaadin/flow/component/grid/BasicGridView.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
import com.vaadin.flow.component.Component;
1212
import com.vaadin.flow.component.HasComponents;
13+
import com.vaadin.flow.component.button.Button;
14+
import com.vaadin.flow.component.notification.Notification;
1315
import com.vaadin.flow.component.Tag;
1416
import com.vaadin.flow.data.renderer.ComponentRenderer;
1517
import com.vaadin.flow.data.renderer.LitRenderer;
@@ -24,6 +26,7 @@ public class BasicGridView extends Component implements HasComponents {
2426
static final String AGE_KEY = "Age";
2527
static final String SUBSCRIBER_KEY = "Subscriber";
2628
static final String DECEASED_KEY = "Deceased";
29+
static final String BUTTON_KEY = "Button";
2730

2831
final Grid<Person> basicGrid;
2932
final Person person1;
@@ -48,6 +51,9 @@ public BasicGridView() {
4851
basicGrid.addColumn(deceasedRenderer())
4952
.setKey(DECEASED_KEY)
5053
.setHeader("Deceased");
54+
basicGrid.addComponentColumn(person -> new Button("Click", e -> Notification.show("Clicked!")))
55+
.setKey(BUTTON_KEY)
56+
.setHeader("Button");
5157

5258
add(basicGrid);
5359

vaadin-testbench-unit-shared/src/main/java/com/vaadin/flow/component/grid/GridTester.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,12 @@ public Component getCellComponent(int row, String columnName) {
307307
private Component getRendererItem(int row, Grid.Column<Y> yColumn) {
308308
if (yColumn.getRenderer() instanceof ComponentRenderer) {
309309
final Y item = getRow(row);
310-
return ((ComponentRenderer<?, Y>) yColumn.getRenderer())
310+
var component = ((ComponentRenderer<?, Y>) yColumn.getRenderer())
311311
.createComponent(item);
312+
if (component != null) {
313+
getComponent().getElement().appendChild(component.getElement());
314+
}
315+
return component;
312316
}
313317
throw new IllegalArgumentException(
314318
"Target column doesn't have a ComponentRenderer.");

0 commit comments

Comments
 (0)