diff --git a/Neos.ContentRepository.Core/Tests/Unit/Feature/NodeReferencing/Event/NodeReferencesWereSetTest.php b/Neos.ContentRepository.Core/Tests/Unit/Feature/NodeReferencing/Event/NodeReferencesWereSetTest.php new file mode 100644 index 00000000000..8567d7b088a --- /dev/null +++ b/Neos.ContentRepository.Core/Tests/Unit/Feature/NodeReferencing/Event/NodeReferencesWereSetTest.php @@ -0,0 +1,77 @@ + $payload + * @dataProvider eventPayloadProviderWithLegacySourceNodeAggregateIdFormat + */ + public function testFromArray(array $payload, NodeReferencesWereSet $expectedEvent): void + { + self::assertEquals($expectedEvent, NodeReferencesWereSet::fromArray($payload)); + } + + /** + * The property sourceNodeAggregateId was renamed to nodeAggregateId. + * A runtime migration was added to {@see NodeReferencesWereSet::fromArray()} to handle the legacy format. + * + * Via #5153: https://github.com/neos/neos-development-collection/pull/5153 + * + * Included in Juni 2024 + * + * @return iterable + */ + public static function eventPayloadProviderWithLegacySourceNodeAggregateIdFormat(): iterable + { + yield 'legacy coveredDimensionSpacePoints succeedingNodeAggregateId fields are transformed' => [ + [ + 'contentStreamId' => 'e542b7d2-a7c1-4bd8-b02a-3e8450829965', + 'sourceNodeAggregateId' => '3b4ecdc0-8115-41ed-805d-fb98ced2276a', + 'affectedSourceOriginDimensionSpacePoints' => + [ + [ + 'language' => 'en_US', + ], + ], + 'referenceName' => 'blogs', + 'references' => [], + 'workspaceName' => 'user-admin', + ], + new NodeReferencesWereSet( + WorkspaceName::fromString('user-admin'), + ContentStreamId::fromString('e542b7d2-a7c1-4bd8-b02a-3e8450829965'), + NodeAggregateId::fromString('3b4ecdc0-8115-41ed-805d-fb98ced2276a'), + OriginDimensionSpacePointSet::fromArray([ + [ + 'language' => 'en_US', + ], + ]), + ReferenceName::fromString('blogs'), + SerializedNodeReferences::fromArray([]) + ) + ]; + } +}