diff --git a/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/CamundaProcessIdentifier.java b/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/CamundaProcessIdentifier.java index a701d42e9e8..ee5f8df1df2 100644 --- a/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/CamundaProcessIdentifier.java +++ b/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/CamundaProcessIdentifier.java @@ -59,6 +59,7 @@ public enum CamundaProcessIdentifier { BundleCreationNotify, CreateSDONotify, RaiseQueryNotifier, + JudgmentByAdmissionNotifier, OtherPartyQueryRaisedNotifier, NotifyLipGenericTemplateNotifier, NotifyLipResetPinNotifier, diff --git a/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionAllPartiesEmailGenerator.java b/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionAllPartiesEmailGenerator.java new file mode 100644 index 00000000000..8850c3a1094 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionAllPartiesEmailGenerator.java @@ -0,0 +1,18 @@ +package uk.gov.hmcts.reform.civil.notification.handlers.judgmentbyadmission; + +import uk.gov.hmcts.reform.civil.notification.handlers.AllPartiesEmailGenerator; + +import java.util.List; + +import org.springframework.stereotype.Component; + +@Component +public class JudgmentByAdmissionAllPartiesEmailGenerator extends AllPartiesEmailGenerator { + + public JudgmentByAdmissionAllPartiesEmailGenerator(JudgmentByAdmissionAppSolOneEmailDTOGenerator appSolOneEmailGenerator, + JudgmentByAdmissionDefendantEmailDTOGenerator defendantEmailDTOGenerator) { + + super(List.of(appSolOneEmailGenerator, + defendantEmailDTOGenerator)); + } +} diff --git a/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionAppSolOneEmailDTOGenerator.java b/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionAppSolOneEmailDTOGenerator.java new file mode 100644 index 00000000000..f53e7784c9e --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionAppSolOneEmailDTOGenerator.java @@ -0,0 +1,44 @@ +package uk.gov.hmcts.reform.civil.notification.handlers.judgmentbyadmission; + +import static uk.gov.hmcts.reform.civil.utils.NotificationUtils.getApplicantLegalOrganizationName; +import static uk.gov.hmcts.reform.civil.utils.NotificationUtils.getDefendantNameBasedOnCaseType; + +import uk.gov.hmcts.reform.civil.model.CaseData; +import uk.gov.hmcts.reform.civil.notification.handlers.AppSolOneEmailDTOGenerator; +import uk.gov.hmcts.reform.civil.notify.NotificationsProperties; +import uk.gov.hmcts.reform.civil.service.OrganisationService; + +import java.util.Map; + +import org.springframework.stereotype.Component; + +@Component +public class JudgmentByAdmissionAppSolOneEmailDTOGenerator extends AppSolOneEmailDTOGenerator { + + private static final String REFERENCE_APP_SOL_ONE_TEMPLATE = "claimant-judgment-by-admission-%s"; + + private final NotificationsProperties notificationsProperties; + + protected JudgmentByAdmissionAppSolOneEmailDTOGenerator(OrganisationService organisationService, NotificationsProperties notificationsProperties) { + super(organisationService); + this.notificationsProperties = notificationsProperties; + } + + @Override + protected String getEmailTemplateId(CaseData caseData) { + return notificationsProperties.getNotifyClaimantLRJudgmentByAdmissionTemplate(); + } + + @Override + protected String getReferenceTemplate() { + return REFERENCE_APP_SOL_ONE_TEMPLATE; + } + + @Override + protected Map addCustomProperties(Map properties, CaseData caseData) { + super.addCustomProperties(properties, caseData); + properties.put(LEGAL_ORG_NAME, getApplicantLegalOrganizationName(caseData, organisationService)); + properties.put(DEFENDANT_NAME, getDefendantNameBasedOnCaseType(caseData)); + return properties; + } +} diff --git a/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionDefendantEmailDTOGenerator.java b/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionDefendantEmailDTOGenerator.java new file mode 100644 index 00000000000..befdf8ecdb3 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionDefendantEmailDTOGenerator.java @@ -0,0 +1,29 @@ +package uk.gov.hmcts.reform.civil.notification.handlers.judgmentbyadmission; + +import uk.gov.hmcts.reform.civil.model.CaseData; +import uk.gov.hmcts.reform.civil.notification.handlers.DefendantEmailDTOGenerator; +import uk.gov.hmcts.reform.civil.notify.NotificationsProperties; + +import org.springframework.stereotype.Component; + +@Component +public class JudgmentByAdmissionDefendantEmailDTOGenerator extends DefendantEmailDTOGenerator { + + private static final String REFERENCE_DEFENDANT_TEMPLATE = "defendant-judgment-by-admission-%s"; + + private final NotificationsProperties notificationsProperties; + + protected JudgmentByAdmissionDefendantEmailDTOGenerator(NotificationsProperties notificationsProperties) { + this.notificationsProperties = notificationsProperties; + } + + @Override + protected String getEmailTemplateId(CaseData caseData) { + return notificationsProperties.getNotifyDefendantLIPJudgmentByAdmissionTemplate(); + } + + @Override + protected String getReferenceTemplate() { + return REFERENCE_DEFENDANT_TEMPLATE; + } +} diff --git a/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionNotifier.java b/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionNotifier.java new file mode 100644 index 00000000000..3169ad863f5 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionNotifier.java @@ -0,0 +1,25 @@ +package uk.gov.hmcts.reform.civil.notification.handlers.judgmentbyadmission; + +import uk.gov.hmcts.reform.civil.notification.handlers.CamundaProcessIdentifier; +import uk.gov.hmcts.reform.civil.notification.handlers.Notifier; +import uk.gov.hmcts.reform.civil.notify.NotificationService; +import uk.gov.hmcts.reform.civil.service.CaseTaskTrackingService; + +import org.springframework.stereotype.Component; + +@Component +public class JudgmentByAdmissionNotifier extends Notifier { + + public JudgmentByAdmissionNotifier( + NotificationService notificationService, + CaseTaskTrackingService caseTaskTrackingService, + JudgmentByAdmissionAllPartiesEmailGenerator partiesGenerator + ) { + super(notificationService, caseTaskTrackingService, partiesGenerator); + } + + @Override + protected String getTaskId() { + return CamundaProcessIdentifier.JudgmentByAdmissionNotifier.toString(); + } +} diff --git a/src/test/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionAllPartiesEmailGeneratorTest.java b/src/test/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionAllPartiesEmailGeneratorTest.java new file mode 100644 index 00000000000..ddd2e8b1368 --- /dev/null +++ b/src/test/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionAllPartiesEmailGeneratorTest.java @@ -0,0 +1,29 @@ +package uk.gov.hmcts.reform.civil.notification.handlers.judgmentbyadmission; + +import static org.assertj.core.api.Assertions.assertThat; + +import uk.gov.hmcts.reform.civil.notification.handlers.AllPartiesEmailGenerator; + +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; + +@ExtendWith(MockitoExtension.class) +class JudgmentByAdmissionAllPartiesEmailGeneratorTest { + + @Mock + private JudgmentByAdmissionAppSolOneEmailDTOGenerator appSolOneEmailGenerator; + + @Mock + private JudgmentByAdmissionDefendantEmailDTOGenerator defendantEmailDTOGenerator; + + @InjectMocks + private JudgmentByAdmissionAllPartiesEmailGenerator emailGenerator; + + @Test + void shouldDoJudgmentByAdmissionAllPartiesEmailGeneratorWithCorrectDependencies() { + assertThat(emailGenerator).isInstanceOf(AllPartiesEmailGenerator.class); + } +} diff --git a/src/test/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionAppSolOneEmailDTOGeneratorTest.java b/src/test/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionAppSolOneEmailDTOGeneratorTest.java new file mode 100644 index 00000000000..548f95f056b --- /dev/null +++ b/src/test/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionAppSolOneEmailDTOGeneratorTest.java @@ -0,0 +1,90 @@ +package uk.gov.hmcts.reform.civil.notification.handlers.judgmentbyadmission; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; +import uk.gov.hmcts.reform.civil.model.CaseData; +import uk.gov.hmcts.reform.civil.model.IdamUserDetails; +import uk.gov.hmcts.reform.civil.notify.NotificationsProperties; +import uk.gov.hmcts.reform.civil.sampledata.CaseDataBuilder; +import uk.gov.hmcts.reform.civil.service.OrganisationService; +import uk.gov.hmcts.reform.civil.utils.NotificationUtils; + +import java.util.HashMap; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; +import static uk.gov.hmcts.reform.civil.handler.callback.camunda.notification.NotificationData.CLAIM_LEGAL_ORG_NAME_SPEC; +import static uk.gov.hmcts.reform.civil.handler.callback.camunda.notification.NotificationData.DEFENDANT_NAME; +import static uk.gov.hmcts.reform.civil.handler.callback.camunda.notification.NotificationData.LEGAL_ORG_NAME; + +@ExtendWith(MockitoExtension.class) +class JudgmentByAdmissionAppSolOneEmailDTOGeneratorTest { + + private static final String TEMPLATE_ID = "judgment-by-admission-template-id"; + private static final String APPLICANT_SOL_EMAIL = "appsol@example.com"; + private static final String APPLICANT_LEGAL_ORG_NAME = "Applicant Legal Org"; + private static final String DEFENDANT = "Defendant Name"; + + @Mock + private OrganisationService organisationService; + + @Mock + private NotificationsProperties notificationsProperties; + + private JudgmentByAdmissionAppSolOneEmailDTOGenerator generator; + + @BeforeEach + void setUp() { + generator = new JudgmentByAdmissionAppSolOneEmailDTOGenerator(organisationService, notificationsProperties); + } + + @Test + void shouldReturnCorrectReferenceTemplate() { + assertThat(generator.getReferenceTemplate()).isEqualTo("claimant-judgment-by-admission-%s"); + } + + @Test + void shouldReturnCorrectEmailTemplateId() { + CaseData caseData = CaseDataBuilder.builder().build(); + when(notificationsProperties.getNotifyClaimantLRJudgmentByAdmissionTemplate()).thenReturn(TEMPLATE_ID); + + assertThat(generator.getEmailTemplateId(caseData)).isEqualTo(TEMPLATE_ID); + } + + @Test + void shouldReturnCorrectEmailAddress() { + CaseData caseData = CaseDataBuilder.builder() + .applicantSolicitor1UserDetails(new IdamUserDetails().setEmail(APPLICANT_SOL_EMAIL)) + .build(); + + assertThat(generator.getEmailAddress(caseData)).isEqualTo(APPLICANT_SOL_EMAIL); + } + + @Test + void shouldAddCustomProperties() { + CaseData caseData = CaseDataBuilder.builder().build(); + Map properties = new HashMap<>(); + + try (MockedStatic notificationUtilsMockedStatic = Mockito.mockStatic(NotificationUtils.class)) { + notificationUtilsMockedStatic + .when(() -> NotificationUtils.getApplicantLegalOrganizationName(caseData, organisationService)) + .thenReturn(APPLICANT_LEGAL_ORG_NAME); + notificationUtilsMockedStatic + .when(() -> NotificationUtils.getDefendantNameBasedOnCaseType(caseData)) + .thenReturn(DEFENDANT); + + Map updated = generator.addCustomProperties(properties, caseData); + + assertThat(updated).containsEntry(CLAIM_LEGAL_ORG_NAME_SPEC, APPLICANT_LEGAL_ORG_NAME); + assertThat(updated).containsEntry(LEGAL_ORG_NAME, APPLICANT_LEGAL_ORG_NAME); + assertThat(updated).containsEntry(DEFENDANT_NAME, DEFENDANT); + } + } +} + diff --git a/src/test/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionDefendantEmailDTOGeneratorTest.java b/src/test/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionDefendantEmailDTOGeneratorTest.java new file mode 100644 index 00000000000..2270c60d58f --- /dev/null +++ b/src/test/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionDefendantEmailDTOGeneratorTest.java @@ -0,0 +1,49 @@ +package uk.gov.hmcts.reform.civil.notification.handlers.judgmentbyadmission; + +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.gov.hmcts.reform.civil.model.CaseData; +import uk.gov.hmcts.reform.civil.model.Party; +import uk.gov.hmcts.reform.civil.notify.NotificationsProperties; +import uk.gov.hmcts.reform.civil.sampledata.CaseDataBuilder; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class JudgmentByAdmissionDefendantEmailDTOGeneratorTest { + + private static final String TEMPLATE_ID = "defendant-judgment-by-admission-template-id"; + + @Mock + private NotificationsProperties notificationsProperties; + + @InjectMocks + private JudgmentByAdmissionDefendantEmailDTOGenerator generator; + + @Test + void shouldReturnCorrectReferenceTemplate() { + assertThat(generator.getReferenceTemplate()).isEqualTo("defendant-judgment-by-admission-%s"); + } + + @Test + void shouldReturnCorrectEmailTemplateId() { + CaseData caseData = CaseDataBuilder.builder().build(); + when(notificationsProperties.getNotifyDefendantLIPJudgmentByAdmissionTemplate()).thenReturn(TEMPLATE_ID); + + assertThat(generator.getEmailTemplateId(caseData)).isEqualTo(TEMPLATE_ID); + } + + @Test + void shouldReturnRespondent1EmailAddress() { + CaseData caseData = CaseDataBuilder.builder() + .respondent1(new Party().setPartyEmail("defendant@example.com")) + .build(); + + assertThat(generator.getEmailAddress(caseData)).isEqualTo("defendant@example.com"); + } +} + diff --git a/src/test/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionNotifierTest.java b/src/test/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionNotifierTest.java new file mode 100644 index 00000000000..06744e69f30 --- /dev/null +++ b/src/test/java/uk/gov/hmcts/reform/civil/notification/handlers/judgmentbyadmission/JudgmentByAdmissionNotifierTest.java @@ -0,0 +1,21 @@ +package uk.gov.hmcts.reform.civil.notification.handlers.judgmentbyadmission; + +import static org.assertj.core.api.Assertions.assertThat; + +import uk.gov.hmcts.reform.civil.notification.handlers.NotifierTestBase; + +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; + +class JudgmentByAdmissionNotifierTest extends NotifierTestBase { + + @InjectMocks + private JudgmentByAdmissionNotifier notifier; + + @Test + void shouldReturnCorrectTaskId() { + String taskId = notifier.getTaskId(); + + assertThat(taskId).isEqualTo("JudgmentByAdmissionNotifier"); + } +}