T5: CanonicalWriter/Reader round-trip test [checkpoint]

This commit is contained in:
Artur Kruszewski
2026-07-08 00:40:38 +02:00
parent 3dd3e71b6e
commit b072cb3cfc
14 changed files with 217 additions and 47 deletions
@@ -0,0 +1,105 @@
package com.developx.szpitale.load;
import com.developx.szpitale.model.*;
import com.developx.szpitale.model.enums.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
class CanonicalRoundTripTest {
@TempDir
Path tempDir;
@Test
void write_thenRead_yieldsEqualDataset() throws Exception {
Hospital hospital = new Hospital(
"hosp:podlaskie:usk-bialystok",
"Uniwersytecki Szpital Kliniczny w Białymstoku",
"USK",
"Białystok",
"podlaskie",
LegalForm.SPZOZ,
"Uniwersytet Medyczny",
SupervisoryBodyType.RADA_SPOLECZNA,
null, null,
"https://uskwb.pl",
List.of("https://uskwb.pl/dyrekcja")
);
Person person = new Person(
"person:jan-kowalski",
"Jan Kowalski",
"Dyrektor Naczelny",
List.of("prof."),
List.of("https://uskwb.pl/dyrekcja")
);
Affiliation affiliation = new Affiliation(
"person:jan-kowalski",
AffiliationType.PARTIA,
"Koalicja Obywatelska",
ConfidenceLevel.POTWIERDZONA,
"PO",
List.of("https://uskwb.pl/dyrekcja")
);
Role role = new Role(
"hosp:podlaskie:usk-bialystok",
"person:jan-kowalski",
RoleType.DYREKTOR,
"Dyrektor Naczelny",
OrganType.DYREKCJA,
RoleStatus.AKTUALNY,
null, null,
null,
List.of("https://uskwb.pl/dyrekcja")
);
CanonicalDataset original = new CanonicalDataset(
"1.0", "podlaskie",
java.time.LocalDateTime.now(),
List.of(hospital),
List.of(person),
List.of(affiliation),
List.of(role),
List.of()
);
Path canonicalDir = tempDir.resolve("canonical");
Files.createDirectories(canonicalDir);
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
mapper.writerWithDefaultPrettyPrinter().writeValue(
canonicalDir.resolve("podlaskie.json").toFile(), original
);
CanonicalReader reader = new CanonicalReader();
CanonicalDataset readBack = reader.readSingle(tempDir, "podlaskie");
assertNotNull(readBack);
assertEquals(original.schemaVersion(), readBack.schemaVersion());
assertEquals(original.voivodeship(), readBack.voivodeship());
assertEquals(1, readBack.hospitals().size());
assertEquals(hospital.id(), readBack.hospitals().get(0).id());
assertEquals(hospital.name(), readBack.hospitals().get(0).name());
assertEquals(1, readBack.people().size());
assertEquals(person.id(), readBack.people().get(0).id());
assertEquals(person.fullName(), readBack.people().get(0).fullName());
assertEquals(1, readBack.affiliations().size());
assertEquals(affiliation.name(), readBack.affiliations().get(0).name());
assertEquals(1, readBack.roles().size());
assertEquals(role.hospitalId(), readBack.roles().get(0).hospitalId());
assertEquals(role.roleType(), readBack.roles().get(0).roleType());
}
}
@@ -2,3 +2,4 @@ com/developx/szpitale/ingest/normalize/NameNormalizerTest.class
com/developx/szpitale/ingest/normalize/PartyNormalizerTest.class
com/developx/szpitale/ingest/source/MarkdownRegistrySourceTest.class
com/developx/szpitale/ingest/normalize/DeduplicatorTest.class
com/developx/szpitale/load/CanonicalRoundTripTest.class
@@ -2,3 +2,4 @@
/home/kruszewskia/Workspace/Private/Szpitale-graph/szpitale-graph/src/test/java/com/developx/szpitale/ingest/normalize/NameNormalizerTest.java
/home/kruszewskia/Workspace/Private/Szpitale-graph/szpitale-graph/src/test/java/com/developx/szpitale/ingest/normalize/PartyNormalizerTest.java
/home/kruszewskia/Workspace/Private/Szpitale-graph/szpitale-graph/src/test/java/com/developx/szpitale/ingest/source/MarkdownRegistrySourceTest.java
/home/kruszewskia/Workspace/Private/Szpitale-graph/szpitale-graph/src/test/java/com/developx/szpitale/load/CanonicalRoundTripTest.java
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
-------------------------------------------------------------------------------
Test set: com.developx.szpitale.ingest.normalize.DeduplicatorTest
-------------------------------------------------------------------------------
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 s -- in com.developx.szpitale.ingest.normalize.DeduplicatorTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 s -- in com.developx.szpitale.ingest.normalize.DeduplicatorTest
@@ -1,4 +1,4 @@
-------------------------------------------------------------------------------
Test set: com.developx.szpitale.ingest.normalize.NameNormalizerTest
-------------------------------------------------------------------------------
Tests run: 25, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.081 s -- in com.developx.szpitale.ingest.normalize.NameNormalizerTest
Tests run: 25, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.149 s -- in com.developx.szpitale.ingest.normalize.NameNormalizerTest
@@ -1,4 +1,4 @@
-------------------------------------------------------------------------------
Test set: com.developx.szpitale.ingest.normalize.PartyNormalizerTest
-------------------------------------------------------------------------------
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.010 s -- in com.developx.szpitale.ingest.normalize.PartyNormalizerTest
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.038 s -- in com.developx.szpitale.ingest.normalize.PartyNormalizerTest
@@ -1,4 +1,4 @@
-------------------------------------------------------------------------------
Test set: com.developx.szpitale.ingest.source.MarkdownRegistrySourceTest
-------------------------------------------------------------------------------
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.096 s -- in com.developx.szpitale.ingest.source.MarkdownRegistrySourceTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.198 s -- in com.developx.szpitale.ingest.source.MarkdownRegistrySourceTest
@@ -0,0 +1,4 @@
-------------------------------------------------------------------------------
Test set: com.developx.szpitale.load.CanonicalRoundTripTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.324 s -- in com.developx.szpitale.load.CanonicalRoundTripTest