From bc08a4b33e0c9f11ed95b3c70f2f2b7aecaf0db3 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 17 Oct 2024 18:01:09 +0200
Subject: [PATCH] OZG-6867 OZG-6902 implement data access api

---
 .../OrganisationsEinheitRepository.java       |  9 ++++
 .../OrganisationsEinheitService.java          | 17 +++++++
 .../OrganisationsEinheitServiceTest.java      | 45 +++++++++++++++++++
 .../OrganisationsEinheitTestFactory.java      | 35 +++++++++++++++
 4 files changed, 106 insertions(+)
 create mode 100644 src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitRepository.java
 create mode 100644 src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitService.java
 create mode 100644 src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitServiceTest.java
 create mode 100644 src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitTestFactory.java

diff --git a/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitRepository.java b/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitRepository.java
new file mode 100644
index 00000000..b6b004cc
--- /dev/null
+++ b/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitRepository.java
@@ -0,0 +1,9 @@
+package de.ozgcloud.admin.organisationseinheit;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+interface OrganisationsEinheitRepository extends MongoRepository<OrganisationsEinheit, String> {
+
+}
diff --git a/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitService.java b/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitService.java
new file mode 100644
index 00000000..e4f0dee2
--- /dev/null
+++ b/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitService.java
@@ -0,0 +1,17 @@
+package de.ozgcloud.admin.organisationseinheit;
+
+import org.springframework.stereotype.Service;
+
+import lombok.RequiredArgsConstructor;
+
+@Service
+@RequiredArgsConstructor
+class OrganisationsEinheitService {
+
+	private final OrganisationsEinheitRepository organisationsEinheitRepository;
+
+	public OrganisationsEinheit saveOrganisationsEinheit(OrganisationsEinheit organisationsEinheit) {
+		return organisationsEinheitRepository.save(organisationsEinheit);
+	}
+
+}
diff --git a/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitServiceTest.java b/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitServiceTest.java
new file mode 100644
index 00000000..345b190d
--- /dev/null
+++ b/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitServiceTest.java
@@ -0,0 +1,45 @@
+package de.ozgcloud.admin.organisationseinheit;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+
+class OrganisationsEinheitServiceTest {
+
+	@InjectMocks
+	private OrganisationsEinheitService service;
+
+	@Mock
+	private OrganisationsEinheitRepository organisationsEinheitRepository;
+
+	@Nested
+	class TestSaveOrganisationsEinheit {
+
+		private final OrganisationsEinheit organisationsEinheit = OrganisationsEinheitTestFactory.create();
+
+		@BeforeEach
+		void setUp() {
+			when(organisationsEinheitRepository.save(organisationsEinheit)).thenReturn(organisationsEinheit);
+		}
+
+		@Test
+		void shouldCallRepository() {
+			service.saveOrganisationsEinheit(organisationsEinheit);
+
+			verify(organisationsEinheitRepository).save(organisationsEinheit);
+		}
+
+		@Test
+		void shouldReturnSavedOrganisationsEinheit() {
+			var saved = service.saveOrganisationsEinheit(organisationsEinheit);
+
+			assertThat(saved).isEqualTo(organisationsEinheit);
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitTestFactory.java b/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitTestFactory.java
new file mode 100644
index 00000000..a75e00d6
--- /dev/null
+++ b/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitTestFactory.java
@@ -0,0 +1,35 @@
+package de.ozgcloud.admin.organisationseinheit;
+
+import java.util.List;
+import java.util.UUID;
+
+import com.thedeanda.lorem.LoremIpsum;
+
+public class OrganisationsEinheitTestFactory {
+
+	public static final String ID = UUID.randomUUID().toString();
+	public static final String NAME = LoremIpsum.getInstance().getName();
+	public static final String ANSCHRIFT = LoremIpsum.getInstance().getCity();
+	public static final String ORGANISATIONS_EINHEIT_ID = UUID.randomUUID().toString();
+	public static final String UEBERGEORDNETE_ORGANISATIONSEINHEIT_ID = UUID.randomUUID().toString();
+	public static final List<String> UNTERGEORDNETE_ORGANISATIONSEINHEIT_ID = List.of(UUID.randomUUID().toString());
+	public static final String ZUFI_ID = UUID.randomUUID().toString();
+	public static final SyncResult SYNC_RESULT = SyncResult.OK;
+
+	public static OrganisationsEinheit create(){
+		return createBuilder().build();
+	}
+
+	public static OrganisationsEinheit.OrganisationsEinheitBuilder createBuilder(){
+		return OrganisationsEinheit.builder()
+				.id(ID)
+				.name(NAME)
+				.anschrift(ANSCHRIFT)
+				.organisationsEinheitId(ORGANISATIONS_EINHEIT_ID)
+				.uebergeordneteOrganisationseinheitId(UEBERGEORDNETE_ORGANISATIONSEINHEIT_ID)
+				.untergeordneteOrganisationseinheitId(UNTERGEORDNETE_ORGANISATIONSEINHEIT_ID)
+				.zufiId(ZUFI_ID)
+				.syncResult(SYNC_RESULT);
+	}
+
+}
-- 
GitLab