Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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 THREE_H_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(THREE_H_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");
}
}

Original file line number Diff line number Diff line change
@@ -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 {

public static final int PATIENT_MIGRATION_REQUEST = 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(PATIENT_MIGRATION_REQUEST)
.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");
}
}

Loading