From a9f717aa0931a4906e8355b509bb3122fded508f Mon Sep 17 00:00:00 2001 From: Manuel Leduc Date: Wed, 28 Feb 2024 18:01:04 +0100 Subject: [PATCH] --wip-- [skip ci] --- .../ui/UsersGroupsRightsManagementIT.java | 5 ++- .../administration/test/po/GroupEditPage.java | 41 +++++++++---------- .../administration/test/po/GroupsPage.java | 12 ++---- .../main/resources/XWiki/XWikiGroupSheet.xml | 27 +++++++++--- 4 files changed, 47 insertions(+), 38 deletions(-) diff --git a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-docker/src/test/it/org/xwiki/administration/test/ui/UsersGroupsRightsManagementIT.java b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-docker/src/test/it/org/xwiki/administration/test/ui/UsersGroupsRightsManagementIT.java index 7dcaa1365b79..716ad504a4c4 100644 --- a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-docker/src/test/it/org/xwiki/administration/test/ui/UsersGroupsRightsManagementIT.java +++ b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-docker/src/test/it/org/xwiki/administration/test/ui/UsersGroupsRightsManagementIT.java @@ -19,6 +19,7 @@ */ package org.xwiki.administration.test.ui; +import org.hamcrest.CoreMatchers; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -39,6 +40,7 @@ import org.xwiki.test.ui.po.ViewPage; import org.xwiki.test.ui.po.editor.RightsEditPage; +import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.CoreMatchers.not; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -295,7 +297,8 @@ void createAndDeleteUser(TestUtils setup, TestReference testReference) ConfirmationModal confirmation = usersPage.clickDeleteUser(1); assertTrue(confirmation.getMessage().contains("Are you sure you want to proceed?")); confirmation.clickOk(); - usersPage.getUsersLiveData().getTableLayout().assertRow("User", userName); + usersPage.getUsersLiveData().getTableLayout().assertRow("User", + not(hasItem(usersPage.getUsersLiveData().getTableLayout().getWebElementTextMatcher(userName)))); // Verify that when a user is removed, they are removed from the groups they belong to. groupsPage = GroupsPage.gotoPage(); diff --git a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-pageobjects/src/main/java/org/xwiki/administration/test/po/GroupEditPage.java b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-pageobjects/src/main/java/org/xwiki/administration/test/po/GroupEditPage.java index 2c78113e8a3b..1268ade4676d 100644 --- a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-pageobjects/src/main/java/org/xwiki/administration/test/po/GroupEditPage.java +++ b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-pageobjects/src/main/java/org/xwiki/administration/test/po/GroupEditPage.java @@ -90,12 +90,9 @@ private GroupEditPage addMembersToGroup(WebElement input, String... members) public GroupEditPage removeMembers(String... members) { - for (String member : members) { - System.out.printf("Member: %s%n", member); int index = 1; for (WebElement row : getMembersTable().getRows()) { - System.out.printf("Username [%s] at index [%d]%n", getRowUserName(row), index); if (Objects.equals(getRowUserName(row), member)) { getMembersTable().clickAction(index, "delete"); break; @@ -106,25 +103,6 @@ public GroupEditPage removeMembers(String... members) return this; } - private static String getRowUserName(WebElement row) - { - List elements = - row.findElements(By.cssSelector("[data-livedata-property-id=\"member\"] .user-name")); - String rowUserName; - if (elements.isEmpty()) { - elements = - row.findElements(By.cssSelector("[data-livedata-property-id=\"member\"] .group-name")); - if (elements.isEmpty()) { - rowUserName = null; - } else { - rowUserName = elements.get(0).getText(); - } - } else { - rowUserName = elements.get(0).getText(); - } - return rowUserName; - } - public void filterMembers(String member) { this.membersLiveData.getTableLayout().filterColumn("Member", member); @@ -146,4 +124,23 @@ public TableLayoutElement getMembersTable() } return this.tableLayout; } + + private static String getRowUserName(WebElement row) + { + List elements = + row.findElements(By.cssSelector("[data-livedata-property-id=\"member\"] .user-name")); + String rowUserName; + if (elements.isEmpty()) { + elements = + row.findElements(By.cssSelector("[data-livedata-property-id=\"member\"] .group-name")); + if (elements.isEmpty()) { + rowUserName = null; + } else { + rowUserName = elements.get(0).getText(); + } + } else { + rowUserName = elements.get(0).getText(); + } + return rowUserName; + } } diff --git a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-pageobjects/src/main/java/org/xwiki/administration/test/po/GroupsPage.java b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-pageobjects/src/main/java/org/xwiki/administration/test/po/GroupsPage.java index eb7ea3703218..ae782ab052b9 100644 --- a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-pageobjects/src/main/java/org/xwiki/administration/test/po/GroupsPage.java +++ b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-test/xwiki-platform-administration-test-pageobjects/src/main/java/org/xwiki/administration/test/po/GroupsPage.java @@ -50,10 +50,6 @@ public class GroupsPage extends BasePage public GroupsPage addNewGroup(String groupName) { clickCreateGroup().createGroup(groupName); - - // The live data is refreshed. - this.groupsLiveData.getTableLayout(); - return this; } @@ -84,22 +80,20 @@ public TableLayoutElement getGroupsTable() public DeleteGroupConfirmationModal clickDeleteGroup(String groupName) { int rowNumber = getRowNumberByGroupName(groupName); - this.groupsLiveData.getTableLayout().clickAction(rowNumber, "delete"); + getGroupsTable().clickAction(rowNumber, "delete"); return new DeleteGroupConfirmationModal(); } public GroupsPage deleteGroup(String groupName) { clickDeleteGroup(groupName).clickOk(); - // The live data is refreshed. - this.groupsLiveData.getTableLayout(); return this; } public EditGroupModal clickEditGroup(String groupName) { int rowNumber = getRowNumberByGroupName(groupName); - this.groupsLiveData.getTableLayout().clickAction(rowNumber, "edit"); + getGroupsTable().clickAction(rowNumber, "edit"); return new EditGroupModal().waitUntilReady(); } @@ -107,7 +101,7 @@ public EditGroupModal clickEditGroup(String groupName) public String getMemberCount(String groupName) { int rowNumber = getRowNumberByGroupName(groupName); - return this.groupsLiveData.getTableLayout().getCell("Members", rowNumber).getText(); + return getGroupsTable().getCell("Members", rowNumber).getText(); } private int getRowNumberByGroupName(String groupName) diff --git a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/XWikiGroupSheet.xml b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/XWikiGroupSheet.xml index 3c9d2f087797..ff8a4155cfe3 100644 --- a/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/XWikiGroupSheet.xml +++ b/xwiki-platform-core/xwiki-platform-administration/xwiki-platform-administration-ui/src/main/resources/XWiki/XWikiGroupSheet.xml @@ -364,21 +364,36 @@ long - #template('colorThemeInit.vm') + /* Make sure the selectize dropdown is displayed on top of the Bootstrap modal. */ +body > .selectize-dropdown { + z-index: 1051; +} -#groupusers .type, -#groupusers .scope { - color: $theme.textSecondaryColor; +/** + * Group members live table. + */ + +#groupusers { + margin-top: 20px; + + td.cell div.view { + vertical-align: middle; + } + + [data-livedata-property-id="type"], + [data-livedata-property-id="scope"] { + color: @text-muted; + } } - CSS + LESS - 1 + 0 onDemand