Skip to content
Snippets Groups Projects
Commit 89d43b88 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6721 OZG-6914 Call repository in SettingsService

parent 42597280
No related branches found
No related tags found
No related merge requests found
Showing
with 225 additions and 57 deletions
package de.ozgcloud.admin.common.organisationseinheit;
import java.util.stream.Stream;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.stereotype.Repository;
import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheit;
@Repository
interface OrganisationsEinheitSettingsRepository extends MongoRepository<OrganisationsEinheit, String> {
@Query("{'settings': { $nin: [null,{}] } }")
Stream<OrganisationsEinheitWithSettings> getSettings();
}
package de.ozgcloud.admin.common.organisationseinheit;
import java.util.Map;
import java.util.stream.Stream;
import org.springframework.stereotype.Service;
import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class OrganisationsEinheitSettingsService {
private final OrganisationsEinheitSettingsRepository settingsRepository;
public Map<String, OrganisationsEinheitSettings> getSettings() {
return getSettingsMap(settingsRepository.getSettings());
}
Map<String, OrganisationsEinheitSettings> getSettingsMap(Stream<OrganisationsEinheitWithSettings> settings) {
return Map.of();
}
}
package de.ozgcloud.admin.organisationseinheit; package de.ozgcloud.admin.common.organisationseinheit;
import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings;
interface OrganisationsEinheitWithSettings { interface OrganisationsEinheitWithSettings {
......
...@@ -27,7 +27,4 @@ interface OrganisationsEinheitRepository extends MongoRepository<OrganisationsEi ...@@ -27,7 +27,4 @@ interface OrganisationsEinheitRepository extends MongoRepository<OrganisationsEi
@Query("{'syncResult': { $eq: null }}") @Query("{'syncResult': { $eq: null }}")
Stream<OrganisationsEinheit> findAllWithoutSyncResult(); Stream<OrganisationsEinheit> findAllWithoutSyncResult();
@Query("{'settings': { $nin: [null,{}] } }")
Stream<OrganisationsEinheitWithSettings> getSettings();
} }
...@@ -11,7 +11,6 @@ class SettingService { ...@@ -11,7 +11,6 @@ class SettingService {
private static final String POSTFACH_SETTING_ITEM_NAME = "Postfach"; private static final String POSTFACH_SETTING_ITEM_NAME = "Postfach";
private final SettingRepository repository; private final SettingRepository repository;
private final SettingMapper mapper; private final SettingMapper mapper;
public AlfaSettingDTO getAlfaSettingDTO() { public AlfaSettingDTO getAlfaSettingDTO() {
......
package de.ozgcloud.admin.common.organisationseinheit;
import static org.assertj.core.api.Assertions.*;
import java.util.UUID;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import com.thedeanda.lorem.LoremIpsum;
import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheit;
import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings;
import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettingsTestFactory;
import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory;
import de.ozgcloud.common.test.DbInitializer;
@DataMongoTest
@ContextConfiguration(initializers = { DbInitializer.class }, classes = { OrganisationsEinheitSettingsRepository.class, MongoOperations.class })
@ActiveProfiles({ "itcase", "with_db" })
@EnableAutoConfiguration
class OrganisationsEinheitSettingsRepositoryITCase {
@Autowired
private OrganisationsEinheitSettingsRepository repository;
@Autowired
private MongoOperations operations;
@BeforeEach
void clearDatabase() {
operations.dropCollection(OrganisationsEinheit.class);
}
@Nested
class TestGetSettings {
private final OrganisationsEinheit withSignatur1 = OrganisationsEinheitTestFactory.createBuilder()
.id(UUID.randomUUID().toString())
.organisationsEinheitId(UUID.randomUUID().toString())
.settings(withRandomSignatur())
.build();
private final OrganisationsEinheit withSignatur2 = OrganisationsEinheitTestFactory.createBuilder()
.id(UUID.randomUUID().toString())
.organisationsEinheitId(UUID.randomUUID().toString())
.settings(withRandomSignatur())
.build();
private final OrganisationsEinheit withNullSettings = OrganisationsEinheitTestFactory.createBuilder()
.id(UUID.randomUUID().toString())
.organisationsEinheitId(UUID.randomUUID().toString())
.settings(null)
.build();
private final OrganisationsEinheit withEmptySettings = OrganisationsEinheitTestFactory.createBuilder()
.id(UUID.randomUUID().toString())
.organisationsEinheitId(UUID.randomUUID().toString())
.settings(OrganisationsEinheitSettings.builder().build())
.build();
@BeforeEach
void setUp() {
operations.save(withSignatur1);
operations.save(withSignatur2);
operations.save(withNullSettings);
operations.save(withEmptySettings);
}
@Test
void shouldFind() {
var found = repository.getSettings();
assertThat(found).extracting(OrganisationsEinheitWithSettings::getOrganisationsEinheitId, item -> item.getSettings().getSignatur())
.containsExactlyInAnyOrder(
tuple(withSignatur1.getOrganisationsEinheitId(), withSignatur1.getSettings().getSignatur()),
tuple(withSignatur2.getOrganisationsEinheitId(), withSignatur2.getSettings().getSignatur()));
}
private static OrganisationsEinheitSettings withRandomSignatur() {
return withSignatur(LoremIpsum.getInstance().getWords(5));
}
private static OrganisationsEinheitSettings withSignatur(String signatur) {
return OrganisationsEinheitSettingsTestFactory.createBuilder().signatur(signatur).build();
}
}
}
package de.ozgcloud.admin.common.organisationseinheit;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.Map;
import java.util.stream.Stream;
import org.junit.jupiter.api.BeforeEach;
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;
import org.mockito.Spy;
import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings;
import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettingsTestFactory;
import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory;
class OrganisationsEinheitSettingsServiceTest {
@Mock
private OrganisationsEinheitSettingsRepository settingsRepository;
@Spy
@InjectMocks
private OrganisationsEinheitSettingsService service;
private final OrganisationsEinheitWithSettings withSettings1 = mockWith(OrganisationsEinheitTestFactory.ID,
OrganisationsEinheitSettingsTestFactory.create());
@BeforeEach
void init() {
when(settingsRepository.getSettings()).thenReturn(Stream.of(withSettings1));
}
@Nested
class TestGetSettings {
private final Map<String, OrganisationsEinheitSettings> settingsMap = Map.of(
OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID, OrganisationsEinheitSettingsTestFactory.create()
);
@Captor
private ArgumentCaptor<Stream<OrganisationsEinheitWithSettings>> streamArgumentCaptor;
@BeforeEach
void init() {
doReturn(settingsMap).when(service).getSettingsMap(any());
}
@Test
void shouldGetSettings() {
callService();
verify(settingsRepository).getSettings();
}
@Test
void shouldGetSettingsMap() {
callService();
verify(service).getSettingsMap(streamArgumentCaptor.capture());
assertThat(streamArgumentCaptor.getValue()).containsExactly(withSettings1);
}
private Map<String, OrganisationsEinheitSettings> callService() {
return service.getSettings();
}
}
@Nested
class TestGetSettingsMap {
}
private OrganisationsEinheitWithSettings mockWith(String organisationsEinheitId, OrganisationsEinheitSettings settings) {
var withSettings = mock(OrganisationsEinheitWithSettings.class);
when(withSettings.getOrganisationsEinheitId()).thenReturn(organisationsEinheitId);
when(withSettings.getSettings()).thenReturn(settings);
return withSettings;
}
}
...@@ -16,8 +16,6 @@ import org.springframework.data.mongodb.core.MongoOperations; ...@@ -16,8 +16,6 @@ import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import com.thedeanda.lorem.LoremIpsum;
import de.ozgcloud.common.test.DbInitializer; import de.ozgcloud.common.test.DbInitializer;
@DataMongoTest @DataMongoTest
...@@ -288,55 +286,4 @@ class OrganisationsEinheitRepositoryITCase { ...@@ -288,55 +286,4 @@ class OrganisationsEinheitRepositoryITCase {
} }
} }
@Nested
class TestGetSettings {
private final OrganisationsEinheit withSignatur1 = OrganisationsEinheitTestFactory.createBuilder()
.id(UUID.randomUUID().toString())
.organisationsEinheitId(UUID.randomUUID().toString())
.settings(withRandomSignatur())
.build();
private final OrganisationsEinheit withSignatur2 = OrganisationsEinheitTestFactory.createBuilder()
.id(UUID.randomUUID().toString())
.organisationsEinheitId(UUID.randomUUID().toString())
.settings(withRandomSignatur())
.build();
private final OrganisationsEinheit withNullSettings = OrganisationsEinheitTestFactory.createBuilder()
.id(UUID.randomUUID().toString())
.organisationsEinheitId(UUID.randomUUID().toString())
.settings(null)
.build();
private final OrganisationsEinheit withEmptySettings = OrganisationsEinheitTestFactory.createBuilder()
.id(UUID.randomUUID().toString())
.organisationsEinheitId(UUID.randomUUID().toString())
.settings(new OrganisationsEinheitSettings(null))
.build();
@BeforeEach
void setUp() {
operations.save(withSignatur1);
operations.save(withSignatur2);
operations.save(withNullSettings);
operations.save(withEmptySettings);
}
@Test
void shouldFind() {
var found = repository.getSettings();
assertThat(found).extracting(OrganisationsEinheitWithSettings::getOrganisationsEinheitId, item -> item.getSettings().getSignatur())
.containsExactlyInAnyOrder(
tuple(withSignatur1.getOrganisationsEinheitId(), withSignatur1.getSettings().getSignatur()),
tuple(withSignatur2.getOrganisationsEinheitId(), withSignatur2.getSettings().getSignatur()));
}
private static OrganisationsEinheitSettings withRandomSignatur() {
return withSignatur(LoremIpsum.getInstance().getWords(5));
}
private static OrganisationsEinheitSettings withSignatur(String signatur) {
return OrganisationsEinheitSettingsTestFactory.createBuilder().signatur(signatur).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