summaryrefslogtreecommitdiff
path: root/src/integrationTest/kotlin/dev/dnpm/etl/processor
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2024-07-15 10:27:51 +0200
committerPaul-Christian Volkmer2024-07-15 10:31:52 +0200
commitc8f6e6efc812cc12d17c2af1cc24a9318180a8fe (patch)
treec4a39f322e708648c2e731d6954d8fc600b12db9 /src/integrationTest/kotlin/dev/dnpm/etl/processor
parentc949ec07e50f86cb98b7ac5dd9e529022cb6cd0b (diff)
refactor: add types for patient id and pseudonym
Diffstat (limited to 'src/integrationTest/kotlin/dev/dnpm/etl/processor')
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/helpers.kt30
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt6
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt8
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt28
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt37
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt22
6 files changed, 76 insertions, 55 deletions
diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/helpers.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/helpers.kt
new file mode 100644
index 0000000..6ca420f
--- /dev/null
+++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/helpers.kt
@@ -0,0 +1,30 @@
+/*
+ * This file is part of ETL-Processor
+ *
+ * Copyright (c) 2024 Comprehensive Cancer Center Mainfranken, Datenintegrationszentrum Philipps-Universität Marburg and Contributors
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package dev.dnpm.etl.processor
+
+import org.mockito.ArgumentMatchers
+
+@Suppress("UNCHECKED_CAST")
+inline fun <reified T> anyValueClass(): T {
+ val unboxedClass = T::class.java.declaredFields.first().type
+ return ArgumentMatchers.any(unboxedClass as Class<T>)
+ ?: T::class.java.getDeclaredMethod("box-impl", unboxedClass)
+ .invoke(null, null) as T
+} \ No newline at end of file
diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt
index 521ec52..670020f 100644
--- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt
+++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt
@@ -21,6 +21,7 @@ package dev.dnpm.etl.processor.input
import com.fasterxml.jackson.databind.ObjectMapper
import de.ukw.ccc.bwhc.dto.*
+import dev.dnpm.etl.processor.anyValueClass
import dev.dnpm.etl.processor.config.AppSecurityConfiguration
import dev.dnpm.etl.processor.security.TokenRepository
import dev.dnpm.etl.processor.security.UserRoleRepository
@@ -29,7 +30,6 @@ import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
-import org.mockito.ArgumentMatchers.anyString
import org.mockito.junit.jupiter.MockitoExtension
import org.mockito.kotlin.any
import org.mockito.kotlin.never
@@ -141,7 +141,7 @@ class MtbFileRestControllerTest {
status { isAccepted() }
}
- verify(requestProcessor, times(1)).processDeletion(anyString())
+ verify(requestProcessor, times(1)).processDeletion(anyValueClass())
}
@Test
@@ -152,7 +152,7 @@ class MtbFileRestControllerTest {
status { isUnauthorized() }
}
- verify(requestProcessor, never()).processDeletion(anyString())
+ verify(requestProcessor, never()).processDeletion(anyValueClass())
}
@Nested
diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt
index 231fffe..bef124c 100644
--- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt
+++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt
@@ -19,10 +19,8 @@
package dev.dnpm.etl.processor.monitoring
-import dev.dnpm.etl.processor.AbstractTestcontainerTest
-import dev.dnpm.etl.processor.Fingerprint
+import dev.dnpm.etl.processor.*
import dev.dnpm.etl.processor.output.MtbFileSender
-import dev.dnpm.etl.processor.randomRequestId
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
@@ -63,8 +61,8 @@ class RequestRepositoryTest : AbstractTestcontainerTest() {
fun shouldSaveRequest() {
val request = Request(
randomRequestId(),
- "TEST_12345678901",
- "P1",
+ PatientPseudonym("TEST_12345678901"),
+ PatientId("P1"),
Fingerprint("0123456789abcdef1"),
RequestType.MTB_FILE,
RequestStatus.WARNING,
diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt
index 1aac5fd..47ac301 100644
--- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt
+++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt
@@ -19,14 +19,12 @@
package dev.dnpm.etl.processor.services
-import dev.dnpm.etl.processor.AbstractTestcontainerTest
-import dev.dnpm.etl.processor.Fingerprint
+import dev.dnpm.etl.processor.*
import dev.dnpm.etl.processor.monitoring.Request
import dev.dnpm.etl.processor.monitoring.RequestRepository
import dev.dnpm.etl.processor.monitoring.RequestStatus
import dev.dnpm.etl.processor.monitoring.RequestType
import dev.dnpm.etl.processor.output.MtbFileSender
-import dev.dnpm.etl.processor.randomRequestId
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
@@ -67,7 +65,7 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() {
@Test
fun shouldResultInEmptyRequestList() {
- val actual = requestService.allRequestsByPatientPseudonym("TEST_12345678901")
+ val actual = requestService.allRequestsByPatientPseudonym(TEST_PATIENT_PSEUDONYM)
assertThat(actual).isEmpty()
}
@@ -78,8 +76,8 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() {
listOf(
Request(
randomRequestId(),
- "TEST_12345678901",
- "P1",
+ PatientPseudonym("TEST_12345678901"),
+ PatientId("P1"),
Fingerprint("0123456789abcdef1"),
RequestType.MTB_FILE,
RequestStatus.SUCCESS,
@@ -88,8 +86,8 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() {
// Should be ignored - wrong patient ID -->
Request(
randomRequestId(),
- "TEST_12345678902",
- "P2",
+ PatientPseudonym("TEST_12345678902"),
+ PatientId("P2"),
Fingerprint("0123456789abcdef2"),
RequestType.MTB_FILE,
RequestStatus.WARNING,
@@ -98,8 +96,8 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() {
// <--
Request(
randomRequestId(),
- "TEST_12345678901",
- "P2",
+ PatientPseudonym("TEST_12345678901"),
+ PatientId("P2"),
Fingerprint("0123456789abcdee1"),
RequestType.DELETE,
RequestStatus.SUCCESS,
@@ -113,7 +111,7 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() {
fun shouldResultInSortedRequestList() {
setupTestData()
- val actual = requestService.allRequestsByPatientPseudonym("TEST_12345678901")
+ val actual = requestService.allRequestsByPatientPseudonym(TEST_PATIENT_PSEUDONYM)
assertThat(actual).hasSize(2)
assertThat(actual[0].fingerprint).isEqualTo(Fingerprint("0123456789abcdee1"))
@@ -124,7 +122,7 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() {
fun shouldReturnDeleteRequestAsLastRequest() {
setupTestData()
- val actual = requestService.isLastRequestWithKnownStatusDeletion("TEST_12345678901")
+ val actual = requestService.isLastRequestWithKnownStatusDeletion(TEST_PATIENT_PSEUDONYM)
assertThat(actual).isTrue()
}
@@ -133,10 +131,14 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() {
fun shouldReturnLastMtbFileRequest() {
setupTestData()
- val actual = requestService.lastMtbFileRequestForPatientPseudonym("TEST_12345678901")
+ val actual = requestService.lastMtbFileRequestForPatientPseudonym(TEST_PATIENT_PSEUDONYM)
assertThat(actual).isNotNull
assertThat(actual?.fingerprint).isEqualTo(Fingerprint("0123456789abcdef1"))
}
+ companion object {
+ val TEST_PATIENT_PSEUDONYM = PatientPseudonym("TEST_12345678901")
+ }
+
} \ No newline at end of file
diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt
index a5d8771..80c17d2 100644
--- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt
+++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt
@@ -21,15 +21,13 @@ package dev.dnpm.etl.processor.web
import com.gargoylesoftware.htmlunit.WebClient
import com.gargoylesoftware.htmlunit.html.HtmlPage
-import dev.dnpm.etl.processor.Fingerprint
-import dev.dnpm.etl.processor.NotFoundException
+import dev.dnpm.etl.processor.*
import dev.dnpm.etl.processor.config.AppConfiguration
import dev.dnpm.etl.processor.config.AppSecurityConfiguration
import dev.dnpm.etl.processor.monitoring.Report
import dev.dnpm.etl.processor.monitoring.Request
import dev.dnpm.etl.processor.monitoring.RequestStatus
import dev.dnpm.etl.processor.monitoring.RequestType
-import dev.dnpm.etl.processor.randomRequestId
import dev.dnpm.etl.processor.services.RequestService
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach
@@ -37,8 +35,6 @@ import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import org.junit.jupiter.api.extension.ExtendWith
-import org.mockito.ArgumentMatchers
-import org.mockito.ArgumentMatchers.anyString
import org.mockito.junit.jupiter.MockitoExtension
import org.mockito.kotlin.any
import org.mockito.kotlin.whenever
@@ -83,13 +79,6 @@ class HomeControllerTest {
private lateinit var mockMvc: MockMvc
private lateinit var webClient: WebClient
- inline fun <reified T> anyValueClass(): T {
- val unboxedClass = T::class.java.declaredFields.first().type
- return ArgumentMatchers.any(unboxedClass as Class<T>)
- ?: T::class.java.getDeclaredMethod("box-impl", unboxedClass)
- .invoke(null, null) as T
- }
-
@BeforeEach
fun setup(
@Autowired mockMvc: MockMvc,
@@ -129,8 +118,8 @@ class HomeControllerTest {
Request(
2L,
randomRequestId(),
- "PSEUDO1",
- "PATIENT1",
+ PatientPseudonym("PSEUDO1"),
+ PatientId("PATIENT1"),
Fingerprint("ashdkasdh"),
RequestType.MTB_FILE,
RequestStatus.SUCCESS
@@ -138,8 +127,8 @@ class HomeControllerTest {
Request(
1L,
randomRequestId(),
- "PSEUDO1",
- "PATIENT1",
+ PatientPseudonym("PSEUDO1"),
+ PatientId("PATIENT1"),
Fingerprint("asdasdasd"),
RequestType.MTB_FILE,
RequestStatus.ERROR
@@ -163,8 +152,8 @@ class HomeControllerTest {
Request(
2L,
requestId,
- "PSEUDO1",
- "PATIENT1",
+ PatientPseudonym("PSEUDO1"),
+ PatientId("PATIENT1"),
Fingerprint("ashdkasdh"),
RequestType.MTB_FILE,
RequestStatus.SUCCESS,
@@ -182,14 +171,14 @@ class HomeControllerTest {
@Test
@WithMockUser(username = "admin", roles = ["ADMIN"])
fun testShouldShowPatientDetails() {
- whenever(requestService.findRequestByPatientId(anyString(), any<Pageable>())).thenReturn(
+ whenever(requestService.findRequestByPatientId(anyValueClass(), any<Pageable>())).thenReturn(
PageImpl(
listOf(
Request(
2L,
randomRequestId(),
- "PSEUDO1",
- "PATIENT1",
+ PatientPseudonym("PSEUDO1"),
+ PatientId("PATIENT1"),
Fingerprint("ashdkasdh"),
RequestType.MTB_FILE,
RequestStatus.SUCCESS
@@ -197,8 +186,8 @@ class HomeControllerTest {
Request(
1L,
randomRequestId(),
- "PSEUDO1",
- "PATIENT1",
+ PatientPseudonym("PSEUDO1"),
+ PatientId("PATIENT1"),
Fingerprint("asdasdasd"),
RequestType.MTB_FILE,
RequestStatus.ERROR
@@ -254,7 +243,7 @@ class HomeControllerTest {
@Test
@WithMockUser(username = "admin", roles = ["ADMIN"])
fun testShouldShowEmptyPatientDetails() {
- whenever(requestService.findRequestByPatientId(anyString(), any<Pageable>())).thenReturn(Page.empty())
+ whenever(requestService.findRequestByPatientId(anyValueClass(), any<Pageable>())).thenReturn(Page.empty())
val page = webClient.getPage<HtmlPage>("http://localhost/patient/PSEUDO1")
assertThat(page.querySelectorAll("tbody tr")).isEmpty()
diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt
index e66def7..b9a1338 100644
--- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt
+++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt
@@ -20,6 +20,8 @@
package dev.dnpm.etl.processor.web
import dev.dnpm.etl.processor.Fingerprint
+import dev.dnpm.etl.processor.PatientId
+import dev.dnpm.etl.processor.PatientPseudonym
import dev.dnpm.etl.processor.config.AppConfiguration
import dev.dnpm.etl.processor.config.AppSecurityConfiguration
import dev.dnpm.etl.processor.monitoring.CountedState
@@ -188,8 +190,8 @@ class StatisticsRestControllerTest {
Request(
1,
randomRequestId(),
- "TEST_12345678901",
- "P1",
+ PatientPseudonym("TEST_12345678901"),
+ PatientId("P1"),
Fingerprint("0123456789abcdef1"),
RequestType.MTB_FILE,
RequestStatus.SUCCESS,
@@ -198,8 +200,8 @@ class StatisticsRestControllerTest {
Request(
2,
randomRequestId(),
- "TEST_12345678902",
- "P2",
+ PatientPseudonym("TEST_12345678902"),
+ PatientId("P2"),
Fingerprint("0123456789abcdef2"),
RequestType.MTB_FILE,
RequestStatus.WARNING,
@@ -208,8 +210,8 @@ class StatisticsRestControllerTest {
Request(
3,
randomRequestId(),
- "TEST_12345678901",
- "P2",
+ PatientPseudonym("TEST_12345678901"),
+ PatientId("P2"),
Fingerprint("0123456789abcdee1"),
RequestType.DELETE,
RequestStatus.ERROR,
@@ -218,8 +220,8 @@ class StatisticsRestControllerTest {
Request(
4,
randomRequestId(),
- "TEST_12345678902",
- "P2",
+ PatientPseudonym("TEST_12345678902"),
+ PatientId("P2"),
Fingerprint("0123456789abcdef2"),
RequestType.MTB_FILE,
RequestStatus.DUPLICATION,
@@ -228,8 +230,8 @@ class StatisticsRestControllerTest {
Request(
5,
randomRequestId(),
- "TEST_12345678902",
- "P2",
+ PatientPseudonym("TEST_12345678902"),
+ PatientId("P2"),
Fingerprint("0123456789abcdef2"),
RequestType.DELETE,
RequestStatus.UNKNOWN,