Skip to content

Commit e008fb7

Browse files
committed
Delete linked maps when deleting correspondence table
1 parent 8f5e787 commit e008fb7

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

klass-shared/src/main/java/no/ssb/klass/core/service/ClassificationServiceImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,10 @@ public void deleteNotIndexCorrespondenceTable(User user, CorrespondenceTable cor
451451
throws KlassMessageException {
452452
checkAllowedToDelete(user, correspondenceTable);
453453
correspondenceTable.setDeleted();
454+
// Delete all the correspondence maps to avoid future constraint violations
455+
correspondenceTable.getCorrespondenceMaps().forEach(map -> correspondenceMapRepository.delete(map.getId()));
456+
// This just updates the object in memory, has no effect on persistence
457+
correspondenceTable.removeAllCorrespondenceMaps();
454458
saveNotIndexCorrespondenceTable(correspondenceTable);
455459
}
456460

klass-shared/src/test/java/no/ssb/klass/core/service/ClassificationServiceImplTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,27 @@ public void findCorrespondenceTablesBetweenHandlesTargetFirst() {
698698
assertEquals(1, result.size());
699699
}
700700

701+
@Test
702+
public void deleteCorrespondenceTable() throws KlassMessageException {
703+
// given
704+
ClassificationVersion source = createClassificationVersion();
705+
CorrespondenceTable correspondenceTable = TestUtil.createCorrespondenceTable(source,
706+
createClassificationVersion());
707+
708+
correspondenceTable.addCorrespondenceMap(new CorrespondenceMap(TestUtil.createClassificationItem("code1", "Code 1"), TestUtil.createClassificationItem("code2", "Code 2")));
709+
correspondenceTable.addCorrespondenceMap(new CorrespondenceMap(TestUtil.createClassificationItem("code3", "Code 3"), TestUtil.createClassificationItem("code4", "Code 4")));
710+
correspondenceTable.unpublish(Language.getDefault());
711+
when(correspondenceTableRepositoryMock.save(correspondenceTable)).thenReturn(correspondenceTable);
712+
713+
// when
714+
subject.deleteNotIndexCorrespondenceTable(TestUtil.createUser(), correspondenceTable);
715+
716+
// then
717+
assertTrue(correspondenceTable.isDeleted());
718+
verify(correspondenceMapRepositoryMock, times(2)).delete(anyLong());
719+
assertEquals(0, correspondenceTable.getCorrespondenceMaps().size());
720+
}
721+
701722
private ClassificationVersion createClassificationVersion() {
702723
ClassificationVersion version = TestUtil.createClassificationVersion(TestUtil.anyDateRange());
703724
ClassificationSeries classification = TestUtil.createClassification("name");

0 commit comments

Comments
 (0)