diff --git a/common/build.gradle b/common/build.gradle index 5c1547307..bec4c3b10 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -29,8 +29,8 @@ dependencies { compileOnly 'jakarta.servlet:jakarta.servlet-api:6.0.0' compileOnly 'jakarta.annotation:jakarta.annotation-api:3.0.0' - testImplementation 'org.junit.jupiter:junit-jupiter:6.0.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter:6.0.0' + + testImplementation 'org.springframework.boot:spring-boot-starter-test' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' diff --git a/common/src/test/java/uk/nhs/adaptors/common/util/FileUtilTest.java b/common/src/test/java/uk/nhs/adaptors/common/util/FileUtilTest.java new file mode 100644 index 000000000..1f91d4fe1 --- /dev/null +++ b/common/src/test/java/uk/nhs/adaptors/common/util/FileUtilTest.java @@ -0,0 +1,23 @@ +package uk.nhs.adaptors.common.util; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.io.FileNotFoundException; + +import org.junit.jupiter.api.Test; + +public class FileUtilTest { + + @Test + public void shouldReadTextResource() { + var content = FileUtil.readResourceAsString("/file-util/sample.txt"); + + assertEquals("sample-content", content.trim()); + } + + @Test + public void shouldThrowWhenResourceDoesNotExist() { + assertThrows(FileNotFoundException.class, () -> FileUtil.readResourceAsString("/file-util/missing.txt")); + } +} diff --git a/common/src/test/resources/file-util/sample.txt b/common/src/test/resources/file-util/sample.txt new file mode 100644 index 000000000..ea0b6a931 --- /dev/null +++ b/common/src/test/resources/file-util/sample.txt @@ -0,0 +1,2 @@ +sample-content + diff --git a/db-connector/src/test/java/uk/nhs/adaptors/connector/service/MessagePersistDurationServiceTest.java b/db-connector/src/test/java/uk/nhs/adaptors/connector/service/MessagePersistDurationServiceTest.java new file mode 100644 index 000000000..207fdfc60 --- /dev/null +++ b/db-connector/src/test/java/uk/nhs/adaptors/connector/service/MessagePersistDurationServiceTest.java @@ -0,0 +1,85 @@ +package uk.nhs.adaptors.connector.service; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.time.Duration; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import uk.nhs.adaptors.connector.dao.MessagePersistDurationDao; +import uk.nhs.adaptors.connector.model.MessagePersistDuration; + +@ExtendWith(MockitoExtension.class) +public class MessagePersistDurationServiceTest { + + public static final int PERSIST_DURATION_SECONDS = 300; + public static final int MIGRATION_REQUEST_ID = 101010; + public static final int TWO_CALLS = 2; + public static final int NINETY_NINE = 99; + public static final int SEVEN = 7; + public static final long PERSIST_DURATION = 300L; + public static final int FIVE = 5; + public static final String COPC = "COPC"; + @Mock + private MessagePersistDurationDao messagePersistDurationDao; + + @InjectMocks + private MessagePersistDurationService messagePersistDurationService; + + @Test + public void shouldSaveAndReturnPersistDuration() { + var expected = MessagePersistDuration.builder() + .id(1) + .messageType("ehrExtract") + .persistDuration(Duration.ofSeconds(PERSIST_DURATION_SECONDS)) + .callsSinceUpdate(TWO_CALLS) + .migrationRequestId(MIGRATION_REQUEST_ID) + .build(); + + when(messagePersistDurationDao.getMessagePersistDuration(MIGRATION_REQUEST_ID, "ehrExtract")).thenReturn(expected); + + var actual = messagePersistDurationService.addMessagePersistDuration("ehrExtract", + Duration.ofMinutes(FIVE), + TWO_CALLS, + MIGRATION_REQUEST_ID); + + verify(messagePersistDurationDao).saveMessagePersistDuration("ehrExtract", PERSIST_DURATION, TWO_CALLS, MIGRATION_REQUEST_ID); + assertEquals(expected, actual); + } + + @Test + public void shouldReturnPersistDurationWhenMessageTypeExists() { + var expected = MessagePersistDuration.builder() + .messageType(COPC) + .migrationRequestId(NINETY_NINE) + .build(); + + when(messagePersistDurationDao.messageTypeExists(NINETY_NINE, COPC)).thenReturn(true); + when(messagePersistDurationDao.getMessagePersistDuration(NINETY_NINE, COPC)).thenReturn(expected); + + var actual = messagePersistDurationService.getMessagePersistDuration(NINETY_NINE, COPC); + + assertTrue(actual.isPresent()); + assertEquals(expected, actual.get()); + } + + @Test + public void shouldReturnEmptyWhenMessageTypeDoesNotExist() { + when(messagePersistDurationDao.messageTypeExists(SEVEN, "missing")).thenReturn(false); + + var actual = messagePersistDurationService.getMessagePersistDuration(SEVEN, "missing"); + + assertFalse(actual.isPresent()); + verify(messagePersistDurationDao, never()).getMessagePersistDuration(SEVEN, "missing"); + } +} + diff --git a/db-connector/src/test/java/uk/nhs/adaptors/connector/service/PatientMigrationRequestServiceTest.java b/db-connector/src/test/java/uk/nhs/adaptors/connector/service/PatientMigrationRequestServiceTest.java new file mode 100644 index 000000000..ce401a1c6 --- /dev/null +++ b/db-connector/src/test/java/uk/nhs/adaptors/connector/service/PatientMigrationRequestServiceTest.java @@ -0,0 +1,56 @@ +package uk.nhs.adaptors.connector.service; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import uk.nhs.adaptors.common.enums.MigrationStatus; +import uk.nhs.adaptors.connector.dao.PatientMigrationRequestDao; +import uk.nhs.adaptors.connector.model.PatientMigrationRequest; + +@ExtendWith(MockitoExtension.class) +public class PatientMigrationRequestServiceTest { + + private static final int MIGRATION_REQUEST_ID = 11111111; + @Mock + private PatientMigrationRequestDao patientMigrationRequestDao; + + @InjectMocks + private PatientMigrationRequestService patientMigrationRequestService; + + @Test + public void shouldReturnRequestsByMigrationStatus() { + var statuses = List.of(MigrationStatus.REQUEST_RECEIVED); + var request = PatientMigrationRequest.builder() + .id(MIGRATION_REQUEST_ID) + .conversationId("conversation-id-123") + .build(); + + when(patientMigrationRequestDao.getMigrationRequestsByLatestMigrationStatusIn(statuses)).thenReturn(List.of(request)); + + var actual = patientMigrationRequestService.getMigrationRequestsByMigrationStatusIn(statuses); + + assertEquals(1, actual.size()); + assertEquals("conversation-id-123", actual.get(0).getConversationId()); + } + + @Test + public void shouldReturnTrueWhenMigrationRequestExists() { + when(patientMigrationRequestDao.existsByConversationId("conversation-id-123")).thenReturn(true); + + var exists = patientMigrationRequestService.hasMigrationRequest("conversation-id-123"); + + assertTrue(exists); + verify(patientMigrationRequestDao).existsByConversationId("conversation-id-123"); + } +} +