Skip to content
Snippets Groups Projects
Commit 40a6a4ba authored by OZGCloud's avatar OZGCloud
Browse files

OZG-3539 OZG-6786 set default user settings for new users

parent 5298233e
Branches
Tags
No related merge requests found
...@@ -23,19 +23,22 @@ ...@@ -23,19 +23,22 @@
*/ */
package de.ozgcloud.user; package de.ozgcloud.user;
import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Stream; import java.util.stream.Stream;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import de.ozgcloud.common.logging.OzgCloudLogging; import de.ozgcloud.common.logging.OzgCloudLogging;
import de.ozgcloud.user.common.errorhandling.ResourceNotFoundException; import de.ozgcloud.user.common.errorhandling.ResourceNotFoundException;
import de.ozgcloud.user.common.errorhandling.TechnicalException; import de.ozgcloud.user.common.errorhandling.TechnicalException;
import de.ozgcloud.user.keycloak.KeycloakUserRemoteService; import de.ozgcloud.user.keycloak.KeycloakUserRemoteService;
import de.ozgcloud.user.settings.UserSettings;
import io.smallrye.mutiny.Uni; import io.smallrye.mutiny.Uni;
import io.smallrye.mutiny.infrastructure.Infrastructure; import io.smallrye.mutiny.infrastructure.Infrastructure;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
@ApplicationScoped @ApplicationScoped
@OzgCloudLogging @OzgCloudLogging
...@@ -48,10 +51,17 @@ public class UserService { ...@@ -48,10 +51,17 @@ public class UserService {
public User save(User user) { public User save(User user) {
findUser(user).ifPresentOrElse(persistedUser -> repository.updateUser(addIdUser(user, persistedUser)), findUser(user).ifPresentOrElse(persistedUser -> repository.updateUser(addIdUser(user, persistedUser)),
() -> repository.persist(user)); () -> saveNewUser(user));
return repository.refresh(user); return repository.refresh(user);
} }
void saveNewUser(User user) {
if (Objects.isNull(user.getUserSettings())) {
user.setUserSettings(UserSettings.createDefault());
}
repository.persist(user);
}
public Stream<User> findUsers(FindUserProfilesQuery query) { public Stream<User> findUsers(FindUserProfilesQuery query) {
return repository.findUsers(query.getSearchBy(), query.getLimit()); return repository.findUsers(query.getSearchBy(), query.getLimit());
} }
...@@ -79,8 +89,7 @@ public class UserService { ...@@ -79,8 +89,7 @@ public class UserService {
} }
private Optional<User> findUser(User user) { private Optional<User> findUser(User user) {
return repository.findByExternalId(user.getExternalId()) return repository.findByExternalId(user.getExternalId()).or(() -> findByEmail(user.getEmail()));
.or(() -> findByEmail(user.getEmail()));
} }
private Optional<User> findByEmail(String email) { private Optional<User> findByEmail(String email) {
......
...@@ -54,4 +54,13 @@ public class UserSettings { ...@@ -54,4 +54,13 @@ public class UserSettings {
public UserSettings(final NotificationsSendFor notificationsSendFor) { public UserSettings(final NotificationsSendFor notificationsSendFor) {
this(notificationsSendFor, notificationsSendFor == NotificationsSendFor.ALL, true, true, true); this(notificationsSendFor, notificationsSendFor == NotificationsSendFor.ALL, true, true, true);
} }
public static UserSettings createDefault() {
return UserSettings.builder()
.notificationsSendFor(NotificationsSendFor.NONE)
.vorgangCreated(false)
.vorgangAssignedToUser(true)
.postfachNachrichtFromAntragsteller(true)
.wiedervorlageOverdue(true).build();
}
} }
...@@ -45,6 +45,8 @@ import org.mockito.Spy; ...@@ -45,6 +45,8 @@ import org.mockito.Spy;
import de.ozgcloud.user.common.errorhandling.ResourceNotFoundException; import de.ozgcloud.user.common.errorhandling.ResourceNotFoundException;
import de.ozgcloud.user.common.errorhandling.TechnicalException; import de.ozgcloud.user.common.errorhandling.TechnicalException;
import de.ozgcloud.user.keycloak.KeycloakUserRemoteService; import de.ozgcloud.user.keycloak.KeycloakUserRemoteService;
import de.ozgcloud.user.settings.NotificationsSendFor;
import de.ozgcloud.user.settings.UserSettings;
class UserServiceTest { class UserServiceTest {
...@@ -365,4 +367,36 @@ class UserServiceTest { ...@@ -365,4 +367,36 @@ class UserServiceTest {
assertThatNoException().isThrownBy(() -> service.assertInactiveUser(user.build())); assertThatNoException().isThrownBy(() -> service.assertInactiveUser(user.build()));
} }
} }
@Nested
class TestSaveNewUser {
@Test
void shouldSetDefaultUserSettings() {
var user = UserTestFactory.createBuilder().userSettings(null).build();
service.saveNewUser(user);
assertThat(user.getUserSettings()).usingRecursiveComparison().isEqualTo(UserSettings.createDefault());
}
@Test
void shouldNotSetDefaultUserSettings() {
var settings = UserSettings.builder().notificationsSendFor(NotificationsSendFor.ALL).build();
var user = createBuilder().userSettings(settings).build();
service.saveNewUser(user);
assertThat(user.getUserSettings()).isEqualTo(settings);
}
@Test
void shouldPersistUser() {
var user = UserTestFactory.create();
service.saveNewUser(user);
verify(repository).persist(user);
}
}
} }
\ No newline at end of file
...@@ -24,4 +24,15 @@ class UserSettingsTest { ...@@ -24,4 +24,15 @@ class UserSettingsTest {
} }
} }
@Nested
class TestCreateDefault {
@Test
void shouldHaveDefaultSettings() {
assertThat(UserSettings.createDefault()).usingRecursiveComparison().isEqualTo(
UserSettings.builder().notificationsSendFor(NotificationsSendFor.NONE).vorgangCreated(false).vorgangAssignedToUser(true)
.postfachNachrichtFromAntragsteller(true).wiedervorlageOverdue(true).build());
}
}
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment