Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

K1J-330: CertificateStatusUpdateForCareType should include sent and received questions. #1128

Merged
merged 1 commit into from
Oct 11, 2024
Merged
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
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();
}
}
}
Loading