From bc99ed6e7a66c4649e1fe3bbadc1e7f9c8399abb Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 14 Oct 2024 14:18:51 +0200
Subject: [PATCH] OZG-6867 OZG-6900 Implement findAllByOrganisationsEinheitId
 in repository

---
 .../OrganisationsEinheitRepository.java       |  6 ++++
 .../OrganisationsEinheitRepositoryITCase.java | 34 +++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/zufi-manager-model/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepository.java b/zufi-manager-model/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepository.java
index ffbe6e8e..d9552232 100644
--- a/zufi-manager-model/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepository.java
+++ b/zufi-manager-model/src/main/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepository.java
@@ -28,6 +28,7 @@ import java.util.Optional;
 
 import org.springframework.data.mongodb.core.query.TextCriteria;
 import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.data.mongodb.repository.Query;
 import org.springframework.stereotype.Repository;
 
 @Repository
@@ -54,4 +55,9 @@ interface OrganisationsEinheitRepository extends MongoRepository<OrganisationsEi
 	default TextCriteria buildTextCriteria(String text) {
 		return TextCriteria.forDefaultLanguage().matching(text);
 	}
+
+	@Query("{ 'xzufiId._id': ?0 }")
+	List<OrganisationsEinheit> findByOrganisationsEinheitId(String organisationsEinheitId);
 }
+
+
diff --git a/zufi-manager-model/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepositoryITCase.java b/zufi-manager-model/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepositoryITCase.java
index 144dbecb..911827bd 100644
--- a/zufi-manager-model/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepositoryITCase.java
+++ b/zufi-manager-model/src/test/java/de/ozgcloud/zufi/organisationseinheit/OrganisationsEinheitRepositoryITCase.java
@@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.*;
 
 import java.util.Optional;
 import java.util.Set;
+import java.util.UUID;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
@@ -241,4 +242,37 @@ class OrganisationsEinheitRepositoryITCase {
 					.containsExactly(organisationsEinheit1, organisationsEinheit3, organisationsEinheit2);
 		}
 	}
+
+	@Nested
+	class TestFindByOrganisationsEinheitId {
+
+		public static final String ORGANISATIONS_EINHEIT_ID = OrganisationsEinheitTestFactory.XZUFI_ID.getId();
+
+		private final OrganisationsEinheit organisationsEinheit1 = OrganisationsEinheitTestFactory.createBuilder()
+				.id(null)
+				.xzufiId(XzufiId.builder().id(ORGANISATIONS_EINHEIT_ID).schemeAgencyId(UUID.randomUUID().toString()).build())
+				.build();
+		private final OrganisationsEinheit organisationsEinheit2 = OrganisationsEinheitTestFactory.createBuilder()
+				.id(null)
+				.xzufiId(XzufiId.builder().id(UUID.randomUUID().toString()).schemeAgencyId(UUID.randomUUID().toString()).build())
+				.build();
+		private final OrganisationsEinheit organisationsEinheit3 = OrganisationsEinheitTestFactory.createBuilder()
+				.id(null)
+				.xzufiId(XzufiId.builder().id(ORGANISATIONS_EINHEIT_ID).schemeAgencyId(UUID.randomUUID().toString()).build())
+				.build();
+
+		@BeforeEach
+		void initDatabase() {
+			repository.save(organisationsEinheit1);
+			repository.save(organisationsEinheit2);
+			repository.save(organisationsEinheit3);
+		}
+
+		@Test
+		void shouldFindAllOrganisationsEinheitenWithId() {
+			var result = repository.findByOrganisationsEinheitId(ORGANISATIONS_EINHEIT_ID);
+
+			assertThat(result).usingRecursiveFieldByFieldElementComparatorIgnoringFields("id").containsExactlyInAnyOrder(organisationsEinheit1, organisationsEinheit3);
+		}
+	}
 }
-- 
GitLab