Skip to content
Snippets Groups Projects
Commit 35e60737 authored by Lukas Malte Monnerjahn's avatar Lukas Malte Monnerjahn
Browse files

Merge pull request 'OZG-6893 Bei...

Merge pull request 'OZG-6893 Bei UserProfileGrpcService::getAllByOrganisationsEinheitId nur aktive User zurückgeben' (#131) from OZG-6893-deleted-user-handling-bei-benachrichtigungen into master

Reviewed-on: https://git.ozg-sh.de/ozgcloud-app/user-manager/pulls/131


Reviewed-by: default avatarOZGCloud <ozgcloud@mgm-tp.com>
Reviewed-by: default avatarOZGCloud <ozgcloud@mgm-tp.com>
parents a6ff720d cdf7e820
No related branches found
No related tags found
No related merge requests found
...@@ -55,8 +55,9 @@ class UserRepository implements PanacheMongoRepository<User> { ...@@ -55,8 +55,9 @@ class UserRepository implements PanacheMongoRepository<User> {
EMAIL_FIELD + " like " + param(PARAM_NAME_SEARCH_BY); EMAIL_FIELD + " like " + param(PARAM_NAME_SEARCH_BY);
private static final String AND_DELETED = " and deleted = " + param(PARAM_NAME_DELETED); private static final String AND_DELETED = " and deleted = " + param(PARAM_NAME_DELETED);
private static final String AND_ORGANISATIONS_EINHEIT_ID_IN = " and " + ORGANISATIONS_EINHEIT_IDS_FIELD + " in " + param( private static final String ORGANISATIONS_EINHEIT_ID_IN_QUERY = ORGANISATIONS_EINHEIT_IDS_FIELD + " in " + param(
PARAM_NAME_ORGANISATIONS_EINHEIT_ID); PARAM_NAME_ORGANISATIONS_EINHEIT_ID);
private static final String AND_ORGANISATIONS_EINHEIT_ID_IN = " and " + ORGANISATIONS_EINHEIT_ID_IN_QUERY;
static final String UPDATE_UNSYNCED_USER_QUERY = LAST_SYNC_TIMESTAMP_FIELD + " < " + param(PARAM_NAME_TIMESTAMP); static final String UPDATE_UNSYNCED_USER_QUERY = LAST_SYNC_TIMESTAMP_FIELD + " < " + param(PARAM_NAME_TIMESTAMP);
private static String param(String paramName) { private static String param(String paramName) {
...@@ -128,8 +129,11 @@ class UserRepository implements PanacheMongoRepository<User> { ...@@ -128,8 +129,11 @@ class UserRepository implements PanacheMongoRepository<User> {
return find(DELETED_FIELD, true).project(UserIdProjection.class).stream().map(UserIdProjection::getAsString); return find(DELETED_FIELD, true).project(UserIdProjection.class).stream().map(UserIdProjection::getAsString);
} }
public Stream<User> findAllByOrganisationsEinheitId(String organisationsEinheitId) { public Stream<User> findAllActiveByOrganisationsEinheitId(String organisationsEinheitId) {
return stream(ORGANISATIONS_EINHEIT_IDS_FIELD, organisationsEinheitId); var params = Parameters.with(PARAM_NAME_ORGANISATIONS_EINHEIT_ID, organisationsEinheitId)
.and(PARAM_NAME_DELETED, false);
return find(ORGANISATIONS_EINHEIT_ID_IN_QUERY + AND_DELETED, params).stream();
} }
public void deleteById(String id) { public void deleteById(String id) {
......
...@@ -149,10 +149,10 @@ public class UserService { ...@@ -149,10 +149,10 @@ public class UserService {
} }
} }
public Stream<User> findAllUsersOfOrganisationsEinheit(String organisationsEinheitId) { public Stream<User> findAllActiveUsersOfOrganisationsEinheit(String organisationsEinheitId) {
if (StringUtils.isEmpty(organisationsEinheitId)) { if (StringUtils.isEmpty(organisationsEinheitId)) {
throw new FunctionalException(() -> String.format(MISSING_ORGANISATIONS_EINHEIT_ID_MESSAGE_TEMPLATE, organisationsEinheitId)); throw new FunctionalException(() -> String.format(MISSING_ORGANISATIONS_EINHEIT_ID_MESSAGE_TEMPLATE, organisationsEinheitId));
} }
return repository.findAllByOrganisationsEinheitId(organisationsEinheitId); return repository.findAllActiveByOrganisationsEinheitId(organisationsEinheitId);
} }
} }
\ No newline at end of file
...@@ -64,7 +64,7 @@ public class UserProfileGrpcService extends UserProfileServiceImplBase { ...@@ -64,7 +64,7 @@ public class UserProfileGrpcService extends UserProfileServiceImplBase {
public void getAllByOrganisationsEinheitId(GrpcGetAllByOrganisationsEinheitIdRequest request, public void getAllByOrganisationsEinheitId(GrpcGetAllByOrganisationsEinheitIdRequest request,
StreamObserver<GrpcGetAllByOrganisationsEinheitIdResponse> responseObserver) { StreamObserver<GrpcGetAllByOrganisationsEinheitIdResponse> responseObserver) {
var userProfiles = service.findAllUsersOfOrganisationsEinheit(request.getOrganisationsEinheitId()); var userProfiles = service.findAllActiveUsersOfOrganisationsEinheit(request.getOrganisationsEinheitId());
responseObserver.onNext(buildGrpcGetAllByOrganisationsEinheitIdResponse(userProfiles)); responseObserver.onNext(buildGrpcGetAllByOrganisationsEinheitIdResponse(userProfiles));
responseObserver.onCompleted(); responseObserver.onCompleted();
......
...@@ -571,7 +571,7 @@ class UserRepositoryITCase { ...@@ -571,7 +571,7 @@ class UserRepositoryITCase {
} }
@Nested @Nested
class TestFindAllByOrganisationsEinheitId { class TestFindAllActiveByOrganisationsEinheitId {
private static final String ORGANISATIONSEINHEIT_ID_1 = UUID.randomUUID().toString(); private static final String ORGANISATIONSEINHEIT_ID_1 = UUID.randomUUID().toString();
private static final String ORGANISATIONSEINHEIT_ID_2 = UUID.randomUUID().toString(); private static final String ORGANISATIONSEINHEIT_ID_2 = UUID.randomUUID().toString();
...@@ -591,18 +591,22 @@ class UserRepositoryITCase { ...@@ -591,18 +591,22 @@ class UserRepositoryITCase {
.clearOrganisationsEinheitIds() .clearOrganisationsEinheitIds()
.organisationsEinheitId(ORGANISATIONSEINHEIT_ID_2) .organisationsEinheitId(ORGANISATIONSEINHEIT_ID_2)
.build(); .build();
private final User deletedUser = UserTestFactory.createBuilder()
.id(null)
.clearOrganisationsEinheitIds()
.organisationsEinheitId(ORGANISATIONSEINHEIT_ID_1)
.deleted(true)
.build();
@BeforeEach @BeforeEach
void init() { void init() {
repository.deleteAll(); repository.deleteAll();
repository.persist(user1); repository.persist(user1, user2, user3, deletedUser);
repository.persist(user2);
repository.persist(user3);
} }
@Test @Test
void shouldFindUsersByOrganisationsEinheitId() { void shouldFindActiveUsersByOrganisationsEinheitId() {
var users = repository.findAllByOrganisationsEinheitId(ORGANISATIONSEINHEIT_ID_1); var users = repository.findAllActiveByOrganisationsEinheitId(ORGANISATIONSEINHEIT_ID_1);
assertThat(users).usingRecursiveFieldByFieldElementComparator().containsExactlyInAnyOrder(user1, user2); assertThat(users).usingRecursiveFieldByFieldElementComparator().containsExactlyInAnyOrder(user1, user2);
} }
......
...@@ -204,18 +204,12 @@ class UserRepositoryTest { ...@@ -204,18 +204,12 @@ class UserRepositoryTest {
} }
@Nested @Nested
class TestFindAllByOrganisationsEinheitId { class TestFindAllActiveByOrganisationsEinheitId {
@BeforeEach @BeforeEach
void mock() { void mock() {
doReturn(Stream.of(user)).when(userRepository).stream(User.ORGANISATIONS_EINHEIT_IDS_FIELD, UserTestFactory.ORGANISTATIONSEINHEITEN_ID); doReturn(Stream.of(user)).when(panacheQuery).stream();
} doReturn(panacheQuery).when(userRepository).find(anyString(), any(Parameters.class));
@Test
void shouldFindUsers() {
callRepository();
verify(userRepository).stream(User.ORGANISATIONS_EINHEIT_IDS_FIELD, UserTestFactory.ORGANISTATIONSEINHEITEN_ID);
} }
@Test @Test
...@@ -226,7 +220,7 @@ class UserRepositoryTest { ...@@ -226,7 +220,7 @@ class UserRepositoryTest {
} }
private Stream<User> callRepository() { private Stream<User> callRepository() {
return userRepository.findAllByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID); return userRepository.findAllActiveByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID);
} }
} }
} }
...@@ -413,13 +413,13 @@ class UserServiceTest { ...@@ -413,13 +413,13 @@ class UserServiceTest {
void shouldCallRepository() { void shouldCallRepository() {
callService(); callService();
verify(repository).findAllByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID); verify(repository).findAllActiveByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID);
} }
@Test @Test
void shouldReturnFoundUsers() { void shouldReturnFoundUsers() {
var users = Stream.of(UserTestFactory.create()); var users = Stream.of(UserTestFactory.create());
when(repository.findAllByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID)).thenReturn(users); when(repository.findAllActiveByOrganisationsEinheitId(UserTestFactory.ORGANISTATIONSEINHEITEN_ID)).thenReturn(users);
var returnedUsers = callService(); var returnedUsers = callService();
...@@ -427,7 +427,7 @@ class UserServiceTest { ...@@ -427,7 +427,7 @@ class UserServiceTest {
} }
private Stream<User> callService() { private Stream<User> callService() {
return service.findAllUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID); return service.findAllActiveUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID);
} }
@ParameterizedTest @ParameterizedTest
...@@ -436,7 +436,7 @@ class UserServiceTest { ...@@ -436,7 +436,7 @@ class UserServiceTest {
var expectedMessage = String.format(EXPECTED_EXCEPTION_MESSAGE_TEMPLATE, organisationsEinheitId); var expectedMessage = String.format(EXPECTED_EXCEPTION_MESSAGE_TEMPLATE, organisationsEinheitId);
assertThatExceptionOfType(FunctionalException.class) assertThatExceptionOfType(FunctionalException.class)
.isThrownBy(() -> service.findAllUsersOfOrganisationsEinheit(organisationsEinheitId)) .isThrownBy(() -> service.findAllActiveUsersOfOrganisationsEinheit(organisationsEinheitId))
.withMessageStartingWith(expectedMessage); .withMessageStartingWith(expectedMessage);
} }
} }
......
...@@ -168,7 +168,7 @@ class UserProfileGrpcServiceTest { ...@@ -168,7 +168,7 @@ class UserProfileGrpcServiceTest {
@BeforeEach @BeforeEach
void mock() { void mock() {
when(userService.findAllUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID)).thenReturn(users); when(userService.findAllActiveUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID)).thenReturn(users);
doReturn(response).when(grpcService).buildGrpcGetAllByOrganisationsEinheitIdResponse(users); doReturn(response).when(grpcService).buildGrpcGetAllByOrganisationsEinheitIdResponse(users);
} }
...@@ -176,7 +176,7 @@ class UserProfileGrpcServiceTest { ...@@ -176,7 +176,7 @@ class UserProfileGrpcServiceTest {
void shouldCallUserService() { void shouldCallUserService() {
callService(); callService();
verify(userService).findAllUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID); verify(userService).findAllActiveUsersOfOrganisationsEinheit(UserTestFactory.ORGANISTATIONSEINHEITEN_ID);
} }
@Test @Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment