Skip to content
Snippets Groups Projects
Commit 5298233e authored by OZGCloud's avatar OZGCloud
Browse files

OZG-3539 OZG-6785 extend controller to new settings

parent e7cfac21
No related branches found
No related tags found
No related merge requests found
......@@ -25,8 +25,6 @@ package de.ozgcloud.user.settings;
import java.util.Objects;
import de.ozgcloud.user.common.errorhandling.AccessForbiddenException;
import de.ozgcloud.user.common.errorhandling.FunctionalException;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.PATCH;
......@@ -43,6 +41,8 @@ import org.jboss.resteasy.reactive.common.util.RestMediaType;
import de.ozgcloud.user.User;
import de.ozgcloud.user.UserService;
import de.ozgcloud.user.common.errorhandling.AccessForbiddenException;
import de.ozgcloud.user.common.errorhandling.FunctionalException;
import io.quarkus.hal.HalEntityWrapper;
@Path(UserSettingsResource.USER_PATH)
......@@ -86,7 +86,7 @@ public class UserSettingsResource {
throw new FunctionalException(() -> "Request Body missing.");
}
return userSettingsService.updateByUserId(userSettings, userId)
return userSettingsService.updateByUserId(userId, userSettings)
.map(updatedSettings -> resourceAssembler.toResource(updatedSettings, userId, userManagerUrl))
.orElseThrow(() -> new FunctionalException(() -> "Invalid user id"));
}
......
......@@ -40,8 +40,9 @@ class UserSettingsService {
@Inject
UserSettingsRepository repository;
public Optional<UserSettings> updateByUserId(UserSettings userSettings, String userId) {
return repository.updateByUserId(userId, userSettings);
public Optional<UserSettings> updateByUserId(String userId, UserSettings newSettings) {
var settings = newSettings.toBuilder().vorgangCreated(newSettings.getNotificationsSendFor() == NotificationsSendFor.ALL).build();
return repository.updateByUserId(userId, settings);
}
public UserSettings getByUserId(String userId) {
......
......@@ -168,7 +168,7 @@ class UserSettingsResourceTest {
@BeforeEach
void mockAccess() {
doNothing().when(resource).checkUserAccess(anyString());
when(userSettingsService.updateByUserId(any(UserSettings.class), anyString())).thenReturn(Optional.of(updatedUserSettings));
when(userSettingsService.updateByUserId(anyString(), any(UserSettings.class))).thenReturn(Optional.of(updatedUserSettings));
}
@Test
......@@ -184,7 +184,7 @@ class UserSettingsResourceTest {
when(resourceAssembler.toResource(any(), anyString(), anyString())).thenReturn(new HalEntityWrapper(null));
resource.updateUserSettings(USER_ID, userSettings);
verify(userSettingsService).updateByUserId(userSettings, USER_ID);
verify(userSettingsService).updateByUserId(USER_ID, userSettings);
}
@Test
......
......@@ -66,7 +66,7 @@ class UserSettingsServiceITCase {
.notificationsSendFor(NotificationsSendFor.ALL)
.build();
var savedUserSettings = service.updateByUserId(userSettingsToSave, UserTestFactory.ID.toHexString());
var savedUserSettings = service.updateByUserId(UserTestFactory.ID.toHexString(), userSettingsToSave);
assertThat(savedUserSettings)
.isPresent()
......
......@@ -33,6 +33,8 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
......@@ -56,11 +58,54 @@ class UserSettingsServiceTest {
private final UserSettings userSettings = UserSettingsTestFactory.create();
private final String userId = UUID.randomUUID().toString();
@Captor
private ArgumentCaptor<UserSettings> userSettingsArgumentCaptor;
@Test
void shouldCallRepository() {
service.updateByUserId(userSettings, userId);
service.updateByUserId(userId, userSettings);
verify(repository).updateByUserId(eq(userId), any(UserSettings.class));
}
verify(repository).updateByUserId(userId, userSettings);
@Test
void shouldSetVorgangCreated() {
service.updateByUserId(userId, userSettings.toBuilder().notificationsSendFor(NotificationsSendFor.ALL).vorgangCreated(false).build());
verify(repository).updateByUserId(eq(userId), userSettingsArgumentCaptor.capture());
assertThat(userSettingsArgumentCaptor.getValue())
.extracting(
UserSettings::getNotificationsSendFor,
UserSettings::isVorgangCreated,
UserSettings::isVorgangAssignedToUser,
UserSettings::isPostfachNachrichtFromAntragsteller,
UserSettings::isWiedervorlageOverdue)
.containsExactly(
NotificationsSendFor.ALL,
true,
UserSettingsTestFactory.VORGANG_ASSIGNED_TO_USER,
UserSettingsTestFactory.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER,
UserSettingsTestFactory.WIEDERVORLAGE_OVERDUE);
}
@Test
void shouldUnsetVorgangCreated() {
service.updateByUserId(userId, userSettings.toBuilder().notificationsSendFor(NotificationsSendFor.NONE).vorgangCreated(true).build());
verify(repository).updateByUserId(eq(userId), userSettingsArgumentCaptor.capture());
assertThat(userSettingsArgumentCaptor.getValue())
.extracting(
UserSettings::getNotificationsSendFor,
UserSettings::isVorgangCreated,
UserSettings::isVorgangAssignedToUser,
UserSettings::isPostfachNachrichtFromAntragsteller,
UserSettings::isWiedervorlageOverdue)
.containsExactly(
NotificationsSendFor.NONE,
false,
UserSettingsTestFactory.VORGANG_ASSIGNED_TO_USER,
UserSettingsTestFactory.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER,
UserSettingsTestFactory.WIEDERVORLAGE_OVERDUE);
}
}
......
......@@ -26,6 +26,10 @@ package de.ozgcloud.user.settings;
public class UserSettingsTestFactory {
public static final NotificationsSendFor NOTIFICATIONS_SEND_FOR = NotificationsSendFor.NONE;
public static final boolean VORGANG_CREATED = false;
public static final boolean VORGANG_ASSIGNED_TO_USER = true;
public static final boolean POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER = true;
public static final boolean WIEDERVORLAGE_OVERDUE = true;
public static UserSettings create() {
return createBuilder().build();
......@@ -33,6 +37,10 @@ public class UserSettingsTestFactory {
public static UserSettings.UserSettingsBuilder createBuilder() {
return UserSettings.builder()
.notificationsSendFor(NOTIFICATIONS_SEND_FOR);
.notificationsSendFor(NOTIFICATIONS_SEND_FOR)
.vorgangCreated(VORGANG_CREATED)
.vorgangAssignedToUser(VORGANG_ASSIGNED_TO_USER)
.postfachNachrichtFromAntragsteller(POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER)
.wiedervorlageOverdue(WIEDERVORLAGE_OVERDUE);
}
}
\ 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