diff --git a/vaadin-testbench-unit-junit5/src/test/java/com/vaadin/flow/component/grid/GridTesterSortTest.java b/vaadin-testbench-unit-junit5/src/test/java/com/vaadin/flow/component/grid/GridTesterSortTest.java index 157d27aff..f080babd0 100644 --- a/vaadin-testbench-unit-junit5/src/test/java/com/vaadin/flow/component/grid/GridTesterSortTest.java +++ b/vaadin-testbench-unit-junit5/src/test/java/com/vaadin/flow/component/grid/GridTesterSortTest.java @@ -241,4 +241,23 @@ void sortByColumn_multisort_gridIsSorted() { List.of(grid_.getRow(0), grid_.getRow(1), grid_.getRow(2))); } + + @Test + void sortByColumn_multisort_append_gridIsSorted() { + view.grid.setMultiSort(true, Grid.MultiSortPriority.APPEND); + view.first.setFirstName("G"); + view.first.setAge(20); + view.second.setFirstName("G"); + view.second.setAge(25); + view.third.setFirstName("A"); + view.third.setAge(25); + view.grid.setMultiSort(true); + + grid_.sortByColumn(0); + grid_.sortByColumn(1); + Assertions.assertIterableEquals( + List.of(view.third, view.first, view.second), + List.of(grid_.getRow(0), grid_.getRow(1), grid_.getRow(2))); + + } } diff --git a/vaadin-testbench-unit-shared/src/main/java/com/vaadin/flow/component/grid/GridTester.java b/vaadin-testbench-unit-shared/src/main/java/com/vaadin/flow/component/grid/GridTester.java index 72375c46a..2aac5ea90 100644 --- a/vaadin-testbench-unit-shared/src/main/java/com/vaadin/flow/component/grid/GridTester.java +++ b/vaadin-testbench-unit-shared/src/main/java/com/vaadin/flow/component/grid/GridTester.java @@ -538,6 +538,13 @@ public void sortByColumn(String property, SortDirection direction) { } } + private Grid.MultiSortPriority getMultiSortPriority() { + return "append".equals( + getComponent().getElement().getAttribute("multi-sort-priority")) + ? Grid.MultiSortPriority.APPEND + : Grid.MultiSortPriority.PREPEND; + } + private void doSort(SortDirection currentDirection, Grid.Column col) { List> sortOrders = new ArrayList<>( getComponent().getSortOrder()); @@ -546,10 +553,14 @@ private void doSort(SortDirection currentDirection, Grid.Column col) { } else { sortOrders.clear(); } + final Grid.MultiSortPriority multiSortPriority = getMultiSortPriority(); + final int insertIndex = multiSortPriority == Grid.MultiSortPriority.PREPEND + ? 0 + : sortOrders.size(); if (currentDirection == null) { - sortOrders.add(0, GridSortOrder.asc(col).build().get(0)); + sortOrders.add(insertIndex, GridSortOrder.asc(col).build().get(0)); } else if (currentDirection == SortDirection.ASCENDING) { - sortOrders.add(0, GridSortOrder.desc(col).build().get(0)); + sortOrders.add(insertIndex, GridSortOrder.desc(col).build().get(0)); } getComponent().sort(sortOrders); }