90902: Found and fixed bug in test_placeRecalculationAfterDelete

This commit is contained in:
Bruno Roemers
2022-04-29 16:03:16 +02:00
parent e9596cfff8
commit d17fd6456a

View File

@@ -1678,19 +1678,19 @@ public class VersioningWithRelationshipsTest extends AbstractIntegrationTestWith
// relationship - volume 1 & issue 1 // relationship - volume 1 & issue 1
RelationshipBuilder.createRelationshipBuilder(context, v1_1, i1_1, isIssueOfJournalVolume).build(); RelationshipBuilder.createRelationshipBuilder(context, v1_1, i1_1, isIssueOfJournalVolume).build();
// metadata - volume 3 & issue 2 // metadata - volume 1 & issue 2
itemService.addMetadata(context, v1_1, "publicationissue", "issueNumber", null, null, "issue nr 2 (plain)"); itemService.addMetadata(context, v1_1, "publicationissue", "issueNumber", null, null, "issue nr 2 (plain)");
// relationship - volume 1 & issue 3 // relationship - volume 1 & issue 3
RelationshipBuilder.createRelationshipBuilder(context, v1_1, i3_1, isIssueOfJournalVolume).build(); RelationshipBuilder.createRelationshipBuilder(context, v1_1, i3_1, isIssueOfJournalVolume).build();
// metadata - volume 3 & issue 4 // metadata - volume 1 & issue 4
itemService.addMetadata(context, v1_1, "publicationissue", "issueNumber", null, null, "issue nr 4 (plain)"); itemService.addMetadata(context, v1_1, "publicationissue", "issueNumber", null, null, "issue nr 4 (plain)");
// relationship - volume 1 & issue 5 // relationship - volume 1 & issue 5
RelationshipBuilder.createRelationshipBuilder(context, v1_1, i5_1, isIssueOfJournalVolume).build(); RelationshipBuilder.createRelationshipBuilder(context, v1_1, i5_1, isIssueOfJournalVolume).build();
// metadata - volume 3 & issue 6 // metadata - volume 1 & issue 6
itemService.addMetadata(context, v1_1, "publicationissue", "issueNumber", null, null, "issue nr 6 (plain)"); itemService.addMetadata(context, v1_1, "publicationissue", "issueNumber", null, null, "issue nr 6 (plain)");
// SUMMARY // SUMMARY
@@ -1698,9 +1698,9 @@ public class VersioningWithRelationshipsTest extends AbstractIntegrationTestWith
// volume 3 // volume 3
// - pos 0: issue 1 (rel) // - pos 0: issue 1 (rel)
// - pos 1: issue 2 (plain) // - pos 1: issue 2 (plain)
// - pos 2: issue 3 (rel) [A] // - pos 2: issue 3 (rel)
// - pos 3: issue 4 (plain) // - pos 3: issue 4 (plain)
// - pos 4: issue 5 (rel) [B] // - pos 4: issue 5 (rel)
// - pos 5: issue 6 (plain) // - pos 5: issue 6 (plain)
///////////////////////////////// /////////////////////////////////
@@ -1737,11 +1737,9 @@ public class VersioningWithRelationshipsTest extends AbstractIntegrationTestWith
assertEquals(5, mdvs1.get(5).getPlace()); assertEquals(5, mdvs1.get(5).getPlace());
///////////////////////////////////// /////////////////////////////////////
// create new version - volume 3.2 // // create new version - volume 1.2 //
///////////////////////////////////// /////////////////////////////////////
//TODO: This currently fails because we're creating a second relationship
//This is rejected in org.dspace.content.RelationshipServiceImpl.verifyMaxCardinality
Item v1_2 = versioningService.createNewVersion(context, v1_1).getItem(); Item v1_2 = versioningService.createNewVersion(context, v1_1).getItem();
installItemService.installItem(context, workspaceItemService.findByItem(context, v1_2)); installItemService.installItem(context, workspaceItemService.findByItem(context, v1_2));
context.commit(); context.commit();
@@ -1755,7 +1753,7 @@ public class VersioningWithRelationshipsTest extends AbstractIntegrationTestWith
context.commit(); context.commit();
//////////////////////////////////////////////// ////////////////////////////////////////////////
// after version creation - verify volume 3.1 // // after version creation - verify volume 1.1 //
//////////////////////////////////////////////// ////////////////////////////////////////////////
assertThat( assertThat(
@@ -1797,7 +1795,7 @@ public class VersioningWithRelationshipsTest extends AbstractIntegrationTestWith
assertEquals(5, mdvs4.get(5).getPlace()); assertEquals(5, mdvs4.get(5).getPlace());
//////////////////////////////////////////////// ////////////////////////////////////////////////
// after version creation - verify volume 3.2 // // after version creation - verify volume 1.2 //
//////////////////////////////////////////////// ////////////////////////////////////////////////
assertThat( assertThat(
@@ -1840,7 +1838,7 @@ public class VersioningWithRelationshipsTest extends AbstractIntegrationTestWith
assertEquals(5, mdvs7.get(5).getPlace()); assertEquals(5, mdvs7.get(5).getPlace());
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// remove relationship - volume 3.2 & issue 3.2 // // remove relationship - volume 1.2 & issue 3.2 //
// since an issue needs a relationship, delete the issue // // since an issue needs a relationship, delete the issue //
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@@ -1901,7 +1899,7 @@ public class VersioningWithRelationshipsTest extends AbstractIntegrationTestWith
assertEquals(5, mdvs9.get(5).getPlace()); assertEquals(5, mdvs9.get(5).getPlace());
//////////////////////////////////////// ////////////////////////////////////////
// after remove 1 - verify volume 3.2 // // after remove 1 - verify volume 1.2 //
//////////////////////////////////////// ////////////////////////////////////////
assertThat( assertThat(
@@ -1940,7 +1938,7 @@ public class VersioningWithRelationshipsTest extends AbstractIntegrationTestWith
assertEquals(4, mdvs12.get(4).getPlace()); assertEquals(4, mdvs12.get(4).getPlace());
//////////////////////////////////////// ////////////////////////////////////////
// remove metadata value - volume 3.2 // // remove metadata value - volume 1.2 //
//////////////////////////////////////// ////////////////////////////////////////
MetadataValue removeMdv1 = mdvs12.get(2); MetadataValue removeMdv1 = mdvs12.get(2);
@@ -1951,18 +1949,13 @@ public class VersioningWithRelationshipsTest extends AbstractIntegrationTestWith
assertEquals(2, removeMdv1.getPlace()); assertEquals(2, removeMdv1.getPlace());
assertEquals(v1_2, removeMdv1.getDSpaceObject()); assertEquals(v1_2, removeMdv1.getDSpaceObject());
metadataValueService.delete(context, removeMdv1); itemService.removeMetadataValues(context, v1_2, List.of(removeMdv1));
// NOTE: needed to avoid Hibernate Exception: javax.persistence.EntityNotFoundException: // NOTE: after removal, update is required to do place recalculation, among other things
// "deleted object would be re-saved by cascade (remove deleted object from associations)" itemService.update(context, v1_2);
if (v1_2.getMetadata().removeIf(removeMdv1::equals)) {
v1_2.setMetadataModified();
}
context.commit(); context.commit();
// TODO cache busting?
//////////////////////////////////////// ////////////////////////////////////////
// after remove 2 - verify volume 3.1 // // after remove 2 - verify volume 1.1 //
//////////////////////////////////////// ////////////////////////////////////////
assertThat( assertThat(
@@ -2004,7 +1997,7 @@ public class VersioningWithRelationshipsTest extends AbstractIntegrationTestWith
assertEquals(5, mdvs14.get(5).getPlace()); assertEquals(5, mdvs14.get(5).getPlace());
//////////////////////////////////////// ////////////////////////////////////////
// after remove 2 - verify volume 3.2 // // after remove 2 - verify volume 1.2 //
//////////////////////////////////////// ////////////////////////////////////////
assertThat( assertThat(
@@ -2012,8 +2005,8 @@ public class VersioningWithRelationshipsTest extends AbstractIntegrationTestWith
containsInAnyOrder(List.of( containsInAnyOrder(List.of(
isRel(v1_2, isIssueOfJournalVolume, i1_1, BOTH, 0, 0), isRel(v1_2, isIssueOfJournalVolume, i1_1, BOTH, 0, 0),
isRel(v1_2, isIssueOfJournalVolume, i3_1, LEFT_ONLY, 2, 0), isRel(v1_2, isIssueOfJournalVolume, i3_1, LEFT_ONLY, 2, 0),
// NOTE: left place was reduced by one // NOTE: left place was reduced by one (from 3 to 2)
isRel(v1_2, isIssueOfJournalVolume, i5_1, BOTH, 3, 0) isRel(v1_2, isIssueOfJournalVolume, i5_1, BOTH, 2, 0)
)) ))
); );
@@ -2032,15 +2025,11 @@ public class VersioningWithRelationshipsTest extends AbstractIntegrationTestWith
assertTrue(mdvs17.get(2) instanceof RelationshipMetadataValue); assertTrue(mdvs17.get(2) instanceof RelationshipMetadataValue);
assertEquals("issue nr 5 (rel)", mdvs17.get(2).getValue()); assertEquals("issue nr 5 (rel)", mdvs17.get(2).getValue());
assertEquals(3, mdvs17.get(2).getPlace()); assertEquals(2, mdvs17.get(2).getPlace());
assertFalse(mdvs17.get(3) instanceof RelationshipMetadataValue); assertFalse(mdvs17.get(3) instanceof RelationshipMetadataValue);
assertEquals("issue nr 6 (plain)", mdvs17.get(3).getValue()); assertEquals("issue nr 6 (plain)", mdvs17.get(3).getValue());
assertEquals(4, mdvs17.get(3).getPlace()); assertEquals(3, mdvs17.get(3).getPlace());
// TODO
// delete mdv from older
// delete rel from older
///////////////////////////////////////////// /////////////////////////////////////////////
// delete volume first for min cardinality // // delete volume first for min cardinality //