diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/explorer/view/ExplorerViewControllerIntegrationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/explorer/view/ExplorerViewControllerIntegrationTests.java index 62a5d3aef..39ac67ae9 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/explorer/view/ExplorerViewControllerIntegrationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/explorer/view/ExplorerViewControllerIntegrationTests.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.UUID; import java.util.function.Consumer; import java.util.function.Function; @@ -113,11 +114,11 @@ private record TreeItemMatcher(Function treeItemFinder, Predicat treeItem -> treeItem.getLabel().toString().equals(" ")); private final TreeItemMatcher userLibraryPackageRW = new TreeItemMatcher( - tree -> tree.getChildren().get(0).getChildren().get(2).getChildren().get(0).getChildren().get(0), + tree -> this.findTreeItem(tree, WithUserLibrariesTestProjectData.SemanticIds.RW_USER_LIBRARY_PACKAGE_ID).orElseThrow(), treeItem -> treeItem.getLabel().toString().equals("Package2")); private final TreeItemMatcher userLibraryPackageRO = new TreeItemMatcher( - tree -> tree.getChildren().get(0).getChildren().get(2).getChildren().get(1).getChildren().get(0), + tree -> this.findTreeItem(tree, WithUserLibrariesTestProjectData.SemanticIds.RO_USER_LIBRARY_PACKAGE_ID).orElseThrow(), treeItem -> treeItem.getLabel().toString().equals("Package3")); private final TreeItemMatcher view1GVRepresentation = new TreeItemMatcher( @@ -283,8 +284,7 @@ public void testImportedReadWriteUserLibraryEdition() { }; Consumer updatedExplorerView = assertRefreshedTreeThat(tree -> { - var package2TreeItem = tree.getChildren().get(0).getChildren().get(2).getChildren().get(0).getChildren().get(0); - assertThat(package2TreeItem.getId()).isEqualTo(WithUserLibrariesTestProjectData.SemanticIds.RW_USER_LIBRARY_PACKAGE_ID); + var package2TreeItem = this.findTreeItem(tree, WithUserLibrariesTestProjectData.SemanticIds.RW_USER_LIBRARY_PACKAGE_ID).orElseThrow(); assertThat(package2TreeItem.getChildren()).size().isEqualTo(2); assertThat(package2TreeItem.getChildren().get(1).getKind()).contains("AcceptActionUsage"); }); @@ -451,6 +451,23 @@ private Consumer getTreeRefreshedEventPayloadMatcher(List findTreeItem(Tree tree, String treeItemId) { + return tree.getChildren().stream() + .map(child -> this.findTreeItem(child, treeItemId)) + .flatMap(Optional::stream) + .findFirst(); + } + + private Optional findTreeItem(TreeItem treeItem, String treeItemId) { + if (treeItemId.equals(treeItem.getId())) { + return Optional.of(treeItem); + } + return treeItem.getChildren().stream() + .map(child -> this.findTreeItem(child, treeItemId)) + .flatMap(Optional::stream) + .findFirst(); + } + private Runnable triggerDirectEditTreeItemLabel(String editingContextId, String treeId, UUID treeItemId, String expectedLabel) { return () -> { Map variables = Map.of( diff --git a/backend/services/syson-tree-services/src/main/java/org/eclipse/syson/tree/explorer/fragments/UserLibrariesDirectory.java b/backend/services/syson-tree-services/src/main/java/org/eclipse/syson/tree/explorer/fragments/UserLibrariesDirectory.java index 80506b293..462a8db8a 100644 --- a/backend/services/syson-tree-services/src/main/java/org/eclipse/syson/tree/explorer/fragments/UserLibrariesDirectory.java +++ b/backend/services/syson-tree-services/src/main/java/org/eclipse/syson/tree/explorer/fragments/UserLibrariesDirectory.java @@ -13,6 +13,7 @@ package org.eclipse.syson.tree.explorer.fragments; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Objects; import java.util.UUID; @@ -95,6 +96,7 @@ public List getChildren(IEditingContext editingContext, List this.filterService.isUserLibrary(editingContext, resource)) + .sorted(Comparator.comparing(resource -> Objects.toString(resource.getURI(), ""))) .forEach(result::add); } return result;