Skip to content

Commit

Permalink
K1J-330: CertificateStatusUpdateForCareType should include sent and r…
Browse files Browse the repository at this point in the history
…eceived questions. (#1128)
  • Loading branch information
ChrilleSigerhed authored Oct 11, 2024
1 parent 74ffe9e commit 112fd06
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -136,4 +136,4 @@ private String resolveIntygTypeVersion(String intygsTyp, Message message, String
message.setHeader(INTYG_TYPE_VERSION, certificateVersion);
return certificateVersion;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,16 @@ private CertificateStatusUpdateFactory() {
}

public static byte[] create(String encodedXmlRepresentation, HandelsekodEnum eventType,
LocalDateTime now, String handledByHsaId, String reference) {
LocalDateTime now, String handledByHsaId, String reference, ArendeCount sentQuestions, ArendeCount recievedQuestions) {
final var request = getRegisterCertificateType(encodedXmlRepresentation);

final var certificateStatusUpdateForCareType = new CertificateStatusUpdateForCareType();
certificateStatusUpdateForCareType.setIntyg(request.getIntyg());
certificateStatusUpdateForCareType.setHandelse(
NotificationRedeliveryUtil.getEventV3(eventType, now, null, null)
);
certificateStatusUpdateForCareType.setSkickadeFragor(NotificationTypeConverter.toArenden(ArendeCount.getEmpty()));
certificateStatusUpdateForCareType.setMottagnaFragor(NotificationTypeConverter.toArenden(ArendeCount.getEmpty()));
certificateStatusUpdateForCareType.setSkickadeFragor(NotificationTypeConverter.toArenden(sentQuestions));
certificateStatusUpdateForCareType.setMottagnaFragor(NotificationTypeConverter.toArenden(recievedQuestions));
certificateStatusUpdateForCareType.setHanteratAv(
NotificationRedeliveryUtil.getIIType(new HsaId(), handledByHsaId, HSA_ID_OID)
);
Expand Down Expand Up @@ -99,4 +99,4 @@ private static byte[] convertToByteArray(JAXBElement<CertificateStatusUpdateForC
throw new IllegalStateException(e);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,17 @@ public NotificationMessage create(Certificate certificate, String encodedXmlRepr
);

notificationMessage.setStatusUpdateXml(
CertificateStatusUpdateFactory.create(encodedXmlRepresentation, eventType, now, handledByHsaId,
certificate.getMetadata().getExternalReference())
CertificateStatusUpdateFactory.create(
encodedXmlRepresentation,
eventType,
now,
handledByHsaId,
certificate.getMetadata().getExternalReference(),
notificationMessage.getSkickadeFragor(),
notificationMessage.getMottagnaFragor()
)
);

return notificationMessage;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -104,4 +104,4 @@ private static HandelsekodEnum getEventType(ArendeAmne questionType, boolean isA
private boolean unitIsIntegrated(Certificate certificate) {
return integreradeEnheterRegistry.getIntegreradEnhet(certificate.getMetadata().getUnit().getUnitId()) != null;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
package se.inera.intyg.webcert.web.converter.util;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import org.junit.Test;
import se.inera.intyg.webcert.common.service.exception.WebCertServiceException;
Expand All @@ -37,8 +38,14 @@ public void testPartCodeToFrageStallareKod() {
.partToFrageStallarKod(PARTCODE_HSVARD));
}

@Test
public void testPartNameToFrageStallareNamn() {
assertTrue(FrageStallare.FORSAKRINGSKASSAN.isNameEqual("Försäkringskassan"));
assertTrue(FrageStallare.WEBCERT.isNameEqual("Webcert"));
}

@Test(expected = WebCertServiceException.class)
public void testInvalidPartKod() {
FragestallareConverterUtil.partToFrageStallarKod("INVALID");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.Mockito.doReturn;
import static se.inera.intyg.common.support.Constants.KV_HANDELSE_CODE_SYSTEM;
import static se.inera.intyg.webcert.notification_sender.notifications.services.NotificationTypeConverter.toArenden;

import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
Expand Down Expand Up @@ -69,6 +70,7 @@ class NotificationMessageFactoryTest {
private static final Intyg EXPECTED_INTYG = new Intyg();
private static final String CERTIFICATE_ID = "certificateId";
private static final String HSA_ID = "hsaId";
private static final ArendeCount ARENDE_COUNT = new ArendeCount(1, 1, 1, 1);
private Certificate certificate;
private String xmlRepresentation;
private HandelsekodEnum eventType;
Expand Down Expand Up @@ -113,6 +115,12 @@ void setUp() {
registerCertificateType.setIntyg(EXPECTED_INTYG);
final var marshall = marshall(registerCertificateType);
xmlRepresentation = Base64.getEncoder().encodeToString(marshall.getBytes(StandardCharsets.UTF_8));

final var questions = List.of(Question.builder().build());

doReturn(questions).when(csIntegrationService).getQuestions(ID);
doReturn(ARENDE_COUNT).when(questionCounter).calculateArendeCount(questions, FrageStallare.WEBCERT);
doReturn(ARENDE_COUNT).when(questionCounter).calculateArendeCount(questions, FrageStallare.FORSAKRINGSKASSAN);
}

@Test
Expand Down Expand Up @@ -156,34 +164,20 @@ void shallConvertFragorOchSvar() {

@Test
void shallConvertMottagnaFragor() {
final var questions = List.of(Question.builder().build());
final var expectedArendeCount = new ArendeCount(1, 1, 1, 1);

doReturn(questions).when(csIntegrationService).getQuestions(ID);
doReturn(new ArendeCount()).when(questionCounter).calculateArendeCount(questions, FrageStallare.WEBCERT);
doReturn(expectedArendeCount).when(questionCounter).calculateArendeCount(questions, FrageStallare.FORSAKRINGSKASSAN);

final var result = converter.create(certificate, xmlRepresentation, eventType, HSA_ID);

assertEquals(expectedArendeCount.getBesvarade(), result.getMottagnaFragor().getBesvarade());
assertEquals(expectedArendeCount.getHanterade(), result.getMottagnaFragor().getHanterade());
assertEquals(expectedArendeCount.getEjBesvarade(), result.getMottagnaFragor().getEjBesvarade());
assertEquals(expectedArendeCount.getTotalt(), result.getMottagnaFragor().getTotalt());
assertEquals(ARENDE_COUNT.getBesvarade(), result.getSkickadeFragor().getBesvarade());
assertEquals(ARENDE_COUNT.getHanterade(), result.getSkickadeFragor().getHanterade());
assertEquals(ARENDE_COUNT.getEjBesvarade(), result.getSkickadeFragor().getEjBesvarade());
assertEquals(ARENDE_COUNT.getTotalt(), result.getSkickadeFragor().getTotalt());
}

@Test
void shallConvertSkickadeFragor() {
final var questions = List.of(Question.builder().build());
final var expectedArendeCount = new ArendeCount(1, 1, 1, 1);

doReturn(questions).when(csIntegrationService).getQuestions(ID);
doReturn(expectedArendeCount).when(questionCounter).calculateArendeCount(questions, FrageStallare.WEBCERT);

final var result = converter.create(certificate, xmlRepresentation, eventType, HSA_ID);
assertEquals(expectedArendeCount.getBesvarade(), result.getSkickadeFragor().getBesvarade());
assertEquals(expectedArendeCount.getHanterade(), result.getSkickadeFragor().getHanterade());
assertEquals(expectedArendeCount.getEjBesvarade(), result.getSkickadeFragor().getEjBesvarade());
assertEquals(expectedArendeCount.getTotalt(), result.getSkickadeFragor().getTotalt());
assertEquals(ARENDE_COUNT.getBesvarade(), result.getSkickadeFragor().getBesvarade());
assertEquals(ARENDE_COUNT.getHanterade(), result.getSkickadeFragor().getHanterade());
assertEquals(ARENDE_COUNT.getEjBesvarade(), result.getSkickadeFragor().getEjBesvarade());
assertEquals(ARENDE_COUNT.getTotalt(), result.getSkickadeFragor().getTotalt());
}

@Test
Expand Down Expand Up @@ -242,6 +236,28 @@ void shallIncludeRef() {
final var careType = unmarshall(result.getStatusUpdateXml());
assertEquals(EXTERNAL_REF, careType.getRef());
}

@Test
void shallIncludeSentQuestions() {
final var arenden = toArenden(ARENDE_COUNT);
final var result = converter.create(certificate, xmlRepresentation, eventType, HSA_ID);
final var careType = unmarshall(result.getStatusUpdateXml());
assertEquals(arenden.getBesvarade(), careType.getSkickadeFragor().getBesvarade());
assertEquals(arenden.getHanterade(), careType.getSkickadeFragor().getHanterade());
assertEquals(arenden.getEjBesvarade(), careType.getSkickadeFragor().getEjBesvarade());
assertEquals(arenden.getTotalt(), careType.getSkickadeFragor().getTotalt());
}

@Test
void shallIncludeRecievedQuestions() {
final var arenden = toArenden(ARENDE_COUNT);
final var result = converter.create(certificate, xmlRepresentation, eventType, HSA_ID);
final var careType = unmarshall(result.getStatusUpdateXml());
assertEquals(arenden.getBesvarade(), careType.getSkickadeFragor().getBesvarade());
assertEquals(arenden.getHanterade(), careType.getSkickadeFragor().getHanterade());
assertEquals(arenden.getEjBesvarade(), careType.getSkickadeFragor().getEjBesvarade());
assertEquals(arenden.getTotalt(), careType.getSkickadeFragor().getTotalt());
}
}


Expand All @@ -265,4 +281,4 @@ private static CertificateStatusUpdateForCareType unmarshall(byte[] registerCert
final var type = XmlMarshallerHelper.unmarshal(new String(registerCertificateType, StandardCharsets.UTF_8));
return (CertificateStatusUpdateForCareType) type.getValue();
}
}
}

0 comments on commit 112fd06

Please sign in to comment.