You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Шапка/RBAC: текущий пользователь, гость без NPE, createButton только для ADMIN, сортировка по умолчанию email asc, автозагрузка первой страницы, плейсхолдер.
Пагинация: next со смещением 20, блокировка на короткой/пустой странице, prev без ухода в минус, null от бэка как пусто.
Поиск: email в UserFilter, имя локально, case-insensitive, пробелы как без поиска, сброс offset, пустые совпадения, null-поля без NPE.
Сортировка: email asc/desc, имя, фамилия, null-email как пустая строка, смена сортировки с offset 0.
Колонки: роль role.name() / пусто, enabled Да/Нет.
Навигация: create/details/logout/resources через verify(navigator).goTo.
Ошибки: ServiceException в errorLabel + очистка таблицы, RuntimeException -> общее сообщение, 403 прокидывает текст, очистка ошибки при следующей загрузке.
Техтребования (из ревью)
Только WaitForAsyncUtils, без Thread.sleep и без жестких timeout() где возможен event-based wait.
Русские @DisplayName, проверка пары visible+managed.
Моки UsersService/AuthService/ServiceRegistry/Navigator по образцу ui/ResourceListControllerTest.
Activity