From a9dbbce68e88b1ac9c774a7e21bd6b48d4492cb7 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Tue, 14 May 2024 11:12:44 +0200 Subject: [PATCH 01/18] TASK: Allow PropertyName in `Node::getProperty` --- .../Classes/Projection/ContentGraph/Node.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Neos.ContentRepository.Core/Classes/Projection/ContentGraph/Node.php b/Neos.ContentRepository.Core/Classes/Projection/ContentGraph/Node.php index 70a79fc5fa8..ab33e6f0d97 100644 --- a/Neos.ContentRepository.Core/Classes/Projection/ContentGraph/Node.php +++ b/Neos.ContentRepository.Core/Classes/Projection/ContentGraph/Node.php @@ -23,6 +23,7 @@ use Neos\ContentRepository\Core\SharedModel\Node\NodeAggregateClassification; use Neos\ContentRepository\Core\SharedModel\Node\NodeAggregateId; use Neos\ContentRepository\Core\SharedModel\Node\NodeName; +use Neos\ContentRepository\Core\SharedModel\Node\PropertyName; use Neos\ContentRepository\Core\SharedModel\Workspace\ContentStreamId; use Neos\ContentRepository\Core\SharedModel\Workspace\WorkspaceName; @@ -169,13 +170,13 @@ public static function create(ContentRepositoryId $contentRepositoryId, Workspac /** * Returns the specified property, or null if it does not exist (or was set to null -> unset) * - * @param string $propertyName Name of the property + * @param PropertyName|string $propertyName Name of the property * @return mixed value of the property * @api */ - public function getProperty(string $propertyName): mixed + public function getProperty(PropertyName|string $propertyName): mixed { - return $this->properties->offsetGet($propertyName); + return $this->properties->offsetGet($propertyName instanceof PropertyName ? $propertyName->value : $propertyName); } /** @@ -183,13 +184,13 @@ public function getProperty(string $propertyName): mixed * * That means that {@see self::getProperty()} will not be null, except for the rare case the property deserializing returns null. * - * @param string $propertyName Name of the property + * @param PropertyName|string $propertyName Name of the property * @return boolean * @api */ - public function hasProperty(string $propertyName): bool + public function hasProperty(PropertyName|string $propertyName): bool { - return $this->properties->offsetExists($propertyName); + return $this->properties->offsetExists($propertyName instanceof PropertyName ? $propertyName->value : $propertyName); } /** From b4fe67e169446987a1a9a09bc62c6a13a1b51aca Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Tue, 20 Feb 2024 17:45:12 +0100 Subject: [PATCH 02/18] !!! TASK: Refine NodeTypeManager API to use `NodeTypeName` as parameters Followup to #4520 --- .../Feature/Common/ConstraintChecks.php | 6 ++--- .../Dto/NodeAggregateIdsByNodePaths.php | 2 +- .../Feature/NodeCreation/NodeCreation.php | 11 ++++---- .../Feature/NodeTypeChange/NodeTypeChange.php | 11 ++++---- .../RootNodeCreation/RootNodeHandling.php | 11 ++++---- .../Classes/NodeType/NodeTypeManager.php | 26 ++++++++++--------- .../DisallowedChildNodeAdjustment.php | 12 ++++----- .../Adjustment/TetheredNodeAdjustments.php | 2 +- .../Classes/Service/NodeTypeSchemaBuilder.php | 8 +++--- 9 files changed, 44 insertions(+), 45 deletions(-) diff --git a/Neos.ContentRepository.Core/Classes/Feature/Common/ConstraintChecks.php b/Neos.ContentRepository.Core/Classes/Feature/Common/ConstraintChecks.php index 5674559e866..c7a064f4cc6 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/Common/ConstraintChecks.php +++ b/Neos.ContentRepository.Core/Classes/Feature/Common/ConstraintChecks.php @@ -177,7 +177,7 @@ protected function requireRootNodeTypeToBeUnoccupied( protected function requireTetheredDescendantNodeTypesToExist(NodeType $nodeType): void { // this getter throws if any of the child nodeTypes doesnt exist! - $tetheredNodeTypes = $this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($nodeType); + $tetheredNodeTypes = $this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($nodeType->name); foreach ($tetheredNodeTypes as $tetheredNodeType) { $this->requireTetheredDescendantNodeTypesToExist($tetheredNodeType); } @@ -189,7 +189,7 @@ protected function requireTetheredDescendantNodeTypesToExist(NodeType $nodeType) */ protected function requireTetheredDescendantNodeTypesToNotBeOfTypeRoot(NodeType $nodeType): void { - foreach ($this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($nodeType) as $tetheredChildNodeType) { + foreach ($this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($nodeType->name) as $tetheredChildNodeType) { if ($tetheredChildNodeType->isOfType(NodeTypeName::ROOT_NODE_TYPE_NAME)) { throw new NodeTypeIsOfTypeRoot( 'Node type "' . $nodeType->name->value . '" for tethered descendant is of type root.', @@ -370,7 +370,7 @@ protected function areNodeTypeConstraintsImposedByGrandparentValid( ): bool { return !($parentNodeName && $grandParentsNodeType->hasTetheredNode($parentNodeName) - && !$this->getNodeTypeManager()->isNodeTypeAllowedAsChildToTetheredNode($grandParentsNodeType, $parentNodeName, $nodeType)); + && !$this->getNodeTypeManager()->isNodeTypeAllowedAsChildToTetheredNode($grandParentsNodeType->name, $parentNodeName, $nodeType->name)); } /** diff --git a/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/Dto/NodeAggregateIdsByNodePaths.php b/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/Dto/NodeAggregateIdsByNodePaths.php index 3d289ec0385..d5eda29f1d9 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/Dto/NodeAggregateIdsByNodePaths.php +++ b/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/Dto/NodeAggregateIdsByNodePaths.php @@ -128,7 +128,7 @@ private static function createNodeAggregateIdsForNodeType( ?string $pathPrefix = null ): array { $nodeAggregateIds = []; - foreach ($nodeTypeManager->getTetheredNodesConfigurationForNodeType($nodeTypeManager->requireNodeType($nodeTypeName)) as $nodeName => $childNodeType) { + foreach ($nodeTypeManager->getTetheredNodesConfigurationForNodeType($nodeTypeName) as $nodeName => $childNodeType) { $path = $pathPrefix ? $pathPrefix . '/' . $nodeName : $nodeName; $nodeAggregateIds[$path] = NodeAggregateId::create(); $nodeAggregateIds = array_merge( diff --git a/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/NodeCreation.php b/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/NodeCreation.php index 1c38334ff2d..6e8666fa09e 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/NodeCreation.php +++ b/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/NodeCreation.php @@ -209,7 +209,7 @@ private function handleCreateNodeAggregateWithNodeAndSerializedProperties( array_push($events, ...iterator_to_array($this->handleTetheredChildNodes( $command, $contentGraph, - $nodeType, + $command->nodeTypeName, $coveredDimensionSpacePoints, $command->nodeAggregateId, $descendantNodeAggregateIds, @@ -257,16 +257,15 @@ private function createRegularWithNode( private function handleTetheredChildNodes( CreateNodeAggregateWithNodeAndSerializedProperties $command, ContentGraphInterface $contentGraph, - NodeType $nodeType, + NodeTypeName $nodeTypeName, DimensionSpacePointSet $coveredDimensionSpacePoints, NodeAggregateId $parentNodeAggregateId, NodeAggregateIdsByNodePaths $nodeAggregateIds, ?NodePath $nodePath ): Events { $events = []; - foreach ($this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($nodeType) as $rawNodeName => $childNodeType) { - assert($childNodeType instanceof NodeType); - $nodeName = NodeName::fromString($rawNodeName); + foreach ($this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($nodeTypeName) as $nodeNameString => $childNodeType) { + $nodeName = NodeName::fromString($nodeNameString); $childNodePath = $nodePath ? $nodePath->appendPathSegment($nodeName) : NodePath::fromString($nodeName->value); @@ -289,7 +288,7 @@ private function handleTetheredChildNodes( array_push($events, ...iterator_to_array($this->handleTetheredChildNodes( $command, $contentGraph, - $childNodeType, + $childNodeType->name, $coveredDimensionSpacePoints, $childNodeAggregateId, $nodeAggregateIds, diff --git a/Neos.ContentRepository.Core/Classes/Feature/NodeTypeChange/NodeTypeChange.php b/Neos.ContentRepository.Core/Classes/Feature/NodeTypeChange/NodeTypeChange.php index 39219ddfd1b..16219eb7160 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/NodeTypeChange/NodeTypeChange.php +++ b/Neos.ContentRepository.Core/Classes/Feature/NodeTypeChange/NodeTypeChange.php @@ -29,6 +29,7 @@ use Neos\ContentRepository\Core\NodeType\NodeType; use Neos\ContentRepository\Core\NodeType\NodeTypeManager; use Neos\ContentRepository\Core\Projection\ContentGraph\ContentGraphInterface; +use Neos\ContentRepository\Core\NodeType\NodeTypeName; use Neos\ContentRepository\Core\Projection\ContentGraph\Node; use Neos\ContentRepository\Core\Projection\ContentGraph\NodeAggregate; use Neos\ContentRepository\Core\Projection\ContentGraph\NodePath; @@ -148,7 +149,7 @@ private function handleChangeNodeAggregateType( * Preparation - make the command fully deterministic in case of rebase **************/ $descendantNodeAggregateIds = $command->tetheredDescendantNodeAggregateIds->completeForNodeOfType( - $newNodeType->name, + $command->newNodeTypeName, $this->nodeTypeManager ); // Write the auto-created descendant node aggregate ids back to the command; @@ -176,12 +177,12 @@ private function handleChangeNodeAggregateType( array_push($events, ...iterator_to_array($this->deleteObsoleteTetheredNodesWhenChangingNodeType( $contentGraph, $nodeAggregate, - $newNodeType + $command->newNodeTypeName ))); } // new tethered child nodes - $expectedTetheredNodes = $this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($newNodeType); + $expectedTetheredNodes = $this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($command->newNodeTypeName); foreach ($nodeAggregate->getNodes() as $node) { assert($node instanceof Node); foreach ($expectedTetheredNodes as $serializedTetheredNodeName => $expectedTetheredNodeType) { @@ -347,9 +348,9 @@ private function deleteDisallowedNodesWhenChangingNodeType( private function deleteObsoleteTetheredNodesWhenChangingNodeType( ContentGraphInterface $contentGraph, NodeAggregate $nodeAggregate, - NodeType $newNodeType + NodeTypeName $newNodeTypeName ): Events { - $expectedTetheredNodes = $this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($newNodeType); + $expectedTetheredNodes = $this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($newNodeTypeName); $events = []; // find disallowed tethered nodes diff --git a/Neos.ContentRepository.Core/Classes/Feature/RootNodeCreation/RootNodeHandling.php b/Neos.ContentRepository.Core/Classes/Feature/RootNodeCreation/RootNodeHandling.php index 8bd2e3cb142..ab6f0a1b9a5 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/RootNodeCreation/RootNodeHandling.php +++ b/Neos.ContentRepository.Core/Classes/Feature/RootNodeCreation/RootNodeHandling.php @@ -105,7 +105,7 @@ private function handleCreateRootNodeAggregateWithNode( foreach ($this->getInterDimensionalVariationGraph()->getRootGeneralizations() as $rootGeneralization) { array_push($events, ...iterator_to_array($this->handleTetheredRootChildNodes( $contentGraph->getContentStreamId(), - $nodeType, + $command->nodeTypeName, OriginDimensionSpacePoint::fromDimensionSpacePoint($rootGeneralization), $this->getInterDimensionalVariationGraph()->getSpecializationSet($rootGeneralization, true), $command->nodeAggregateId, @@ -184,7 +184,7 @@ private function handleUpdateRootNodeAggregateDimensions( */ private function handleTetheredRootChildNodes( ContentStreamId $contentStreamId, - NodeType $nodeType, + NodeTypeName $nodeTypeName, OriginDimensionSpacePoint $originDimensionSpacePoint, DimensionSpacePointSet $coveredDimensionSpacePoints, NodeAggregateId $parentNodeAggregateId, @@ -192,9 +192,8 @@ private function handleTetheredRootChildNodes( ?NodePath $nodePath ): Events { $events = []; - foreach ($this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($nodeType) as $rawNodeName => $childNodeType) { - assert($childNodeType instanceof NodeType); - $nodeName = NodeName::fromString($rawNodeName); + foreach ($this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($nodeTypeName) as $nodeNameString => $childNodeType) { + $nodeName = NodeName::fromString($nodeNameString); $childNodePath = $nodePath ? $nodePath->appendPathSegment($nodeName) : NodePath::fromString($nodeName->value); @@ -215,7 +214,7 @@ private function handleTetheredRootChildNodes( array_push($events, ...iterator_to_array($this->handleTetheredRootChildNodes( $contentStreamId, - $childNodeType, + $childNodeType->name, $originDimensionSpacePoint, $coveredDimensionSpacePoints, $childNodeAggregateId, diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php index 7ade13450ab..0dcaf64fc58 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php @@ -191,14 +191,14 @@ public function overrideNodeTypes(array $completeNodeTypeConfiguration): void } /** - * @param NodeType $nodeType + * @param NodeTypeName $nodeTypeName * @param NodeName $tetheredNodeName * @return NodeType * @throws TetheredNodeNotConfigured if the requested tethered node is not configured. Check via {@see NodeType::hasTetheredNode()}. */ - public function getTypeOfTetheredNode(NodeType $nodeType, NodeName $tetheredNodeName): NodeType + public function getTypeOfTetheredNode(NodeTypeName $nodeTypeName, NodeName $tetheredNodeName): NodeType { - $nameOfTetheredNode = $nodeType->getNodeTypeNameOfTetheredNode($tetheredNodeName); + $nameOfTetheredNode = $this->requireNodeType($nodeTypeName)->getNodeTypeNameOfTetheredNode($tetheredNodeName); return $this->requireNodeType($nameOfTetheredNode); } @@ -207,9 +207,9 @@ public function getTypeOfTetheredNode(NodeType $nodeType, NodeName $tetheredNode * * @return array the key of this array is the name of the child, and the value its NodeType. */ - public function getTetheredNodesConfigurationForNodeType(NodeType $nodeType): array + public function getTetheredNodesConfigurationForNodeType(NodeTypeName $nodeTypeName): array { - $childNodeConfiguration = $nodeType->getConfiguration('childNodes'); + $childNodeConfiguration = $this->requireNodeType($nodeTypeName)->getConfiguration('childNodes'); $autoCreatedChildNodes = []; foreach ($childNodeConfiguration ?? [] as $childNodeName => $configurationForChildNode) { if (isset($configurationForChildNode['type'])) { @@ -225,21 +225,21 @@ public function getTetheredNodesConfigurationForNodeType(NodeType $nodeType): ar * * Only allowed to be called if $tetheredNodeName is actually tethered. * - * @param NodeType $parentNodeType The NodeType to check constraints based on. + * @param NodeTypeName $parentNodeTypeName The NodeType to check constraints based on. * @param NodeName $tetheredNodeName The name of a configured tethered node of this NodeType - * @param NodeType $nodeType The NodeType to check constraints for. + * @param NodeTypeName $nodeTypeName The NodeType to check constraints for. * @return bool true if the $nodeType is allowed as grandchild node, false otherwise. * @throws \InvalidArgumentException if the requested tethered node is not configured in the parent NodeType. Check via {@see NodeType::hasTetheredNode()}. */ - public function isNodeTypeAllowedAsChildToTetheredNode(NodeType $parentNodeType, NodeName $tetheredNodeName, NodeType $nodeType): bool + public function isNodeTypeAllowedAsChildToTetheredNode(NodeTypeName $parentNodeTypeName, NodeName $tetheredNodeName, NodeTypeName $nodeTypeName): bool { try { - $typeOfTetheredNode = $this->getTypeOfTetheredNode($parentNodeType, $tetheredNodeName); + $typeOfTetheredNode = $this->getTypeOfTetheredNode($parentNodeTypeName, $tetheredNodeName); } catch (TetheredNodeNotConfigured $exception) { throw new \InvalidArgumentException( sprintf( 'Cannot determine if grandchild is allowed in %s. Because the given child node name "%s" is not auto-created.', - $parentNodeType->name->value, + $parentNodeTypeName->value, $tetheredNodeName->value ), 1403858395, @@ -252,7 +252,7 @@ public function isNodeTypeAllowedAsChildToTetheredNode(NodeType $parentNodeType, // Constraints configured at the childNode configuration of the parent. try { - $childNodeConstraintConfiguration = $parentNodeType->getConfiguration('childNodes.' . $tetheredNodeName->value . '.constraints.nodeTypes') ?? []; + $childNodeConstraintConfiguration = $this->requireNodeType($parentNodeTypeName)->getConfiguration('childNodes.' . $tetheredNodeName->value . '.constraints.nodeTypes') ?? []; } catch (PropertyNotAccessibleException $exception) { // We ignore this because the configuration might just not have any constraints, if the childNode was not configured the exception above would have been thrown. $childNodeConstraintConfiguration = []; @@ -260,7 +260,9 @@ public function isNodeTypeAllowedAsChildToTetheredNode(NodeType $parentNodeType, $constraints = Arrays::arrayMergeRecursiveOverrule($constraints, $childNodeConstraintConfiguration); - return ConstraintCheck::create($constraints)->isNodeTypeAllowed($nodeType); + return ConstraintCheck::create($constraints)->isNodeTypeAllowed( + $this->requireNodeType($nodeTypeName) + ); } /** diff --git a/Neos.ContentRepository.StructureAdjustment/src/Adjustment/DisallowedChildNodeAdjustment.php b/Neos.ContentRepository.StructureAdjustment/src/Adjustment/DisallowedChildNodeAdjustment.php index 5f602315ddd..e3febf174f8 100644 --- a/Neos.ContentRepository.StructureAdjustment/src/Adjustment/DisallowedChildNodeAdjustment.php +++ b/Neos.ContentRepository.StructureAdjustment/src/Adjustment/DisallowedChildNodeAdjustment.php @@ -71,19 +71,17 @@ public function findAdjustmentsForNodeType(NodeTypeName $nodeTypeName): \Generat } $allowedByGrandparent = false; - $grandparentNodeType = null; if ( $parentNode !== null && $grandparentNode !== null && $parentNode->classification->isTethered() && !is_null($parentNode->nodeName) ) { - $grandparentNodeType = $this->nodeTypeManager->hasNodeType($grandparentNode->nodeTypeName) ? $this->nodeTypeManager->getNodeType($grandparentNode->nodeTypeName) : null; - if ($grandparentNodeType !== null) { + if ($this->nodeTypeManager->hasNodeType($grandparentNode->nodeTypeName)) { $allowedByGrandparent = $this->nodeTypeManager->isNodeTypeAllowedAsChildToTetheredNode( - $grandparentNodeType, + $grandparentNode->nodeTypeName, $parentNode->nodeName, - $nodeType + $nodeAggregate->nodeTypeName ); } } @@ -100,9 +98,9 @@ public function findAdjustmentsForNodeType(NodeTypeName $nodeTypeName): \Generat and the grandparent node type "%s" is not allowing grandchildren of type "%s". Thus, the node is invalid at this location and should be removed. ', - $parentNodeType !== null ? $parentNodeType->name->value : '', + $parentNode?->nodeTypeName->value ?? '', $node->nodeTypeName->value, - $grandparentNodeType !== null ? $grandparentNodeType->name->value : '', + $grandparentNode?->nodeTypeName->value ?? '', $node->nodeTypeName->value, ); diff --git a/Neos.ContentRepository.StructureAdjustment/src/Adjustment/TetheredNodeAdjustments.php b/Neos.ContentRepository.StructureAdjustment/src/Adjustment/TetheredNodeAdjustments.php index 73195ff0991..f58e4bb02f2 100644 --- a/Neos.ContentRepository.StructureAdjustment/src/Adjustment/TetheredNodeAdjustments.php +++ b/Neos.ContentRepository.StructureAdjustment/src/Adjustment/TetheredNodeAdjustments.php @@ -51,7 +51,7 @@ public function findAdjustmentsForNodeType(NodeTypeName $nodeTypeName): \Generat // In case we cannot find the expected tethered nodes, this fix cannot do anything. return; } - $expectedTetheredNodes = $this->nodeTypeManager->getTetheredNodesConfigurationForNodeType($nodeType); + $expectedTetheredNodes = $this->nodeTypeManager->getTetheredNodesConfigurationForNodeType($nodeTypeName); foreach ($this->projectedNodeIterator->nodeAggregatesOfType($nodeTypeName) as $nodeAggregate) { // find missing tethered nodes diff --git a/Neos.Neos/Classes/Service/NodeTypeSchemaBuilder.php b/Neos.Neos/Classes/Service/NodeTypeSchemaBuilder.php index 9e1d623a497..4f6d755a356 100644 --- a/Neos.Neos/Classes/Service/NodeTypeSchemaBuilder.php +++ b/Neos.Neos/Classes/Service/NodeTypeSchemaBuilder.php @@ -15,6 +15,7 @@ namespace Neos\Neos\Service; use Neos\ContentRepository\Core\NodeType\NodeType; +use Neos\ContentRepository\Core\NodeType\NodeTypeName; use Neos\ContentRepository\Core\NodeType\NodeTypeManager; use Neos\ContentRepository\Core\SharedModel\Node\NodeName; @@ -94,7 +95,6 @@ protected function generateConstraints() { $constraints = []; $nodeTypes = $this->nodeTypeManager->getNodeTypes(true); - /** @var NodeType $nodeType */ foreach ($nodeTypes as $nodeTypeName => $nodeType) { if ($nodeType->isAbstract()) { continue; @@ -109,9 +109,9 @@ protected function generateConstraints() } } - foreach ($this->nodeTypeManager->getTetheredNodesConfigurationForNodeType($nodeType) as $key => $_x) { - foreach ($nodeTypes as $innerNodeTypeName => $innerNodeType) { - if ($this->nodeTypeManager->isNodeTypeAllowedAsChildToTetheredNode($nodeType, NodeName::fromString($key), $innerNodeType)) { + foreach ($this->nodeTypeManager->getTetheredNodesConfigurationForNodeType($nodeType->name) as $key => $_x) { + foreach ($nodeTypes as $innerNodeTypeName => $_y) { + if ($this->nodeTypeManager->isNodeTypeAllowedAsChildToTetheredNode($nodeType->name, NodeName::fromString($key), NodeTypeName::fromString($innerNodeTypeName))) { $constraints[$nodeTypeName]['childNodes'][$key]['nodeTypes'][$innerNodeTypeName] = true; } } From f8bf8db47304ac41d7a992d02b79b6e4f3476107 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Wed, 3 Apr 2024 21:28:18 +0200 Subject: [PATCH 03/18] TASK: Make `requireNodeType` private --- .../Classes/Feature/Common/TetheredNodeInternals.php | 4 ++-- .../Classes/NodeType/NodeTypeManager.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Neos.ContentRepository.Core/Classes/Feature/Common/TetheredNodeInternals.php b/Neos.ContentRepository.Core/Classes/Feature/Common/TetheredNodeInternals.php index 0a8f10ce699..c99412cd353 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/Common/TetheredNodeInternals.php +++ b/Neos.ContentRepository.Core/Classes/Feature/Common/TetheredNodeInternals.php @@ -69,8 +69,8 @@ protected function createEventsForMissingTetheredNode( if ($childNodeAggregate === null) { // there is no tethered child node aggregate already; let's create it! - $nodeType = $this->nodeTypeManager->requireNodeType($parentNodeAggregate->nodeTypeName); - if ($nodeType->isOfType(NodeTypeName::ROOT_NODE_TYPE_NAME)) { + $nodeType = $this->nodeTypeManager->getNodeType($parentNodeAggregate->nodeTypeName); + if ($nodeType?->isOfType(NodeTypeName::ROOT_NODE_TYPE_NAME)) { $events = []; $tetheredNodeAggregateId = $tetheredNodeAggregateId ?: NodeAggregateId::create(); // we create in one origin DSP and vary in the others diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php index 0dcaf64fc58..7cd5475ebd1 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php @@ -382,9 +382,9 @@ private function evaluateSuperTypeConfiguration( } /** - * @internal helper to throw if the NodeType doesn't exit + * Helper to throw if the NodeType doesn't exit */ - public function requireNodeType(string|NodeTypeName $nodeTypeName): NodeType + private function requireNodeType(string|NodeTypeName $nodeTypeName): NodeType { return $this->getNodeType($nodeTypeName) ?? throw new NodeTypeNotFoundException( sprintf( From ba5f7665d4cb7c6a8f5a1a5f3810912feb509333 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Wed, 1 May 2024 14:11:08 +0200 Subject: [PATCH 04/18] TASK: Fix unit test to adjusted `getTetheredNodesConfigurationForNodeType` api --- .../Tests/Unit/NodeType/NodeTypeManagerTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Neos.ContentRepository.Core/Tests/Unit/NodeType/NodeTypeManagerTest.php b/Neos.ContentRepository.Core/Tests/Unit/NodeType/NodeTypeManagerTest.php index db140498d82..017274ad619 100644 --- a/Neos.ContentRepository.Core/Tests/Unit/NodeType/NodeTypeManagerTest.php +++ b/Neos.ContentRepository.Core/Tests/Unit/NodeType/NodeTypeManagerTest.php @@ -433,8 +433,8 @@ public function anInheritedNodeTypePropertyCanBeOverruledWithEmptyArray(): void */ public function getAutoCreatedChildNodesReturnsLowercaseNames() { - $parentNodeType = $this->nodeTypeManager->getNodeType(NodeTypeName::fromString('Neos.ContentRepository.Testing:Page2')); - $autoCreatedChildNodes = $this->nodeTypeManager->getTetheredNodesConfigurationForNodeType($parentNodeType); + $parentNodeTypeName = NodeTypeName::fromString('Neos.ContentRepository.Testing:Page2'); + $autoCreatedChildNodes = $this->nodeTypeManager->getTetheredNodesConfigurationForNodeType($parentNodeTypeName); // This is configured as "nodeName" above, but should be normalized to "nodename" self::assertArrayHasKey('nodename', $autoCreatedChildNodes); } From ed63a5f7da55c5aa6a1bbddf97979039a4f6c9a3 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Sun, 12 May 2024 20:10:00 +0200 Subject: [PATCH 05/18] TASK: Make `NodeType::getNodeTypeNameOfTetheredNode` return `null` instead of throwing --- .../Classes/NodeType/NodeType.php | 16 +++------------- .../Classes/NodeType/NodeTypeManager.php | 6 +++++- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php index 913b286188d..11409b0ada1 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php @@ -493,20 +493,10 @@ public function getDefaultValuesForProperties(): array public function hasTetheredNode(NodeName $nodeName): bool { $this->initialize(); - foreach ($this->fullConfiguration['childNodes'] ?? [] as $rawChildNodeName => $configurationForChildNode) { - if (isset($configurationForChildNode['type'])) { - if (NodeName::transliterateFromString($rawChildNodeName)->equals($nodeName)) { - return true; - } - } - } - return false; + return (bool)$this->getNodeTypeNameOfTetheredNode($nodeName); } - /** - * @throws TetheredNodeNotConfigured if the requested tethred node is not configured. Check via {@see NodeType::hasTetheredNode()}. - */ - public function getNodeTypeNameOfTetheredNode(NodeName $nodeName): NodeTypeName + public function getNodeTypeNameOfTetheredNode(NodeName $nodeName): ?NodeTypeName { $this->initialize(); foreach ($this->fullConfiguration['childNodes'] ?? [] as $rawChildNodeName => $configurationForChildNode) { @@ -516,7 +506,7 @@ public function getNodeTypeNameOfTetheredNode(NodeName $nodeName): NodeTypeName } } } - throw new TetheredNodeNotConfigured(sprintf('The child node "%s" is not configured for node type "%s"', $nodeName->value, $this->name->value), 1694786811); + return null; } /** diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php index 7cd5475ebd1..4d61d6a7312 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php @@ -198,7 +198,11 @@ public function overrideNodeTypes(array $completeNodeTypeConfiguration): void */ public function getTypeOfTetheredNode(NodeTypeName $nodeTypeName, NodeName $tetheredNodeName): NodeType { - $nameOfTetheredNode = $this->requireNodeType($nodeTypeName)->getNodeTypeNameOfTetheredNode($tetheredNodeName); + $nodeType = $this->requireNodeType($nodeTypeName); + $nameOfTetheredNode = $nodeType->getNodeTypeNameOfTetheredNode($tetheredNodeName); + if ($nameOfTetheredNode === null) { + throw new TetheredNodeNotConfigured(sprintf('The child node "%s" is not configured for node type "%s"', $tetheredNodeName->value, $nodeTypeName->value), 1694786811); + } return $this->requireNodeType($nameOfTetheredNode); } From 0f68cd04899a2a04f2cbf75d0d760dcdfa2cd405 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Sun, 12 May 2024 20:11:16 +0200 Subject: [PATCH 06/18] TASK: Move `TetheredNodeNotConfigured` exception to correct place --- Neos.ContentRepository.Core/Classes/NodeType/NodeType.php | 1 - .../Classes/NodeType/NodeTypeManager.php | 2 +- .../Exception/TetheredNodeNotConfigured.php | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) rename Neos.ContentRepository.Core/Classes/{NodeType => SharedModel}/Exception/TetheredNodeNotConfigured.php (75%) diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php index 11409b0ada1..8ab04f134c3 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php @@ -14,7 +14,6 @@ * source code. */ -use Neos\ContentRepository\Core\NodeType\Exception\TetheredNodeNotConfigured; use Neos\ContentRepository\Core\SharedModel\Exception\InvalidNodeTypePostprocessorException; use Neos\ContentRepository\Core\SharedModel\Exception\NodeConfigurationException; use Neos\ContentRepository\Core\SharedModel\Node\NodeName; diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php index 4d61d6a7312..28210f40846 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php @@ -14,7 +14,7 @@ namespace Neos\ContentRepository\Core\NodeType; -use Neos\ContentRepository\Core\NodeType\Exception\TetheredNodeNotConfigured; +use Neos\ContentRepository\Core\SharedModel\Exception\TetheredNodeNotConfigured; use Neos\ContentRepository\Core\SharedModel\Exception\NodeConfigurationException; use Neos\ContentRepository\Core\SharedModel\Exception\NodeTypeIsFinalException; use Neos\ContentRepository\Core\SharedModel\Exception\NodeTypeNotFoundException; diff --git a/Neos.ContentRepository.Core/Classes/NodeType/Exception/TetheredNodeNotConfigured.php b/Neos.ContentRepository.Core/Classes/SharedModel/Exception/TetheredNodeNotConfigured.php similarity index 75% rename from Neos.ContentRepository.Core/Classes/NodeType/Exception/TetheredNodeNotConfigured.php rename to Neos.ContentRepository.Core/Classes/SharedModel/Exception/TetheredNodeNotConfigured.php index 00f6c4fd3e1..5741f5beefe 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/Exception/TetheredNodeNotConfigured.php +++ b/Neos.ContentRepository.Core/Classes/SharedModel/Exception/TetheredNodeNotConfigured.php @@ -1,6 +1,6 @@ Date: Mon, 13 May 2024 20:30:58 +0200 Subject: [PATCH 07/18] TASK: Rename to `NodeTypeManager::getNodeTypeOfTetheredNode` --- .../Classes/NodeType/NodeTypeManager.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php index 28210f40846..6f0347b0c72 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php @@ -196,7 +196,7 @@ public function overrideNodeTypes(array $completeNodeTypeConfiguration): void * @return NodeType * @throws TetheredNodeNotConfigured if the requested tethered node is not configured. Check via {@see NodeType::hasTetheredNode()}. */ - public function getTypeOfTetheredNode(NodeTypeName $nodeTypeName, NodeName $tetheredNodeName): NodeType + public function getNodeTypeOfTetheredNode(NodeTypeName $nodeTypeName, NodeName $tetheredNodeName): NodeType { $nodeType = $this->requireNodeType($nodeTypeName); $nameOfTetheredNode = $nodeType->getNodeTypeNameOfTetheredNode($tetheredNodeName); @@ -207,6 +207,7 @@ public function getTypeOfTetheredNode(NodeTypeName $nodeTypeName, NodeName $teth } /** + * Return an array with child nodes which should be automatically created * Return an array with child nodes which should be automatically created * * @return array the key of this array is the name of the child, and the value its NodeType. @@ -238,7 +239,7 @@ public function getTetheredNodesConfigurationForNodeType(NodeTypeName $nodeTypeN public function isNodeTypeAllowedAsChildToTetheredNode(NodeTypeName $parentNodeTypeName, NodeName $tetheredNodeName, NodeTypeName $nodeTypeName): bool { try { - $typeOfTetheredNode = $this->getTypeOfTetheredNode($parentNodeTypeName, $tetheredNodeName); + $typeOfTetheredNode = $this->getNodeTypeOfTetheredNode($parentNodeTypeName, $tetheredNodeName); } catch (TetheredNodeNotConfigured $exception) { throw new \InvalidArgumentException( sprintf( From e8de7a3e095f29568b3e58deb91a5a27301f275e Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Tue, 14 May 2024 19:50:37 +0200 Subject: [PATCH 08/18] TASK: Make NodeTypeManager::isNodeTypeAllowedAsChildToTetheredNode not throw an exception --- .../Classes/NodeType/NodeTypeManager.php | 47 ++++++++++--------- .../DisallowedChildNodeAdjustment.php | 14 +++--- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php index 6f0347b0c72..d4f7707447b 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php @@ -225,48 +225,49 @@ public function getTetheredNodesConfigurationForNodeType(NodeTypeName $nodeTypeN } /** - * Checks if the given $nodeType is allowed as a childNode of the given $tetheredNodeName - * (which must be tethered in $parentNodeType). + * Checks if the given $nodeTypeNameToCheck is allowed as a childNode of the given $tetheredNodeName. * - * Only allowed to be called if $tetheredNodeName is actually tethered. + * Returns false if $tetheredNodeName is not tethered to $parentNodeTypeName, or if any of the $nodeTypeNameToCheck does not exist. * * @param NodeTypeName $parentNodeTypeName The NodeType to check constraints based on. * @param NodeName $tetheredNodeName The name of a configured tethered node of this NodeType - * @param NodeTypeName $nodeTypeName The NodeType to check constraints for. - * @return bool true if the $nodeType is allowed as grandchild node, false otherwise. - * @throws \InvalidArgumentException if the requested tethered node is not configured in the parent NodeType. Check via {@see NodeType::hasTetheredNode()}. + * @param NodeTypeName $nodeTypeNameToCheck The NodeType to check constraints for. + * @return bool true if the $nodeTypeNameToCheck is allowed as grandchild node, false otherwise. */ - public function isNodeTypeAllowedAsChildToTetheredNode(NodeTypeName $parentNodeTypeName, NodeName $tetheredNodeName, NodeTypeName $nodeTypeName): bool + public function isNodeTypeAllowedAsChildToTetheredNode(NodeTypeName $parentNodeTypeName, NodeName $tetheredNodeName, NodeTypeName $nodeTypeNameToCheck): bool { - try { - $typeOfTetheredNode = $this->getNodeTypeOfTetheredNode($parentNodeTypeName, $tetheredNodeName); - } catch (TetheredNodeNotConfigured $exception) { - throw new \InvalidArgumentException( - sprintf( - 'Cannot determine if grandchild is allowed in %s. Because the given child node name "%s" is not auto-created.', - $parentNodeTypeName->value, - $tetheredNodeName->value - ), - 1403858395, - $exception - ); + $parentNodeType = $this->getNodeType($parentNodeTypeName); + $nodeTypeNameOfTetheredNode = $parentNodeType?->getNodeTypeNameOfTetheredNode($tetheredNodeName); + if (!$parentNodeType || !$nodeTypeNameOfTetheredNode) { + // Cannot determine if grandchild is allowed, because the given child node name is not auto-created. + return false; + } + + $nodeTypeOfTetheredNode = $this->getNodeType($nodeTypeNameOfTetheredNode); + if (!$nodeTypeOfTetheredNode) { + return false; } // Constraints configured on the NodeType for the child node - $constraints = $typeOfTetheredNode->getConfiguration('constraints.nodeTypes') ?: []; + $constraints = $nodeTypeOfTetheredNode->getConfiguration('constraints.nodeTypes') ?: []; // Constraints configured at the childNode configuration of the parent. try { - $childNodeConstraintConfiguration = $this->requireNodeType($parentNodeTypeName)->getConfiguration('childNodes.' . $tetheredNodeName->value . '.constraints.nodeTypes') ?? []; + $childNodeConstraintConfiguration = $parentNodeType->getConfiguration('childNodes.' . $tetheredNodeName->value . '.constraints.nodeTypes') ?? []; } catch (PropertyNotAccessibleException $exception) { - // We ignore this because the configuration might just not have any constraints, if the childNode was not configured the exception above would have been thrown. + // We ignore this because the configuration might just not have any constraints, if the childNode was not configured null would have been returned. $childNodeConstraintConfiguration = []; } $constraints = Arrays::arrayMergeRecursiveOverrule($constraints, $childNodeConstraintConfiguration); + $nodeTypeToCheck = $this->getNodeType($nodeTypeNameToCheck); + if (!$nodeTypeToCheck) { + return false; + } + return ConstraintCheck::create($constraints)->isNodeTypeAllowed( - $this->requireNodeType($nodeTypeName) + $nodeTypeToCheck ); } diff --git a/Neos.ContentRepository.StructureAdjustment/src/Adjustment/DisallowedChildNodeAdjustment.php b/Neos.ContentRepository.StructureAdjustment/src/Adjustment/DisallowedChildNodeAdjustment.php index e3febf174f8..382387bfe78 100644 --- a/Neos.ContentRepository.StructureAdjustment/src/Adjustment/DisallowedChildNodeAdjustment.php +++ b/Neos.ContentRepository.StructureAdjustment/src/Adjustment/DisallowedChildNodeAdjustment.php @@ -75,15 +75,13 @@ public function findAdjustmentsForNodeType(NodeTypeName $nodeTypeName): \Generat $parentNode !== null && $grandparentNode !== null && $parentNode->classification->isTethered() - && !is_null($parentNode->nodeName) + && !is_null($parentNode->name) ) { - if ($this->nodeTypeManager->hasNodeType($grandparentNode->nodeTypeName)) { - $allowedByGrandparent = $this->nodeTypeManager->isNodeTypeAllowedAsChildToTetheredNode( - $grandparentNode->nodeTypeName, - $parentNode->nodeName, - $nodeAggregate->nodeTypeName - ); - } + $allowedByGrandparent = $this->nodeTypeManager->isNodeTypeAllowedAsChildToTetheredNode( + $grandparentNode->nodeTypeName, + $parentNode->name, + $nodeAggregate->nodeTypeName + ); } if (!$allowedByParent && !$allowedByGrandparent) { From 1e8c4e70d144551881f2f49d90c7b056664473e0 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Tue, 14 May 2024 19:52:09 +0200 Subject: [PATCH 09/18] TASK: Remove NodeTypeManager::getTypeOfTetheredNode --- .../Classes/NodeType/NodeTypeManager.php | 17 ----------------- .../Exception/TetheredNodeNotConfigured.php | 10 ---------- 2 files changed, 27 deletions(-) delete mode 100644 Neos.ContentRepository.Core/Classes/SharedModel/Exception/TetheredNodeNotConfigured.php diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php index d4f7707447b..ae0fcd08efa 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php @@ -14,7 +14,6 @@ namespace Neos\ContentRepository\Core\NodeType; -use Neos\ContentRepository\Core\SharedModel\Exception\TetheredNodeNotConfigured; use Neos\ContentRepository\Core\SharedModel\Exception\NodeConfigurationException; use Neos\ContentRepository\Core\SharedModel\Exception\NodeTypeIsFinalException; use Neos\ContentRepository\Core\SharedModel\Exception\NodeTypeNotFoundException; @@ -190,22 +189,6 @@ public function overrideNodeTypes(array $completeNodeTypeConfiguration): void } } - /** - * @param NodeTypeName $nodeTypeName - * @param NodeName $tetheredNodeName - * @return NodeType - * @throws TetheredNodeNotConfigured if the requested tethered node is not configured. Check via {@see NodeType::hasTetheredNode()}. - */ - public function getNodeTypeOfTetheredNode(NodeTypeName $nodeTypeName, NodeName $tetheredNodeName): NodeType - { - $nodeType = $this->requireNodeType($nodeTypeName); - $nameOfTetheredNode = $nodeType->getNodeTypeNameOfTetheredNode($tetheredNodeName); - if ($nameOfTetheredNode === null) { - throw new TetheredNodeNotConfigured(sprintf('The child node "%s" is not configured for node type "%s"', $tetheredNodeName->value, $nodeTypeName->value), 1694786811); - } - return $this->requireNodeType($nameOfTetheredNode); - } - /** * Return an array with child nodes which should be automatically created * Return an array with child nodes which should be automatically created diff --git a/Neos.ContentRepository.Core/Classes/SharedModel/Exception/TetheredNodeNotConfigured.php b/Neos.ContentRepository.Core/Classes/SharedModel/Exception/TetheredNodeNotConfigured.php deleted file mode 100644 index 5741f5beefe..00000000000 --- a/Neos.ContentRepository.Core/Classes/SharedModel/Exception/TetheredNodeNotConfigured.php +++ /dev/null @@ -1,10 +0,0 @@ - Date: Tue, 14 May 2024 20:08:39 +0200 Subject: [PATCH 10/18] FEATURE: Introduce `TetheredNodeTypeDefinitions` VO --- .../Classes/NodeType/NodeType.php | 24 ++++-- .../Classes/NodeType/NodeTypeManager.php | 2 +- .../NodeType/TetheredNodeTypeDefinition.php | 29 +++++++ .../NodeType/TetheredNodeTypeDefinitions.php | 78 +++++++++++++++++++ 4 files changed, 124 insertions(+), 9 deletions(-) create mode 100644 Neos.ContentRepository.Core/Classes/NodeType/TetheredNodeTypeDefinition.php create mode 100644 Neos.ContentRepository.Core/Classes/NodeType/TetheredNodeTypeDefinitions.php diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php index 8ab04f134c3..45d31db32a9 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php @@ -73,6 +73,8 @@ final class NodeType */ protected bool $initialized = false; + private ?TetheredNodeTypeDefinitions $tetheredNodeTypeDefinitions = null; + /** * @param NodeTypeName $name Name of the node type * @param array $declaredSuperTypes Parent types instances of this node type, if null it should be unset @@ -491,21 +493,27 @@ public function getDefaultValuesForProperties(): array */ public function hasTetheredNode(NodeName $nodeName): bool { - $this->initialize(); - return (bool)$this->getNodeTypeNameOfTetheredNode($nodeName); + return $this->getTetheredNodeTypeDefinitions()->contain($nodeName); } - public function getNodeTypeNameOfTetheredNode(NodeName $nodeName): ?NodeTypeName + public function getTetheredNodeTypeDefinitions(): TetheredNodeTypeDefinitions { + if ($this->tetheredNodeTypeDefinitions) { + return $this->tetheredNodeTypeDefinitions; + } $this->initialize(); - foreach ($this->fullConfiguration['childNodes'] ?? [] as $rawChildNodeName => $configurationForChildNode) { + + $childNodeConfiguration = $this->getConfiguration('childNodes') ?? []; + $tetheredNodeTypeDefinitions = []; + foreach ($childNodeConfiguration as $childNodeName => $configurationForChildNode) { if (isset($configurationForChildNode['type'])) { - if (NodeName::transliterateFromString($rawChildNodeName)->equals($nodeName)) { - return NodeTypeName::fromString($configurationForChildNode['type']); - } + $tetheredNodeTypeDefinitions[] = new TetheredNodeTypeDefinition( + NodeName::transliterateFromString($childNodeName), + NodeTypeName::fromString($configurationForChildNode['type']) + ); } } - return null; + return $this->tetheredNodeTypeDefinitions = TetheredNodeTypeDefinitions::fromArray($tetheredNodeTypeDefinitions); } /** diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php index ae0fcd08efa..c0e77a39091 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php @@ -220,7 +220,7 @@ public function getTetheredNodesConfigurationForNodeType(NodeTypeName $nodeTypeN public function isNodeTypeAllowedAsChildToTetheredNode(NodeTypeName $parentNodeTypeName, NodeName $tetheredNodeName, NodeTypeName $nodeTypeNameToCheck): bool { $parentNodeType = $this->getNodeType($parentNodeTypeName); - $nodeTypeNameOfTetheredNode = $parentNodeType?->getNodeTypeNameOfTetheredNode($tetheredNodeName); + $nodeTypeNameOfTetheredNode = $parentNodeType?->getTetheredNodeTypeDefinitions()->get($tetheredNodeName)?->nodeTypeName; if (!$parentNodeType || !$nodeTypeNameOfTetheredNode) { // Cannot determine if grandchild is allowed, because the given child node name is not auto-created. return false; diff --git a/Neos.ContentRepository.Core/Classes/NodeType/TetheredNodeTypeDefinition.php b/Neos.ContentRepository.Core/Classes/NodeType/TetheredNodeTypeDefinition.php new file mode 100644 index 00000000000..b3cc67b1ee7 --- /dev/null +++ b/Neos.ContentRepository.Core/Classes/NodeType/TetheredNodeTypeDefinition.php @@ -0,0 +1,29 @@ + + */ +final class TetheredNodeTypeDefinitions implements \IteratorAggregate +{ + /** + * @var array + */ + private array $tetheredNodeTypeDefinitions; + + private function __construct(TetheredNodeTypeDefinition ...$tetheredNodeTypeDefinitions) + { + /** @var array $tetheredNodeTypeDefinitions */ + $this->tetheredNodeTypeDefinitions = $tetheredNodeTypeDefinitions; + } + + /** + * @param array $tetheredNodeTypeDefinitions + */ + public static function fromArray(array $tetheredNodeTypeDefinitions): self + { + $tetheredNodeTypeDefinitionDefinitionByName = []; + foreach ($tetheredNodeTypeDefinitions as $index => $tetheredNodeTypeDefinitionDefinition) { + $tetheredNodeTypeDefinitionDefinition instanceof TetheredNodeTypeDefinition || throw new \InvalidArgumentException(sprintf('expected instance of %s, got: %s at index %s', TetheredNodeTypeDefinition::class, get_debug_type($tetheredNodeTypeDefinitionDefinition), $index), 1713549511); + !array_key_exists($tetheredNodeTypeDefinitionDefinition->name->value, $tetheredNodeTypeDefinitionDefinitionByName) || throw new \InvalidArgumentException(sprintf('Tethered node type definition with name "%s" is already registered at index %s', $tetheredNodeTypeDefinitionDefinition->name->value, $index), 1713549527); + $tetheredNodeTypeDefinitionDefinitionByName[$tetheredNodeTypeDefinitionDefinition->name->value] = $tetheredNodeTypeDefinitionDefinition; + } + return new self(...$tetheredNodeTypeDefinitionDefinitionByName); + } + + public function contain(NodeName|string $nodeName): bool + { + if ($nodeName instanceof NodeName) { + $nodeName = $nodeName->value; + } + return array_key_exists($nodeName, $this->tetheredNodeTypeDefinitions); + } + + public function get(NodeName|string $nodeName): ?TetheredNodeTypeDefinition + { + if ($nodeName instanceof NodeName) { + $nodeName = $nodeName->value; + } + return $this->tetheredNodeTypeDefinitions[$nodeName] ?? null; + } + + public function getIterator(): \Traversable + { + return yield from $this->tetheredNodeTypeDefinitions; + } + + /** + * @return array + */ + public function toArray(): array + { + return $this->tetheredNodeTypeDefinitions; + } +} From 5df367de5e0af377ca4201f568b659ef449f6545 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Tue, 14 May 2024 20:19:07 +0200 Subject: [PATCH 11/18] TASK: Allow `NodeType::tetheredNodeTypeDefinitions` as forward compatible hack --- .../Feature/Common/ConstraintChecks.php | 4 +- .../Classes/NodeType/NodeType.php | 39 +++++++++++-------- .../Classes/NodeType/NodeTypeManager.php | 2 +- .../Classes/NodeDataToEventsProcessor.php | 2 +- .../DisallowedChildNodeAdjustment.php | 2 +- 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/Neos.ContentRepository.Core/Classes/Feature/Common/ConstraintChecks.php b/Neos.ContentRepository.Core/Classes/Feature/Common/ConstraintChecks.php index c7a064f4cc6..a57d8688b01 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/Common/ConstraintChecks.php +++ b/Neos.ContentRepository.Core/Classes/Feature/Common/ConstraintChecks.php @@ -223,7 +223,7 @@ protected function requireNodeTypeToDeclareReference(NodeTypeName $nodeTypeName, protected function requireNodeTypeNotToDeclareTetheredChildNodeName(NodeTypeName $nodeTypeName, NodeName $nodeName): void { $nodeType = $this->requireNodeType($nodeTypeName); - if ($nodeType->hasTetheredNode($nodeName)) { + if ($nodeType->tetheredNodeTypeDefinitions->contain($nodeName)) { throw new NodeNameIsAlreadyCovered( 'Node name "' . $nodeName->value . '" is reserved for a tethered child of parent node aggregate of type "' . $nodeTypeName->value . '".' @@ -369,7 +369,7 @@ protected function areNodeTypeConstraintsImposedByGrandparentValid( NodeType $nodeType ): bool { return !($parentNodeName - && $grandParentsNodeType->hasTetheredNode($parentNodeName) + && $grandParentsNodeType->tetheredNodeTypeDefinitions->contain($parentNodeName) && !$this->getNodeTypeManager()->isNodeTypeAllowedAsChildToTetheredNode($grandParentsNodeType->name, $parentNodeName, $nodeType->name)); } diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php index 45d31db32a9..77c3e27fbfa 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeType.php @@ -37,6 +37,9 @@ final class NodeType */ public readonly NodeTypeName $name; + /** @phpstan-ignore-next-line */ + public readonly TetheredNodeTypeDefinitions $tetheredNodeTypeDefinitions; + /** * Configuration for this node type, can be an arbitrarily nested array. Does not include inherited configuration. * @@ -73,8 +76,6 @@ final class NodeType */ protected bool $initialized = false; - private ?TetheredNodeTypeDefinitions $tetheredNodeTypeDefinitions = null; - /** * @param NodeTypeName $name Name of the node type * @param array $declaredSuperTypes Parent types instances of this node type, if null it should be unset @@ -102,6 +103,23 @@ public function __construct( } $this->localConfiguration = $configuration; + /** lazy properties {@see __get()} */ + /** @phpstan-ignore-next-line */ + unset($this->tetheredNodeTypeDefinitions); + } + + /** + * We unset the readonly properties in the constructor, so that this magic getter is invoked, which initializes the properties. + * {@see https://peakd.com/hive-168588/@crell/php-tricks-lazy-public-readonly-properties} + * This is a temporary hack until https://github.com/neos/neos-development-collection/pull/4999 is merged. + */ + public function __get(string $key): mixed + { + if ($key === 'tetheredNodeTypeDefinitions') { + /** @phpstan-ignore-next-line */ + return $this->tetheredNodeTypeDefinitions = $this->getTetheredNodeTypeDefinitions(); + } + throw new \BadMethodCallException(sprintf('NodeType::%s does not exist.', $key), 1715710576); } /** @@ -488,21 +506,8 @@ public function getDefaultValuesForProperties(): array return $defaultValues; } - /** - * @return bool true if $nodeName is an autocreated child node, false otherwise - */ - public function hasTetheredNode(NodeName $nodeName): bool - { - return $this->getTetheredNodeTypeDefinitions()->contain($nodeName); - } - - public function getTetheredNodeTypeDefinitions(): TetheredNodeTypeDefinitions + private function getTetheredNodeTypeDefinitions(): TetheredNodeTypeDefinitions { - if ($this->tetheredNodeTypeDefinitions) { - return $this->tetheredNodeTypeDefinitions; - } - $this->initialize(); - $childNodeConfiguration = $this->getConfiguration('childNodes') ?? []; $tetheredNodeTypeDefinitions = []; foreach ($childNodeConfiguration as $childNodeName => $configurationForChildNode) { @@ -513,7 +518,7 @@ public function getTetheredNodeTypeDefinitions(): TetheredNodeTypeDefinitions ); } } - return $this->tetheredNodeTypeDefinitions = TetheredNodeTypeDefinitions::fromArray($tetheredNodeTypeDefinitions); + return TetheredNodeTypeDefinitions::fromArray($tetheredNodeTypeDefinitions); } /** diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php index c0e77a39091..a099ba73665 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php @@ -220,7 +220,7 @@ public function getTetheredNodesConfigurationForNodeType(NodeTypeName $nodeTypeN public function isNodeTypeAllowedAsChildToTetheredNode(NodeTypeName $parentNodeTypeName, NodeName $tetheredNodeName, NodeTypeName $nodeTypeNameToCheck): bool { $parentNodeType = $this->getNodeType($parentNodeTypeName); - $nodeTypeNameOfTetheredNode = $parentNodeType?->getTetheredNodeTypeDefinitions()->get($tetheredNodeName)?->nodeTypeName; + $nodeTypeNameOfTetheredNode = $parentNodeType?->tetheredNodeTypeDefinitions->get($tetheredNodeName)?->nodeTypeName; if (!$parentNodeType || !$nodeTypeNameOfTetheredNode) { // Cannot determine if grandchild is allowed, because the given child node name is not auto-created. return false; diff --git a/Neos.ContentRepository.LegacyNodeMigration/Classes/NodeDataToEventsProcessor.php b/Neos.ContentRepository.LegacyNodeMigration/Classes/NodeDataToEventsProcessor.php index bb80143d9db..005e12cf899 100644 --- a/Neos.ContentRepository.LegacyNodeMigration/Classes/NodeDataToEventsProcessor.php +++ b/Neos.ContentRepository.LegacyNodeMigration/Classes/NodeDataToEventsProcessor.php @@ -489,7 +489,7 @@ private function isAutoCreatedChildNode(NodeTypeName $parentNodeTypeName, NodeNa if (!$nodeTypeOfParent) { return false; } - return $nodeTypeOfParent->hasTetheredNode($nodeName); + return $nodeTypeOfParent->tetheredNodeTypeDefinitions->contain($nodeName); } private function dispatch(Severity $severity, string $message, mixed ...$args): void diff --git a/Neos.ContentRepository.StructureAdjustment/src/Adjustment/DisallowedChildNodeAdjustment.php b/Neos.ContentRepository.StructureAdjustment/src/Adjustment/DisallowedChildNodeAdjustment.php index 382387bfe78..a3743176f32 100644 --- a/Neos.ContentRepository.StructureAdjustment/src/Adjustment/DisallowedChildNodeAdjustment.php +++ b/Neos.ContentRepository.StructureAdjustment/src/Adjustment/DisallowedChildNodeAdjustment.php @@ -66,7 +66,7 @@ public function findAdjustmentsForNodeType(NodeTypeName $nodeTypeName): \Generat $parentNodeType = $this->nodeTypeManager->getNodeType($parentNode->nodeTypeName); if ($parentNodeType) { $allowedByParent = $parentNodeType->allowsChildNodeType($nodeType) - || ($nodeAggregate->nodeName && $parentNodeType->hasTetheredNode($nodeAggregate->nodeName)); + || ($nodeAggregate->nodeName && $parentNodeType->tetheredNodeTypeDefinitions->contain($nodeAggregate->nodeName)); } } From ab41496c4532e4baab65f74a03f04fc629a95bec Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Tue, 14 May 2024 21:07:07 +0200 Subject: [PATCH 12/18] TASK: Remove `NodeTypeManager::getTetheredNodesConfigurationForNodeType()` Previously known as `NodeType::getAutoCreatedChildNodes` --- .../Feature/Common/ConstraintChecks.php | 12 +++---- .../Feature/Common/TetheredNodeInternals.php | 28 ++++++++-------- .../Dto/NodeAggregateIdsByNodePaths.php | 11 +++++-- .../Feature/NodeCreation/NodeCreation.php | 23 +++++++------ .../Feature/NodeTypeChange/NodeTypeChange.php | 29 +++++++--------- .../RootNodeCreation/RootNodeHandling.php | 18 +++++----- .../Classes/NodeType/NodeTypeManager.php | 32 ------------------ .../NodeType/TetheredNodeTypeDefinitions.php | 2 +- .../Unit/NodeType/NodeTypeManagerTest.php | 5 ++- .../Adjustment/TetheredNodeAdjustments.php | 33 ++++++++----------- .../Classes/Service/NodeTypeSchemaBuilder.php | 8 ++--- 11 files changed, 83 insertions(+), 118 deletions(-) diff --git a/Neos.ContentRepository.Core/Classes/Feature/Common/ConstraintChecks.php b/Neos.ContentRepository.Core/Classes/Feature/Common/ConstraintChecks.php index a57d8688b01..6514d818b4a 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/Common/ConstraintChecks.php +++ b/Neos.ContentRepository.Core/Classes/Feature/Common/ConstraintChecks.php @@ -172,14 +172,13 @@ protected function requireRootNodeTypeToBeUnoccupied( /** * @param NodeType $nodeType - * @throws NodeTypeNotFoundException the configured child nodeType doesnt exist + * @throws NodeTypeNotFound the configured child nodeType doesnt exist */ protected function requireTetheredDescendantNodeTypesToExist(NodeType $nodeType): void { - // this getter throws if any of the child nodeTypes doesnt exist! - $tetheredNodeTypes = $this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($nodeType->name); - foreach ($tetheredNodeTypes as $tetheredNodeType) { - $this->requireTetheredDescendantNodeTypesToExist($tetheredNodeType); + foreach ($nodeType->tetheredNodeTypeDefinitions as $tetheredNodeTypeDefinition) { + $nodeType = $this->requireNodeType($tetheredNodeTypeDefinition->nodeTypeName); + $this->requireTetheredDescendantNodeTypesToExist($nodeType); } } @@ -189,7 +188,8 @@ protected function requireTetheredDescendantNodeTypesToExist(NodeType $nodeType) */ protected function requireTetheredDescendantNodeTypesToNotBeOfTypeRoot(NodeType $nodeType): void { - foreach ($this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($nodeType->name) as $tetheredChildNodeType) { + foreach ($nodeType->tetheredNodeTypeDefinitions as $tetheredNodeTypeDefinition) { + $tetheredChildNodeType = $this->requireNodeType($tetheredNodeTypeDefinition->nodeTypeName); if ($tetheredChildNodeType->isOfType(NodeTypeName::ROOT_NODE_TYPE_NAME)) { throw new NodeTypeIsOfTypeRoot( 'Node type "' . $nodeType->name->value . '" for tethered descendant is of type root.', diff --git a/Neos.ContentRepository.Core/Classes/Feature/Common/TetheredNodeInternals.php b/Neos.ContentRepository.Core/Classes/Feature/Common/TetheredNodeInternals.php index c99412cd353..36f27b2e80a 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/Common/TetheredNodeInternals.php +++ b/Neos.ContentRepository.Core/Classes/Feature/Common/TetheredNodeInternals.php @@ -20,15 +20,13 @@ use Neos\ContentRepository\Core\Feature\NodeModification\Dto\SerializedPropertyValues; use Neos\ContentRepository\Core\Feature\NodeVariation\Event\NodePeerVariantWasCreated; use Neos\ContentRepository\Core\Infrastructure\Property\PropertyConverter; -use Neos\ContentRepository\Core\NodeType\NodeType; use Neos\ContentRepository\Core\NodeType\NodeTypeName; +use Neos\ContentRepository\Core\NodeType\TetheredNodeTypeDefinition; use Neos\ContentRepository\Core\Projection\ContentGraph\ContentGraphInterface; use Neos\ContentRepository\Core\Projection\ContentGraph\Node; use Neos\ContentRepository\Core\Projection\ContentGraph\NodeAggregate; use Neos\ContentRepository\Core\SharedModel\Node\NodeAggregateClassification; use Neos\ContentRepository\Core\SharedModel\Node\NodeAggregateId; -use Neos\ContentRepository\Core\SharedModel\Node\NodeName; -use Neos\ContentRepository\Core\SharedModel\Workspace\ContentStreamId; /** * @internal implementation details of command handlers @@ -58,15 +56,19 @@ protected function createEventsForMissingTetheredNode( ContentGraphInterface $contentGraph, NodeAggregate $parentNodeAggregate, OriginDimensionSpacePoint $originDimensionSpacePoint, - NodeName $tetheredNodeName, - ?NodeAggregateId $tetheredNodeAggregateId, - NodeType $expectedTetheredNodeType + TetheredNodeTypeDefinition $tetheredNodeTypeDefinition, + ?NodeAggregateId $tetheredNodeAggregateId ): Events { $childNodeAggregate = $contentGraph->findChildNodeAggregateByName( $parentNodeAggregate->nodeAggregateId, - $tetheredNodeName + $tetheredNodeTypeDefinition->name ); + $expectedTetheredNodeType = $this->nodeTypeManager->getNodeType($tetheredNodeTypeDefinition->nodeTypeName); + $defaultProperties = $expectedTetheredNodeType + ? SerializedPropertyValues::defaultFromNodeType($expectedTetheredNodeType, $this->getPropertyConverter()) + : SerializedPropertyValues::createEmpty(); + if ($childNodeAggregate === null) { // there is no tethered child node aggregate already; let's create it! $nodeType = $this->nodeTypeManager->getNodeType($parentNodeAggregate->nodeTypeName); @@ -91,14 +93,14 @@ protected function createEventsForMissingTetheredNode( $events[] = new NodeAggregateWithNodeWasCreated( $parentNodeAggregate->contentStreamId, $tetheredNodeAggregateId, - $expectedTetheredNodeType->name, + $tetheredNodeTypeDefinition->nodeTypeName, $rootGeneralizationOrigin, InterdimensionalSiblings::fromDimensionSpacePointSetWithoutSucceedingSiblings( $this->getInterDimensionalVariationGraph()->getSpecializationSet($rootGeneralization) ), $parentNodeAggregate->nodeAggregateId, - $tetheredNodeName, - SerializedPropertyValues::defaultFromNodeType($expectedTetheredNodeType, $this->getPropertyConverter()), + $tetheredNodeTypeDefinition->name, + $defaultProperties, NodeAggregateClassification::CLASSIFICATION_TETHERED, ); $creationOriginDimensionSpacePoint = $rootGeneralizationOrigin; @@ -110,14 +112,14 @@ protected function createEventsForMissingTetheredNode( new NodeAggregateWithNodeWasCreated( $parentNodeAggregate->contentStreamId, $tetheredNodeAggregateId ?: NodeAggregateId::create(), - $expectedTetheredNodeType->name, + $tetheredNodeTypeDefinition->nodeTypeName, $originDimensionSpacePoint, InterdimensionalSiblings::fromDimensionSpacePointSetWithoutSucceedingSiblings( $parentNodeAggregate->getCoverageByOccupant($originDimensionSpacePoint) ), $parentNodeAggregate->nodeAggregateId, - $tetheredNodeName, - SerializedPropertyValues::defaultFromNodeType($expectedTetheredNodeType, $this->getPropertyConverter()), + $tetheredNodeTypeDefinition->name, + $defaultProperties, NodeAggregateClassification::CLASSIFICATION_TETHERED, ) ); diff --git a/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/Dto/NodeAggregateIdsByNodePaths.php b/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/Dto/NodeAggregateIdsByNodePaths.php index d5eda29f1d9..083a4cfb607 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/Dto/NodeAggregateIdsByNodePaths.php +++ b/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/Dto/NodeAggregateIdsByNodePaths.php @@ -18,6 +18,7 @@ use Neos\ContentRepository\Core\NodeType\NodeTypeManager; use Neos\ContentRepository\Core\NodeType\NodeTypeName; use Neos\ContentRepository\Core\Projection\ContentGraph\NodePath; +use Neos\ContentRepository\Core\SharedModel\Exception\NodeTypeNotFound; use Neos\ContentRepository\Core\SharedModel\Node\NodeAggregateId; /** @@ -128,12 +129,16 @@ private static function createNodeAggregateIdsForNodeType( ?string $pathPrefix = null ): array { $nodeAggregateIds = []; - foreach ($nodeTypeManager->getTetheredNodesConfigurationForNodeType($nodeTypeName) as $nodeName => $childNodeType) { - $path = $pathPrefix ? $pathPrefix . '/' . $nodeName : $nodeName; + $nodeType = $nodeTypeManager->getNodeType($nodeTypeName); + if (!$nodeType) { + throw new NodeTypeNotFound(sprintf('Cannot build NodeAggregateIdsByNodePaths because NodeType %s does not exist.', $nodeTypeName->value), 1715711379); + } + foreach ($nodeType->tetheredNodeTypeDefinitions as $tetheredNodeTypeDefinition) { + $path = $pathPrefix ? $pathPrefix . '/' . $tetheredNodeTypeDefinition->name->value : $tetheredNodeTypeDefinition->name->value; $nodeAggregateIds[$path] = NodeAggregateId::create(); $nodeAggregateIds = array_merge( $nodeAggregateIds, - self::createNodeAggregateIdsForNodeType($childNodeType->name, $nodeTypeManager, $path) + self::createNodeAggregateIdsForNodeType($tetheredNodeTypeDefinition->nodeTypeName, $nodeTypeManager, $path) ); } diff --git a/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/NodeCreation.php b/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/NodeCreation.php index 6e8666fa09e..38fb29ef5a3 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/NodeCreation.php +++ b/Neos.ContentRepository.Core/Classes/Feature/NodeCreation/NodeCreation.php @@ -209,7 +209,7 @@ private function handleCreateNodeAggregateWithNodeAndSerializedProperties( array_push($events, ...iterator_to_array($this->handleTetheredChildNodes( $command, $contentGraph, - $command->nodeTypeName, + $nodeType, $coveredDimensionSpacePoints, $command->nodeAggregateId, $descendantNodeAggregateIds, @@ -257,30 +257,33 @@ private function createRegularWithNode( private function handleTetheredChildNodes( CreateNodeAggregateWithNodeAndSerializedProperties $command, ContentGraphInterface $contentGraph, - NodeTypeName $nodeTypeName, + NodeType $nodeType, DimensionSpacePointSet $coveredDimensionSpacePoints, NodeAggregateId $parentNodeAggregateId, NodeAggregateIdsByNodePaths $nodeAggregateIds, ?NodePath $nodePath ): Events { $events = []; - foreach ($this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($nodeTypeName) as $nodeNameString => $childNodeType) { - $nodeName = NodeName::fromString($nodeNameString); + foreach ($nodeType->tetheredNodeTypeDefinitions as $tetheredNodeTypeDefinition) { + $childNodeType = $this->requireNodeType($tetheredNodeTypeDefinition->nodeTypeName); $childNodePath = $nodePath - ? $nodePath->appendPathSegment($nodeName) - : NodePath::fromString($nodeName->value); + ? $nodePath->appendPathSegment($tetheredNodeTypeDefinition->name) + : NodePath::fromString($tetheredNodeTypeDefinition->name->value); $childNodeAggregateId = $nodeAggregateIds->getNodeAggregateId($childNodePath) ?? NodeAggregateId::create(); - $initialPropertyValues = SerializedPropertyValues::defaultFromNodeType($childNodeType, $this->getPropertyConverter()); + $initialPropertyValues = SerializedPropertyValues::defaultFromNodeType( + $childNodeType, + $this->getPropertyConverter() + ); $events[] = new NodeAggregateWithNodeWasCreated( $contentGraph->getContentStreamId(), $childNodeAggregateId, - $childNodeType->name, + $tetheredNodeTypeDefinition->nodeTypeName, $command->originDimensionSpacePoint, InterdimensionalSiblings::fromDimensionSpacePointSetWithoutSucceedingSiblings($coveredDimensionSpacePoints), $parentNodeAggregateId, - $nodeName, + $tetheredNodeTypeDefinition->name, $initialPropertyValues, NodeAggregateClassification::CLASSIFICATION_TETHERED, ); @@ -288,7 +291,7 @@ private function handleTetheredChildNodes( array_push($events, ...iterator_to_array($this->handleTetheredChildNodes( $command, $contentGraph, - $childNodeType->name, + $childNodeType, $coveredDimensionSpacePoints, $childNodeAggregateId, $nodeAggregateIds, diff --git a/Neos.ContentRepository.Core/Classes/Feature/NodeTypeChange/NodeTypeChange.php b/Neos.ContentRepository.Core/Classes/Feature/NodeTypeChange/NodeTypeChange.php index 16219eb7160..72c20f0d7fc 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/NodeTypeChange/NodeTypeChange.php +++ b/Neos.ContentRepository.Core/Classes/Feature/NodeTypeChange/NodeTypeChange.php @@ -28,8 +28,8 @@ use Neos\ContentRepository\Core\Feature\NodeTypeChange\Event\NodeAggregateTypeWasChanged; use Neos\ContentRepository\Core\NodeType\NodeType; use Neos\ContentRepository\Core\NodeType\NodeTypeManager; +use Neos\ContentRepository\Core\NodeType\TetheredNodeTypeDefinition; use Neos\ContentRepository\Core\Projection\ContentGraph\ContentGraphInterface; -use Neos\ContentRepository\Core\NodeType\NodeTypeName; use Neos\ContentRepository\Core\Projection\ContentGraph\Node; use Neos\ContentRepository\Core\Projection\ContentGraph\NodeAggregate; use Neos\ContentRepository\Core\Projection\ContentGraph\NodePath; @@ -90,9 +90,8 @@ abstract protected function createEventsForMissingTetheredNode( ContentGraphInterface $contentGraph, NodeAggregate $parentNodeAggregate, OriginDimensionSpacePoint $originDimensionSpacePoint, - NodeName $tetheredNodeName, - NodeAggregateId $tetheredNodeAggregateId, - NodeType $expectedTetheredNodeType + TetheredNodeTypeDefinition $tetheredNodeTypeDefinition, + NodeAggregateId $tetheredNodeAggregateId ): Events; /** @@ -177,36 +176,32 @@ private function handleChangeNodeAggregateType( array_push($events, ...iterator_to_array($this->deleteObsoleteTetheredNodesWhenChangingNodeType( $contentGraph, $nodeAggregate, - $command->newNodeTypeName + $newNodeType ))); } // new tethered child nodes - $expectedTetheredNodes = $this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($command->newNodeTypeName); foreach ($nodeAggregate->getNodes() as $node) { assert($node instanceof Node); - foreach ($expectedTetheredNodes as $serializedTetheredNodeName => $expectedTetheredNodeType) { - $tetheredNodeName = NodeName::fromString($serializedTetheredNodeName); - + foreach ($newNodeType->tetheredNodeTypeDefinitions as $tetheredNodeTypeDefinition) { $tetheredNode = $contentGraph->getSubgraph( $node->originDimensionSpacePoint->toDimensionSpacePoint(), VisibilityConstraints::withoutRestrictions() )->findNodeByPath( - $tetheredNodeName, + $tetheredNodeTypeDefinition->name, $node->nodeAggregateId, ); if ($tetheredNode === null) { $tetheredNodeAggregateId = $command->tetheredDescendantNodeAggregateIds - ->getNodeAggregateId(NodePath::fromString($tetheredNodeName->value)) + ->getNodeAggregateId(NodePath::fromNodeNames($tetheredNodeTypeDefinition->name)) ?: NodeAggregateId::create(); array_push($events, ...iterator_to_array($this->createEventsForMissingTetheredNode( $contentGraph, $nodeAggregate, $node->originDimensionSpacePoint, - $tetheredNodeName, - $tetheredNodeAggregateId, - $expectedTetheredNodeType + $tetheredNodeTypeDefinition, + $tetheredNodeAggregateId ))); } } @@ -348,17 +343,15 @@ private function deleteDisallowedNodesWhenChangingNodeType( private function deleteObsoleteTetheredNodesWhenChangingNodeType( ContentGraphInterface $contentGraph, NodeAggregate $nodeAggregate, - NodeTypeName $newNodeTypeName + NodeType $newNodeType ): Events { - $expectedTetheredNodes = $this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($newNodeTypeName); - $events = []; // find disallowed tethered nodes $tetheredNodeAggregates = $contentGraph->findTetheredChildNodeAggregates($nodeAggregate->nodeAggregateId); foreach ($tetheredNodeAggregates as $tetheredNodeAggregate) { /* @var $tetheredNodeAggregate NodeAggregate */ - if ($tetheredNodeAggregate->nodeName !== null && !isset($expectedTetheredNodes[$tetheredNodeAggregate->nodeName->value])) { + if ($tetheredNodeAggregate->nodeName !== null && !$newNodeType->tetheredNodeTypeDefinitions->contain($tetheredNodeAggregate->nodeName)) { // this aggregate (or parts thereof) are DISALLOWED according to constraints. // We now need to find out which edges we need to remove, $dimensionSpacePointsToBeRemoved = $this->findDimensionSpacePointsConnectingParentAndChildAggregate( diff --git a/Neos.ContentRepository.Core/Classes/Feature/RootNodeCreation/RootNodeHandling.php b/Neos.ContentRepository.Core/Classes/Feature/RootNodeCreation/RootNodeHandling.php index ab6f0a1b9a5..da442c82b68 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/RootNodeCreation/RootNodeHandling.php +++ b/Neos.ContentRepository.Core/Classes/Feature/RootNodeCreation/RootNodeHandling.php @@ -105,7 +105,7 @@ private function handleCreateRootNodeAggregateWithNode( foreach ($this->getInterDimensionalVariationGraph()->getRootGeneralizations() as $rootGeneralization) { array_push($events, ...iterator_to_array($this->handleTetheredRootChildNodes( $contentGraph->getContentStreamId(), - $command->nodeTypeName, + $nodeType, OriginDimensionSpacePoint::fromDimensionSpacePoint($rootGeneralization), $this->getInterDimensionalVariationGraph()->getSpecializationSet($rootGeneralization, true), $command->nodeAggregateId, @@ -184,7 +184,7 @@ private function handleUpdateRootNodeAggregateDimensions( */ private function handleTetheredRootChildNodes( ContentStreamId $contentStreamId, - NodeTypeName $nodeTypeName, + NodeType $nodeType, OriginDimensionSpacePoint $originDimensionSpacePoint, DimensionSpacePointSet $coveredDimensionSpacePoints, NodeAggregateId $parentNodeAggregateId, @@ -192,11 +192,11 @@ private function handleTetheredRootChildNodes( ?NodePath $nodePath ): Events { $events = []; - foreach ($this->getNodeTypeManager()->getTetheredNodesConfigurationForNodeType($nodeTypeName) as $nodeNameString => $childNodeType) { - $nodeName = NodeName::fromString($nodeNameString); + foreach ($nodeType->tetheredNodeTypeDefinitions as $tetheredNodeTypeDefinition) { + $childNodeType = $this->requireNodeType($tetheredNodeTypeDefinition->nodeTypeName); $childNodePath = $nodePath - ? $nodePath->appendPathSegment($nodeName) - : NodePath::fromString($nodeName->value); + ? $nodePath->appendPathSegment($tetheredNodeTypeDefinition->name) + : NodePath::fromNodeNames($tetheredNodeTypeDefinition->name); $childNodeAggregateId = $nodeAggregateIdsByNodePath->getNodeAggregateId($childNodePath) ?? NodeAggregateId::create(); $initialPropertyValues = SerializedPropertyValues::defaultFromNodeType($childNodeType, $this->getPropertyConverter()); @@ -204,17 +204,17 @@ private function handleTetheredRootChildNodes( $events[] = $this->createTetheredWithNodeForRoot( $contentStreamId, $childNodeAggregateId, - $childNodeType->name, + $tetheredNodeTypeDefinition->nodeTypeName, $originDimensionSpacePoint, $coveredDimensionSpacePoints, $parentNodeAggregateId, - $nodeName, + $tetheredNodeTypeDefinition->name, $initialPropertyValues ); array_push($events, ...iterator_to_array($this->handleTetheredRootChildNodes( $contentStreamId, - $childNodeType->name, + $childNodeType, $originDimensionSpacePoint, $coveredDimensionSpacePoints, $childNodeAggregateId, diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php index a099ba73665..855a9433cab 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php @@ -189,24 +189,6 @@ public function overrideNodeTypes(array $completeNodeTypeConfiguration): void } } - /** - * Return an array with child nodes which should be automatically created - * Return an array with child nodes which should be automatically created - * - * @return array the key of this array is the name of the child, and the value its NodeType. - */ - public function getTetheredNodesConfigurationForNodeType(NodeTypeName $nodeTypeName): array - { - $childNodeConfiguration = $this->requireNodeType($nodeTypeName)->getConfiguration('childNodes'); - $autoCreatedChildNodes = []; - foreach ($childNodeConfiguration ?? [] as $childNodeName => $configurationForChildNode) { - if (isset($configurationForChildNode['type'])) { - $autoCreatedChildNodes[NodeName::transliterateFromString($childNodeName)->value] = $this->requireNodeType($configurationForChildNode['type']); - } - } - return $autoCreatedChildNodes; - } - /** * Checks if the given $nodeTypeNameToCheck is allowed as a childNode of the given $tetheredNodeName. * @@ -369,18 +351,4 @@ private function evaluateSuperTypeConfiguration( return $superType; } - - /** - * Helper to throw if the NodeType doesn't exit - */ - private function requireNodeType(string|NodeTypeName $nodeTypeName): NodeType - { - return $this->getNodeType($nodeTypeName) ?? throw new NodeTypeNotFoundException( - sprintf( - 'The node type "%s" is not available', - $nodeTypeName instanceof NodeTypeName ? $nodeTypeName->value : $nodeTypeName - ), - 1316598370 - ); - } } diff --git a/Neos.ContentRepository.Core/Classes/NodeType/TetheredNodeTypeDefinitions.php b/Neos.ContentRepository.Core/Classes/NodeType/TetheredNodeTypeDefinitions.php index 5f8f8a1e682..17ba4edfc28 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/TetheredNodeTypeDefinitions.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/TetheredNodeTypeDefinitions.php @@ -65,7 +65,7 @@ public function get(NodeName|string $nodeName): ?TetheredNodeTypeDefinition public function getIterator(): \Traversable { - return yield from $this->tetheredNodeTypeDefinitions; + yield from $this->tetheredNodeTypeDefinitions; } /** diff --git a/Neos.ContentRepository.Core/Tests/Unit/NodeType/NodeTypeManagerTest.php b/Neos.ContentRepository.Core/Tests/Unit/NodeType/NodeTypeManagerTest.php index 017274ad619..6eb8fb13a23 100644 --- a/Neos.ContentRepository.Core/Tests/Unit/NodeType/NodeTypeManagerTest.php +++ b/Neos.ContentRepository.Core/Tests/Unit/NodeType/NodeTypeManagerTest.php @@ -433,10 +433,9 @@ public function anInheritedNodeTypePropertyCanBeOverruledWithEmptyArray(): void */ public function getAutoCreatedChildNodesReturnsLowercaseNames() { - $parentNodeTypeName = NodeTypeName::fromString('Neos.ContentRepository.Testing:Page2'); - $autoCreatedChildNodes = $this->nodeTypeManager->getTetheredNodesConfigurationForNodeType($parentNodeTypeName); + $parentNodeType = $this->nodeTypeManager->getNodeType(NodeTypeName::fromString('Neos.ContentRepository.Testing:Page2')); // This is configured as "nodeName" above, but should be normalized to "nodename" - self::assertArrayHasKey('nodename', $autoCreatedChildNodes); + self::assertNotNull($parentNodeType->tetheredNodeTypeDefinitions->contain('nodename')); } /** diff --git a/Neos.ContentRepository.StructureAdjustment/src/Adjustment/TetheredNodeAdjustments.php b/Neos.ContentRepository.StructureAdjustment/src/Adjustment/TetheredNodeAdjustments.php index f58e4bb02f2..c3ce45a2aae 100644 --- a/Neos.ContentRepository.StructureAdjustment/src/Adjustment/TetheredNodeAdjustments.php +++ b/Neos.ContentRepository.StructureAdjustment/src/Adjustment/TetheredNodeAdjustments.php @@ -51,8 +51,6 @@ public function findAdjustmentsForNodeType(NodeTypeName $nodeTypeName): \Generat // In case we cannot find the expected tethered nodes, this fix cannot do anything. return; } - $expectedTetheredNodes = $this->nodeTypeManager->getTetheredNodesConfigurationForNodeType($nodeTypeName); - foreach ($this->projectedNodeIterator->nodeAggregatesOfType($nodeTypeName) as $nodeAggregate) { // find missing tethered nodes $foundMissingOrDisallowedTetheredNodes = false; @@ -63,14 +61,12 @@ public function findAdjustmentsForNodeType(NodeTypeName $nodeTypeName): \Generat : $nodeAggregate->occupiedDimensionSpacePoints; foreach ($originDimensionSpacePoints as $originDimensionSpacePoint) { - foreach ($expectedTetheredNodes as $tetheredNodeName => $expectedTetheredNodeType) { - $tetheredNodeName = NodeName::fromString($tetheredNodeName); - + foreach ($nodeType->tetheredNodeTypeDefinitions as $tetheredNodeTypeDefinition) { $tetheredNode = $this->projectedNodeIterator->contentGraph->getSubgraph( $originDimensionSpacePoint->toDimensionSpacePoint(), VisibilityConstraints::withoutRestrictions() )->findNodeByPath( - $tetheredNodeName, + $tetheredNodeTypeDefinition->name, $nodeAggregate->nodeAggregateId ); if ($tetheredNode === null) { @@ -82,15 +78,14 @@ public function findAdjustmentsForNodeType(NodeTypeName $nodeTypeName): \Generat $originDimensionSpacePoint, $nodeAggregate->nodeAggregateId, StructureAdjustment::TETHERED_NODE_MISSING, - 'The tethered child node "' . $tetheredNodeName->value . '" is missing.', - function () use ($nodeAggregate, $originDimensionSpacePoint, $tetheredNodeName, $expectedTetheredNodeType) { + 'The tethered child node "' . $tetheredNodeTypeDefinition->name->value . '" is missing.', + function () use ($nodeAggregate, $originDimensionSpacePoint, $tetheredNodeTypeDefinition) { $events = $this->createEventsForMissingTetheredNode( $this->projectedNodeIterator->contentGraph, $nodeAggregate, $originDimensionSpacePoint, - $tetheredNodeName, - null, - $expectedTetheredNodeType + $tetheredNodeTypeDefinition, + null ); $streamName = ContentStreamEventStreamName::fromContentStreamId($nodeAggregate->contentStreamId); @@ -103,7 +98,7 @@ function () use ($nodeAggregate, $originDimensionSpacePoint, $tetheredNodeName, ); } else { yield from $this->ensureNodeIsTethered($tetheredNode); - yield from $this->ensureNodeIsOfType($tetheredNode, $expectedTetheredNodeType); + yield from $this->ensureNodeIsOfType($tetheredNode, $tetheredNodeTypeDefinition->nodeTypeName); } } } @@ -114,7 +109,7 @@ function () use ($nodeAggregate, $originDimensionSpacePoint, $tetheredNodeName, ); foreach ($tetheredNodeAggregates as $tetheredNodeAggregate) { assert($tetheredNodeAggregate->nodeName !== null); // it's tethered! - if (!isset($expectedTetheredNodes[$tetheredNodeAggregate->nodeName->value])) { + if (!$nodeType->tetheredNodeTypeDefinitions->contain($tetheredNodeAggregate->nodeName)) { $foundMissingOrDisallowedTetheredNodes = true; yield StructureAdjustment::createForNodeAggregate( $tetheredNodeAggregate, @@ -142,7 +137,7 @@ function () use ($tetheredNodeAggregate) { } } - if (array_keys($actualTetheredChildNodes) !== array_keys($expectedTetheredNodes)) { + if (array_keys($actualTetheredChildNodes) !== array_keys($nodeType->tetheredNodeTypeDefinitions->toArray())) { // we need to re-order: We go from the last to the first yield StructureAdjustment::createForNodeIdentity( $nodeAggregate->contentStreamId, @@ -150,14 +145,14 @@ function () use ($tetheredNodeAggregate) { $nodeAggregate->nodeAggregateId, StructureAdjustment::TETHERED_NODE_WRONGLY_ORDERED, 'Tethered nodes wrongly ordered, expected: ' - . implode(', ', array_keys($expectedTetheredNodes)) + . implode(', ', array_keys($nodeType->tetheredNodeTypeDefinitions->toArray())) . ' - actual: ' . implode(', ', array_keys($actualTetheredChildNodes)), fn () => $this->reorderNodes( $nodeAggregate->contentStreamId, $nodeAggregate->getCoverageByOccupant($originDimensionSpacePoint), $actualTetheredChildNodes, - array_keys($expectedTetheredNodes) + array_keys($nodeType->tetheredNodeTypeDefinitions->toArray()) ) ); } @@ -183,13 +178,13 @@ private function ensureNodeIsTethered(Node $node): \Generator /** * @return \Generator */ - private function ensureNodeIsOfType(Node $node, NodeType $expectedNodeType): \Generator + private function ensureNodeIsOfType(Node $node, NodeTypeName $expectedNodeTypeName): \Generator { - if ($node->nodeTypeName->value !== $expectedNodeType->name->value) { + if ($node->nodeTypeName->value !== $expectedNodeTypeName->value) { yield StructureAdjustment::createForNode( $node, StructureAdjustment::TETHERED_NODE_TYPE_WRONG, - 'should be of type "' . $expectedNodeType->name->value . '", but was "' . $node->nodeTypeName->value . '".' + 'should be of type "' . $expectedNodeTypeName->value . '", but was "' . $node->nodeTypeName->value . '".' ); } } diff --git a/Neos.Neos/Classes/Service/NodeTypeSchemaBuilder.php b/Neos.Neos/Classes/Service/NodeTypeSchemaBuilder.php index 4f6d755a356..a2834140522 100644 --- a/Neos.Neos/Classes/Service/NodeTypeSchemaBuilder.php +++ b/Neos.Neos/Classes/Service/NodeTypeSchemaBuilder.php @@ -109,10 +109,10 @@ protected function generateConstraints() } } - foreach ($this->nodeTypeManager->getTetheredNodesConfigurationForNodeType($nodeType->name) as $key => $_x) { - foreach ($nodeTypes as $innerNodeTypeName => $_y) { - if ($this->nodeTypeManager->isNodeTypeAllowedAsChildToTetheredNode($nodeType->name, NodeName::fromString($key), NodeTypeName::fromString($innerNodeTypeName))) { - $constraints[$nodeTypeName]['childNodes'][$key]['nodeTypes'][$innerNodeTypeName] = true; + foreach ($nodeType->tetheredNodeTypeDefinitions as $tetheredNodeTypeDefinition) { + foreach ($nodeTypes as $innerNodeTypeName => $_x) { + if ($this->nodeTypeManager->isNodeTypeAllowedAsChildToTetheredNode($nodeType->name, $tetheredNodeTypeDefinition->name, NodeTypeName::fromString($innerNodeTypeName))) { + $constraints[$nodeTypeName]['childNodes'][$tetheredNodeTypeDefinition->name->value]['nodeTypes'][$innerNodeTypeName] = true; } } } From 81dffe939ff1361a79cf8e0dfe49224c8b4c5782 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Fri, 17 May 2024 10:51:27 +0200 Subject: [PATCH 13/18] TASK: Remove `CommandResult::block()` calls --- ...erformanceMeasurementCommandController.php | 11 ++-- .../WorkspaceWritingDuringPublication.php | 14 ++--- .../Feature/WorkspaceCommandHandler.php | 52 +++++++++---------- .../Service/ContentRepositoryBootstrapper.php | 4 +- .../Service/WorkspaceMaintenanceService.php | 2 +- .../src/NodeMigrationService.php | 2 +- .../src/Transformation/Transformations.php | 6 +-- .../src/StructureAdjustmentService.php | 2 +- .../Command/ContentCommandController.php | 23 ++++---- .../Command/WorkspaceCommandController.php | 6 +-- .../Management/WorkspacesController.php | 16 +++--- .../Controller/Service/NodesController.php | 26 ++++------ .../Domain/Service/SiteServiceInternals.php | 4 +- .../Classes/Domain/Workspace/Workspace.php | 16 +++--- .../Service/EditorContentStreamZookeeper.php | 2 +- 15 files changed, 87 insertions(+), 99 deletions(-) diff --git a/Neos.ContentRepository.BehavioralTests/Classes/Command/PerformanceMeasurementCommandController.php b/Neos.ContentRepository.BehavioralTests/Classes/Command/PerformanceMeasurementCommandController.php index f96c3d6fd06..78944e8b7b8 100644 --- a/Neos.ContentRepository.BehavioralTests/Classes/Command/PerformanceMeasurementCommandController.php +++ b/Neos.ContentRepository.BehavioralTests/Classes/Command/PerformanceMeasurementCommandController.php @@ -16,7 +16,6 @@ use Neos\ContentRepository\Core\SharedModel\ContentRepository\ContentRepositoryId; use Neos\ContentRepositoryRegistry\ContentRepositoryRegistry; -use Neos\ContentRepositoryRegistry\Factory\ProjectionCatchUpTrigger\CatchUpTriggerWithSynchronousOption; use Neos\Flow\Cli\CommandController; use Neos\Neos\Fusion\Cache\GraphProjectorCatchUpHookForCacheFlushing; @@ -47,10 +46,8 @@ public function preparePerformanceTestCommand(int $nodesPerLevel, int $levels): { $this->performanceMeasurementService->removeEverything(); $this->outputLine("All removed. Starting to fill."); - CatchUpTriggerWithSynchronousOption::synchronously( - fn() => GraphProjectorCatchUpHookForCacheFlushing::disabled( - fn() => $this->performanceMeasurementService->createNodesForPerformanceTest($nodesPerLevel, $levels) - ) + GraphProjectorCatchUpHookForCacheFlushing::disabled( + fn() => $this->performanceMeasurementService->createNodesForPerformanceTest($nodesPerLevel, $levels) ); } @@ -62,9 +59,7 @@ public function preparePerformanceTestCommand(int $nodesPerLevel, int $levels): public function testPerformanceCommand(): void { $time = microtime(true); - CatchUpTriggerWithSynchronousOption::synchronously( - fn() => $this->performanceMeasurementService->forkContentStream() - ); + $this->performanceMeasurementService->forkContentStream() $timeElapsed = microtime(true) - $time; $this->outputLine('Time: ' . $timeElapsed); diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Functional/Feature/WorkspacePublication/WorkspaceWritingDuringPublication.php b/Neos.ContentRepository.BehavioralTests/Tests/Functional/Feature/WorkspacePublication/WorkspaceWritingDuringPublication.php index 74b80f5bcde..02c77e0bd58 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Functional/Feature/WorkspacePublication/WorkspaceWritingDuringPublication.php +++ b/Neos.ContentRepository.BehavioralTests/Tests/Functional/Feature/WorkspacePublication/WorkspaceWritingDuringPublication.php @@ -111,12 +111,12 @@ public function getContentDimensionsOrderedByPriority(): array new WorkspaceTitle('Live'), new WorkspaceDescription('The live workspace'), ContentStreamId::fromString('live-cs-id') - ))->block(); + )); $contentRepository->handle(CreateRootNodeAggregateWithNode::create( WorkspaceName::forLive(), NodeAggregateId::fromString('lady-eleonode-rootford'), NodeTypeName::fromString(NodeTypeName::ROOT_NODE_TYPE_NAME) - ))->block(); + )); $contentRepository->handle(CreateNodeAggregateWithNode::create( WorkspaceName::forLive(), NodeAggregateId::fromString('nody-mc-nodeface'), @@ -126,14 +126,14 @@ public function getContentDimensionsOrderedByPriority(): array initialPropertyValues: PropertyValuesToWrite::fromArray([ 'title' => 'title' ]) - ))->block(); + )); $contentRepository->handle(CreateWorkspace::create( WorkspaceName::fromString('user-test'), WorkspaceName::forLive(), new WorkspaceTitle('User'), new WorkspaceDescription('The user workspace'), ContentStreamId::fromString('user-cs-id') - ))->block(); + )); for ($i = 0; $i <= 1000; $i++) { $contentRepository->handle(CreateNodeAggregateWithNode::create( WorkspaceName::forLive(), @@ -144,7 +144,7 @@ public function getContentDimensionsOrderedByPriority(): array initialPropertyValues: PropertyValuesToWrite::fromArray([ 'title' => 'title' ]) - ))->block(); + )); // give the database lock some time to recover usleep(5000); } @@ -166,7 +166,7 @@ public function whileAWorkspaceIsBeingRebased(): void try { $this->contentRepository->handle(RebaseWorkspace::create( $workspaceName, - )->withRebasedContentStreamId(ContentStreamId::fromString('user-test-rebased')))->block(); + )->withRebasedContentStreamId(ContentStreamId::fromString('user-test-rebased'))); } catch (\RuntimeException $runtimeException) { $exception = $runtimeException; } @@ -194,7 +194,7 @@ public function thenConcurrentCommandsLeadToAnException(): void PropertyValuesToWrite::fromArray([ 'title' => 'title47b' ]) - ))->block(); + )); } catch (\Exception $thrownException) { $exceptionIsThrownAsExpected = $thrownException instanceof ContentStreamIsClosed || $thrownException instanceof ConcurrencyException; diff --git a/Neos.ContentRepository.Core/Classes/Feature/WorkspaceCommandHandler.php b/Neos.ContentRepository.Core/Classes/Feature/WorkspaceCommandHandler.php index c154e056c7d..8114ded67e8 100644 --- a/Neos.ContentRepository.Core/Classes/Feature/WorkspaceCommandHandler.php +++ b/Neos.ContentRepository.Core/Classes/Feature/WorkspaceCommandHandler.php @@ -144,7 +144,7 @@ private function handleCreateWorkspace( $command->newContentStreamId, $baseWorkspaceContentGraph->getContentStreamId(), ) - )->block(); + ); $events = Events::with( new WorkspaceWasCreated( @@ -205,7 +205,7 @@ private function handleCreateRootWorkspace( CreateContentStream::create( $newContentStreamId, ) - )->block(); + ); $events = Events::with( new RootWorkspaceWasCreated( @@ -242,7 +242,7 @@ private function handlePublishWorkspace( $this->publishContentStream( $workspace->currentContentStreamId, $baseWorkspace->currentContentStreamId - )?->block(); + ); // After publishing a workspace, we need to again fork from Base. $commandHandlingDependencies->handle( @@ -250,7 +250,7 @@ private function handlePublishWorkspace( $command->newContentStreamId, $baseWorkspace->currentContentStreamId, ) - )->block(); + ); $streamName = WorkspaceEventStreamName::fromWorkspaceName($command->workspaceName)->getEventStreamName(); $events = Events::with( @@ -363,7 +363,7 @@ private function handleRebaseWorkspace( // 0) close old content stream $commandHandlingDependencies->handle( CloseContentStream::create($oldWorkspaceContentStreamId) - )->block(); + ); // 1) fork a new content stream $rebasedContentStreamId = $command->rebasedContentStreamId; @@ -372,7 +372,7 @@ private function handleRebaseWorkspace( $command->rebasedContentStreamId, $baseWorkspace->currentContentStreamId, ) - )->block(); + ); $workspaceStreamName = WorkspaceEventStreamName::fromWorkspaceName($command->workspaceName)->getEventStreamName(); $workspaceContentStreamName = ContentStreamEventStreamName::fromContentStreamId( @@ -389,7 +389,7 @@ function () use ($originalCommands, $commandHandlingDependencies, &$commandsThat foreach ($originalCommands as $sequenceNumber => $originalCommand) { // We no longer need to adjust commands as the workspace stays the same try { - $commandHandlingDependencies->handle($originalCommand)->block(); + $commandHandlingDependencies->handle($originalCommand); // if we came this far, we know the command was applied successfully. } catch (\Exception $e) { $commandsThatFailed = $commandsThatFailed->add( @@ -427,12 +427,12 @@ function () use ($originalCommands, $commandHandlingDependencies, &$commandsThat $oldWorkspaceContentStreamId, $oldWorkspaceContentStreamIdState, ) - )->block(); + ); // ... remove the newly created one... $commandHandlingDependencies->handle(RemoveContentStream::create( $rebasedContentStreamId - ))->block(); + )); // ...and throw an exception that contains all the information about what exactly failed throw new WorkspaceRebaseFailed($commandsThatFailed, 'Rebase failed', 1711713880); @@ -513,7 +513,7 @@ private function handlePublishIndividualNodesFromWorkspace( $command->contentStreamIdForMatchingPart, $baseWorkspace->currentContentStreamId, ) - )->block(); + ); try { // 4) using the new content stream, apply the matching commands @@ -531,7 +531,7 @@ function () use ($matchingCommands, $commandHandlingDependencies, $baseWorkspace $commandHandlingDependencies->handle($matchingCommand->createCopyForWorkspace( $baseWorkspace->workspaceName, - ))->block(); + )); } } ); @@ -540,7 +540,7 @@ function () use ($matchingCommands, $commandHandlingDependencies, $baseWorkspace $this->publishContentStream( $command->contentStreamIdForMatchingPart, $baseWorkspace->currentContentStreamId - )?->block(); + ); // 6) fork a new content stream, based on the base WS, and apply REST $commandHandlingDependencies->handle( @@ -548,7 +548,7 @@ function () use ($matchingCommands, $commandHandlingDependencies, $baseWorkspace $command->contentStreamIdForRemainingPart, $baseWorkspace->currentContentStreamId ) - )->block(); + ); // 7) apply REMAINING commands to the workspace's new content stream @@ -557,7 +557,7 @@ function () use ($matchingCommands, $commandHandlingDependencies, $baseWorkspace $command->contentStreamIdForRemainingPart, function () use ($commandHandlingDependencies, $remainingCommands) { foreach ($remainingCommands as $remainingCommand) { - $commandHandlingDependencies->handle($remainingCommand)->block(); + $commandHandlingDependencies->handle($remainingCommand); } } ); @@ -568,16 +568,16 @@ function () use ($commandHandlingDependencies, $remainingCommands) { $oldWorkspaceContentStreamId, $oldWorkspaceContentStreamIdState, ) - )->block(); + ); $commandHandlingDependencies->handle(RemoveContentStream::create( $command->contentStreamIdForMatchingPart - ))->block(); + )); try { $commandHandlingDependencies->handle(RemoveContentStream::create( $command->contentStreamIdForRemainingPart - ))->block(); + )); } catch (ContentStreamDoesNotExistYet $contentStreamDoesNotExistYet) { // in case the exception was thrown before 6), this does not exist } @@ -637,7 +637,7 @@ private function handleDiscardIndividualNodesFromWorkspace( // 1) close old content stream $commandHandlingDependencies->handle( CloseContentStream::create($oldWorkspaceContentStreamId) - )->block(); + ); // 2) filter commands, only keeping the ones NOT MATCHING the nodes from the command // (i.e. the modifications we want to keep) @@ -653,7 +653,7 @@ private function handleDiscardIndividualNodesFromWorkspace( $command->newContentStreamId, $baseWorkspace->currentContentStreamId, ) - )->block(); + ); // 4) using the new content stream, apply the commands to keep try { @@ -671,7 +671,7 @@ function () use ($commandsToKeep, $commandHandlingDependencies, $baseWorkspace): $commandHandlingDependencies->handle($matchingCommand->createCopyForWorkspace( $baseWorkspace->workspaceName, - ))->block(); + )); } } ); @@ -682,11 +682,11 @@ function () use ($commandsToKeep, $commandHandlingDependencies, $baseWorkspace): $oldWorkspaceContentStreamId, $oldWorkspaceContentStreamIdState, ) - )->block(); + ); $commandHandlingDependencies->handle(RemoveContentStream::create( $command->newContentStreamId - ))->block(); + )); throw $exception; } @@ -694,7 +694,7 @@ function () use ($commandsToKeep, $commandHandlingDependencies, $baseWorkspace): // 5) If everything worked, to avoid dangling content streams, we need to remove the old content stream $commandHandlingDependencies->handle(RemoveContentStream::create( $oldWorkspaceContentStreamId - ))->block(); + )); $streamName = WorkspaceEventStreamName::fromWorkspaceName($command->workspaceName)->getEventStreamName(); @@ -779,7 +779,7 @@ private function handleDiscardWorkspace( $newContentStream, $baseWorkspace->currentContentStreamId, ) - )->block(); + ); // if we got so far without an Exception, we can switch the Workspace's active Content stream. $streamName = WorkspaceEventStreamName::fromWorkspaceName($command->workspaceName)->getEventStreamName(); @@ -824,7 +824,7 @@ private function handleChangeBaseWorkspace( $command->newContentStreamId, $baseWorkspace->currentContentStreamId, ) - )->block(); + ); $streamName = WorkspaceEventStreamName::fromWorkspaceName($command->workspaceName)->getEventStreamName(); $events = Events::with( @@ -855,7 +855,7 @@ private function handleDeleteWorkspace( RemoveContentStream::create( $workspace->currentContentStreamId ) - )->block(); + ); $events = Events::with( new WorkspaceWasRemoved( diff --git a/Neos.ContentRepository.Core/Classes/Service/ContentRepositoryBootstrapper.php b/Neos.ContentRepository.Core/Classes/Service/ContentRepositoryBootstrapper.php index 5a138b0df7e..b5b92e1858a 100644 --- a/Neos.ContentRepository.Core/Classes/Service/ContentRepositoryBootstrapper.php +++ b/Neos.ContentRepository.Core/Classes/Service/ContentRepositoryBootstrapper.php @@ -52,7 +52,7 @@ public function getOrCreateLiveWorkspace(): Workspace WorkspaceDescription::fromString('Public live workspace'), ContentStreamId::create() ) - )->block(); + ); $liveWorkspace = $this->contentRepository->getWorkspaceFinder()->findOneByName($liveWorkspaceName); if (!$liveWorkspace) { throw new \Exception('Live workspace creation failed', 1699002435); @@ -81,7 +81,7 @@ public function getOrCreateRootNodeAggregate( $workspace->workspaceName, $rootNodeAggregateId, $rootNodeTypeName, - ))->block(); + )); return $rootNodeAggregateId; } } diff --git a/Neos.ContentRepository.Core/Classes/Service/WorkspaceMaintenanceService.php b/Neos.ContentRepository.Core/Classes/Service/WorkspaceMaintenanceService.php index dd3f10a1464..053d0dc3565 100644 --- a/Neos.ContentRepository.Core/Classes/Service/WorkspaceMaintenanceService.php +++ b/Neos.ContentRepository.Core/Classes/Service/WorkspaceMaintenanceService.php @@ -41,7 +41,7 @@ public function rebaseOutdatedWorkspaces(?RebaseErrorHandlingStrategy $strategy if ($strategy) { $rebaseCommand = $rebaseCommand->withErrorHandlingStrategy($strategy); } - $this->contentRepository->handle($rebaseCommand)->block(); + $this->contentRepository->handle($rebaseCommand); } return $outdatedWorkspaces; diff --git a/Neos.ContentRepository.NodeMigration/src/NodeMigrationService.php b/Neos.ContentRepository.NodeMigration/src/NodeMigrationService.php index 23b18fc4bee..4184b8b4569 100644 --- a/Neos.ContentRepository.NodeMigration/src/NodeMigrationService.php +++ b/Neos.ContentRepository.NodeMigration/src/NodeMigrationService.php @@ -78,7 +78,7 @@ public function executeMigration(ExecuteMigration $command): void WorkspaceDescription::fromString(''), $contentStreamForWriting, ) - )->block(); + ); /** array $migrationDescription */ $this->executeSubMigrationAndBlock( $migrationDescription, diff --git a/Neos.ContentRepository.NodeMigration/src/Transformation/Transformations.php b/Neos.ContentRepository.NodeMigration/src/Transformation/Transformations.php index cbc86408335..cd95b41e224 100644 --- a/Neos.ContentRepository.NodeMigration/src/Transformation/Transformations.php +++ b/Neos.ContentRepository.NodeMigration/src/Transformation/Transformations.php @@ -94,7 +94,7 @@ public function executeGlobalAndBlock( WorkspaceName $workspaceNameForWriting, ): void { foreach ($this->globalTransformations as $globalTransformation) { - $globalTransformation->execute($workspaceNameForWriting)->block(); + $globalTransformation->execute($workspaceNameForWriting); } } @@ -104,7 +104,7 @@ public function executeNodeAggregateBasedAndBlock( ContentStreamId $contentStreamForWriting ): void { foreach ($this->nodeAggregateBasedTransformations as $nodeAggregateBasedTransformation) { - $nodeAggregateBasedTransformation->execute($nodeAggregate, $workspaceNameForWriting, $contentStreamForWriting)->block(); + $nodeAggregateBasedTransformation->execute($nodeAggregate, $workspaceNameForWriting, $contentStreamForWriting); } } @@ -115,7 +115,7 @@ public function executeNodeBasedAndBlock( ContentStreamId $contentStreamForWriting ): void { foreach ($this->nodeBasedTransformations as $nodeBasedTransformation) { - $nodeBasedTransformation->execute($node, $coveredDimensionSpacePoints, $workspaceNameForWriting, $contentStreamForWriting)?->block(); + $nodeBasedTransformation->execute($node, $coveredDimensionSpacePoints, $workspaceNameForWriting, $contentStreamForWriting); } } } diff --git a/Neos.ContentRepository.StructureAdjustment/src/StructureAdjustmentService.php b/Neos.ContentRepository.StructureAdjustment/src/StructureAdjustmentService.php index 3c671758d58..9d2e39975ad 100644 --- a/Neos.ContentRepository.StructureAdjustment/src/StructureAdjustmentService.php +++ b/Neos.ContentRepository.StructureAdjustment/src/StructureAdjustmentService.php @@ -95,7 +95,7 @@ public function fixError(StructureAdjustment $adjustment): void $remediation = $adjustment->remediation; $eventsToPublish = $remediation(); assert($eventsToPublish instanceof EventsToPublish); - $this->eventPersister->publishEvents($eventsToPublish)->block(); + $this->eventPersister->publishEvents($eventsToPublish); } } } diff --git a/Neos.ContentRepositoryRegistry/Classes/Command/ContentCommandController.php b/Neos.ContentRepositoryRegistry/Classes/Command/ContentCommandController.php index aebcfb0dd96..7dd70f7859e 100644 --- a/Neos.ContentRepositoryRegistry/Classes/Command/ContentCommandController.php +++ b/Neos.ContentRepositoryRegistry/Classes/Command/ContentCommandController.php @@ -28,7 +28,6 @@ use Neos\ContentRepository\Core\SharedModel\Node\NodeAggregateId; use Neos\ContentRepository\Core\SharedModel\Workspace\WorkspaceName; use Neos\ContentRepositoryRegistry\ContentRepositoryRegistry; -use Neos\ContentRepositoryRegistry\Factory\ProjectionCatchUpTrigger\CatchUpTriggerWithSynchronousOption; use Neos\Flow\Cli\CommandController; final class ContentCommandController extends CommandController @@ -75,7 +74,7 @@ public function refreshRootNodeDimensionsCommand(string $contentRepository = 'de $workspaceInstance->workspaceName, $rootNodeAggregate->nodeAggregateId ) - )->block(); + ); } $this->outputLine('Done!'); } @@ -118,7 +117,7 @@ public function moveDimensionSpacePointCommand(string $source, string $target, s $sourceDimensionSpacePoint, $targetDimensionSpacePoint ) - )->block(); + ); $this->outputLine('Done!'); } @@ -163,15 +162,13 @@ public function createVariantsRecursivelyCommand(string $source, string $target, foreach ($rootNodeAggregates as $rootNodeAggregate) { - CatchUpTriggerWithSynchronousOption::synchronously(fn() => - $this->createVariantRecursivelyInternal( - 0, - $rootNodeAggregate->nodeAggregateId, - $sourceSubgraph, - $targetSpacePoint, - $workspaceName, - $contentRepositoryInstance, - ) + $this->createVariantRecursivelyInternal( + 0, + $rootNodeAggregate->nodeAggregateId, + $sourceSubgraph, + $targetSpacePoint, + $workspaceName, + $contentRepositoryInstance, ); } @@ -201,7 +198,7 @@ private function createVariantRecursivelyInternal(int $level, NodeAggregateId $p $childNode->nodeAggregateId, $childNode->originDimensionSpacePoint, $target - ))->block(); + )); } catch (DimensionSpacePointIsAlreadyOccupied $e) { if ($childNodeType?->isOfType('Neos.Neos:Document')) { $this->output("%s (already exists)\n", [ diff --git a/Neos.Neos/Classes/Command/WorkspaceCommandController.php b/Neos.Neos/Classes/Command/WorkspaceCommandController.php index eb0b631a6eb..64d86078143 100644 --- a/Neos.Neos/Classes/Command/WorkspaceCommandController.php +++ b/Neos.Neos/Classes/Command/WorkspaceCommandController.php @@ -153,7 +153,7 @@ public function createRootCommand(string $name, string $contentRepositoryIdentif WorkspaceTitle::fromString($name), WorkspaceDescription::fromString($name), ContentStreamId::create() - ))->block(); + )); } /** @@ -199,7 +199,7 @@ public function createCommand( WorkspaceDescription::fromString($description ?: $workspace), ContentStreamId::create(), $workspaceOwnerUserId - ))->block(); + )); } catch (WorkspaceAlreadyExists $workspaceAlreadyExists) { $this->outputLine('Workspace "%s" already exists', [$workspace]); $this->quit(1); @@ -309,7 +309,7 @@ public function deleteCommand(string $workspace, bool $force = false, string $co DeleteWorkspace::create( $workspaceName ) - )->block(); + ); $this->outputLine('Deleted workspace "%s"', [$workspaceName->value]); } diff --git a/Neos.Neos/Classes/Controller/Module/Management/WorkspacesController.php b/Neos.Neos/Classes/Controller/Module/Management/WorkspacesController.php index c1c953efd24..90b32ee165f 100644 --- a/Neos.Neos/Classes/Controller/Module/Management/WorkspacesController.php +++ b/Neos.Neos/Classes/Controller/Module/Management/WorkspacesController.php @@ -240,7 +240,7 @@ public function createAction( ContentStreamId::create(), $visibility === 'private' ? $currentUserIdentifier : null ) - )->block(); + ); } catch (WorkspaceAlreadyExists $exception) { $this->addFlashMessage( $this->getModuleLabel('workspaces.workspaceWithThisTitleAlreadyExists'), @@ -319,7 +319,7 @@ public function updateAction( $title, $description ) - )->block(); + ); } if ($workspace->workspaceOwner !== $workspaceOwner) { @@ -328,7 +328,7 @@ public function updateAction( $workspaceName, $workspaceOwner ?: null, ) - )->block(); + ); } $this->addFlashMessage($this->translator->translateById( @@ -428,7 +428,7 @@ public function deleteAction(WorkspaceName $workspaceName): void DeleteWorkspace::create( $workspaceName, ) - )->block(); + ); $this->addFlashMessage($this->translator->translateById( 'workspaces.workspaceHasBeenRemoved', @@ -531,7 +531,7 @@ public function publishNodeAction(string $nodeAddress, WorkspaceName $selectedWo ), ); $contentRepository->handle($command) - ->block(); + ; $this->addFlashMessage($this->translator->translateById( 'workspaces.selectedChangeHasBeenPublished', @@ -568,7 +568,7 @@ public function discardNodeAction(string $nodeAddress, WorkspaceName $selectedWo ), ); $contentRepository->handle($command) - ->block(); + ; $this->addFlashMessage($this->translator->translateById( 'workspaces.selectedChangeHasBeenDiscarded', @@ -611,7 +611,7 @@ public function publishOrDiscardNodesAction(array $nodes, string $action, string NodeIdsToPublishOrDiscard::create(...$nodesToPublishOrDiscard), ); $contentRepository->handle($command) - ->block(); + ; $this->addFlashMessage($this->translator->translateById( 'workspaces.selectedChangesHaveBeenPublished', [], @@ -627,7 +627,7 @@ public function publishOrDiscardNodesAction(array $nodes, string $action, string NodeIdsToPublishOrDiscard::create(...$nodesToPublishOrDiscard), ); $contentRepository->handle($command) - ->block(); + ; $this->addFlashMessage($this->translator->translateById( 'workspaces.selectedChangesHaveBeenDiscarded', [], diff --git a/Neos.Neos/Classes/Controller/Service/NodesController.php b/Neos.Neos/Classes/Controller/Service/NodesController.php index c2905fb04a5..8308dead8eb 100644 --- a/Neos.Neos/Classes/Controller/Service/NodesController.php +++ b/Neos.Neos/Classes/Controller/Service/NodesController.php @@ -26,12 +26,9 @@ use Neos\ContentRepository\Core\Projection\ContentGraph\Filter\NodeType\NodeTypeCriteria; use Neos\ContentRepository\Core\Projection\ContentGraph\NodeAggregate; use Neos\ContentRepository\Core\Projection\ContentGraph\VisibilityConstraints; -use Neos\ContentRepository\Core\Projection\Workspace\Workspace; use Neos\ContentRepository\Core\SharedModel\Node\NodeAggregateId; -use Neos\ContentRepository\Core\SharedModel\Workspace\ContentStreamId; use Neos\ContentRepository\Core\SharedModel\Workspace\WorkspaceName; use Neos\ContentRepositoryRegistry\ContentRepositoryRegistry; -use Neos\ContentRepositoryRegistry\Factory\ProjectionCatchUpTrigger\CatchUpTriggerWithSynchronousOption; use Neos\Flow\Annotations as Flow; use Neos\Flow\Mvc\Controller\ActionController; use Neos\Flow\Property\PropertyMapper; @@ -279,16 +276,15 @@ public function createAction( ); if ($mode === 'adoptFromAnotherDimension' || $mode === 'adoptFromAnotherDimensionAndCopyContent') { - CatchUpTriggerWithSynchronousOption::synchronously(fn() => - $this->adoptNodeAndParents( - $workspaceName, - $nodeAggregateId, - $sourceSubgraph, - $targetSubgraph, - $targetDimensionSpacePoint, - $contentRepository, - $mode === 'adoptFromAnotherDimensionAndCopyContent' - )); + $this->adoptNodeAndParents( + $workspaceName, + $nodeAggregateId, + $sourceSubgraph, + $targetSubgraph, + $targetDimensionSpacePoint, + $contentRepository, + $mode === 'adoptFromAnotherDimensionAndCopyContent' + ); $this->redirect('show', null, null, [ 'identifier' => $nodeAggregateId->value, @@ -413,7 +409,7 @@ protected function adoptNodeAndParents( $sourceNode->originDimensionSpacePoint, OriginDimensionSpacePoint::fromDimensionSpacePoint($targetDimensionSpacePoint), ) - )->block(); + ); if ($copyContent === true) { $contentNodeConstraint = NodeTypeCriteria::fromFilterString('!' . NodeTypeNameFactory::NAME_DOCUMENT); @@ -455,7 +451,7 @@ private function createNodeVariantsForChildNodes( $childNode->originDimensionSpacePoint, OriginDimensionSpacePoint::fromDimensionSpacePoint($targetDimensionSpacePoint), ) - )->block(); + ); } $this->createNodeVariantsForChildNodes( diff --git a/Neos.Neos/Classes/Domain/Service/SiteServiceInternals.php b/Neos.Neos/Classes/Domain/Service/SiteServiceInternals.php index 24fd9eeb985..7412d45e57a 100644 --- a/Neos.Neos/Classes/Domain/Service/SiteServiceInternals.php +++ b/Neos.Neos/Classes/Domain/Service/SiteServiceInternals.php @@ -120,7 +120,7 @@ public function createSiteNodeIfNotExists(Site $site, string $nodeTypeName): voi PropertyValuesToWrite::fromArray([ 'title' => $site->getName() ]) - ))->block(); + )); // Handle remaining root dimension space points by creating peer variants foreach ($rootDimensionSpacePoints as $rootDimensionSpacePoint) { @@ -129,7 +129,7 @@ public function createSiteNodeIfNotExists(Site $site, string $nodeTypeName): voi $siteNodeAggregateId, OriginDimensionSpacePoint::fromDimensionSpacePoint($arbitraryRootDimensionSpacePoint), OriginDimensionSpacePoint::fromDimensionSpacePoint($rootDimensionSpacePoint), - ))->block(); + )); } } } diff --git a/Neos.Neos/Classes/Domain/Workspace/Workspace.php b/Neos.Neos/Classes/Domain/Workspace/Workspace.php index 814a897f158..22487168e32 100644 --- a/Neos.Neos/Classes/Domain/Workspace/Workspace.php +++ b/Neos.Neos/Classes/Domain/Workspace/Workspace.php @@ -241,7 +241,7 @@ public function rebase(RebaseErrorHandlingStrategy $rebaseErrorHandlingStrategy $this->name )->withErrorHandlingStrategy($rebaseErrorHandlingStrategy); - $this->contentRepository->handle($rebaseCommand)->block(); + $this->contentRepository->handle($rebaseCommand); $this->updateCurrentState(); } @@ -253,7 +253,7 @@ public function changeBaseWorkspace(WorkspaceName $baseWorkspaceName): void $this->name, $baseWorkspaceName ) - )->block(); + ); $this->updateCurrentState(); } @@ -290,7 +290,7 @@ private function publish(): void PublishWorkspace::create( $this->name, ) - )->block(); + ); $this->updateCurrentState(); } @@ -306,14 +306,14 @@ private function publishNodes( RebaseWorkspace::create( $this->name ) - )->block(); + ); $this->contentRepository->handle( PublishIndividualNodesFromWorkspace::create( $this->name, $nodeIdsToPublish ) - )->block(); + ); $this->updateCurrentState(); } @@ -324,7 +324,7 @@ private function discard(): void DiscardWorkspace::create( $this->name, ) - )->block(); + ); $this->updateCurrentState(); } @@ -340,14 +340,14 @@ private function discardNodes( RebaseWorkspace::create( $this->name ) - )->block(); + ); $this->contentRepository->handle( DiscardIndividualNodesFromWorkspace::create( $this->name, $nodeIdsToDiscard ) - )->block(); + ); $this->updateCurrentState(); } diff --git a/Neos.Neos/Classes/Service/EditorContentStreamZookeeper.php b/Neos.Neos/Classes/Service/EditorContentStreamZookeeper.php index 1842236da31..f4e18d0a96d 100644 --- a/Neos.Neos/Classes/Service/EditorContentStreamZookeeper.php +++ b/Neos.Neos/Classes/Service/EditorContentStreamZookeeper.php @@ -136,6 +136,6 @@ public function relayEditorAuthentication(Authentication\TokenInterface $token): $editorsNewContentStreamId, UserId::fromString($this->persistenceManager->getIdentifierByObject($user)) ) - )->block(); + ); } } From 625be516e7f7a18c17fc1d9f362adffab6a8371a Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Fri, 17 May 2024 11:10:43 +0200 Subject: [PATCH 14/18] TASK: Adjusts TestSuite to be synchronous This change was partially ported from https://github.com/neos/neos-development-collection/pull/4988 Following things have been adjusted: - Removal of the step: The graph projection is fully up to date - remove lastCommandOrEventResult - Removal of the step: The documenturipath projection is up to date - Use injected Connection in tests instead of DoctrineDbalClient (this will be fully refactored in #4988) --- .../Features/Bootstrap/FeatureContext.php | 1 - ...ectionIntegrityViolationDetectionTrait.php | 25 ++-- .../HierarchyIntegrityIsProvided.feature | 2 - ...odesHaveAtMostOneParentPerSubgraph.feature | 2 - .../ReferenceIntegrityIsProvided.feature | 3 - .../SiblingsAreDistinctlySorted.feature | 3 - .../SubtreeTagsAreInherited.feature | 3 - .../TetheredNodesAreNamed.feature | 3 - .../Projection/SiblingPositions.feature | 9 -- ...erformanceMeasurementCommandController.php | 2 +- .../Behavior/Bootstrap/FeatureContext.php | 5 +- ...AggregateWithNode_ConstraintChecks.feature | 2 - ...ggregateWithNode_WithoutDimensions.feature | 4 - ...TetheredChildren_WithoutDimensions.feature | 2 - ...AndTetheredChildren_WithDimensions.feature | 2 - ...deAggregateWithNode_WithDimensions.feature | 4 - ...AggregateWithNode_ConstraintChecks.feature | 3 - ...de_ConstraintChecks_WithDimensions.feature | 6 - ...ggregateWithNode_WithoutDimensions.feature | 12 -- ...deAggregateWithNode_WithDimensions.feature | 2 - ...ComplexDefaultAndInitialProperties.feature | 4 - ...eWithNode_NodeTypeConstraintChecks.feature | 8 -- ...CreateNodeVariant_ConstraintChecks.feature | 2 - ...02-CreateNodeSpecializationVariant.feature | 5 - ...03-CreateNodeGeneralizationVariant.feature | 11 -- .../04-CreateNodePeerVariant.feature | 12 -- ...SetNodeProperties_ConstraintChecks.feature | 2 - .../02-SetNodeProperties.feature | 6 - ...3-SetNodeProperties_PropertyScopes.feature | 5 - ...SetNodeReferences_ConstraintChecks.feature | 3 - ...etNodeReferences_WithoutDimensions.feature | 15 --- ...3-SetNodeReferences_WithDimensions.feature | 3 - ...4-SetNodeReferences_PropertyScopes.feature | 5 - ...odeVariation_After_NodeReferencing.feature | 14 --- ...ableNodeAggregate_ConstraintChecks.feature | 3 - ...bleNodeAggregate_WithoutDimensions.feature | 4 - ...isableNodeAggregate_WithDimensions.feature | 5 - ...ableNodeAggregate_ConstraintChecks.feature | 2 - ...bleNodeAggregate_WithoutDimensions.feature | 11 -- ...EnableNodeAggregate_WithDimensions.feature | 8 -- ...DisabledAncestor_WithoutDimensions.feature | 4 - ...ithDisabledAncestor_WithDimensions.feature | 5 - ...09-CreateNodeVariantOfDisabledNode.feature | 20 ---- ...moveNodeAggregate_ConstraintChecks.feature | 2 - ...oveNodeAggregate_WithoutDimensions.feature | 8 -- ...RemoveNodeAggregate_WithDimensions.feature | 10 -- .../04-VariantRecreation.feature | 9 -- .../05-CreateNodeAfterDeletion.feature | 3 - ...SpecializationVariantAfterDeletion.feature | 4 - .../01-MoveNodes_ConstraintChecks.feature | 7 -- ...deAggregate_NoNewParent_Dimensions.feature | 51 -------- ...NodeAggregate_NewParent_Dimensions.feature | 54 --------- ...oveNodeAggregate_ScatteredChildren.feature | 10 -- .../05-MoveNodeAggregate_SubtreeTags.feature | 113 ------------------ .../06-AdditionalConstraintChecks.feature | 4 - ...MoveNodeAggregateWithoutDimensions.feature | 7 -- ...NodeAggregateName_ConstraintChecks.feature | 4 - .../02-ChangeNodeAggregateName.feature | 5 - ...loseContentStream_ConstraintChecks.feature | 1 - ...ForkContentStream_ConstraintChecks.feature | 1 - ...WithDisabledNodesWithoutDimensions.feature | 4 - ...ForkContentStreamWithoutDimensions.feature | 4 - .../NodeReferencesOnForkContentStream.feature | 5 - .../AddDimensionShineThrough.feature | 5 - .../AddNewProperty_NoDimensions.feature | 4 - .../ChangePropertyValue_Dimensions.feature | 6 - .../ChangePropertyValue_NoDimensions.feature | 3 - .../Filter_NodeName_NoDimensions.feature | 5 - ...lter_PropertyNotEmpty_NoDimensions.feature | 6 - .../Filter_PropertyValue_NoDimensions.feature | 6 - .../Migration/MoveDimensionSpacePoint.feature | 4 - .../NodeTypeAdjustment_Dimensions.feature | 3 - .../NodeTypeAdjustment_NoDimensions.feature | 3 - .../Migration/RemoveNodes_Dimensions.feature | 4 - .../RemoveProperty_NoDimensions.feature | 3 - .../RenameNodeAggregate_Dimensions.feature | 4 - .../RenameProperty_NoDimensions.feature | 3 - .../StripTagsOnProperty_NoDimensions.feature | 3 - .../NodeCopying/CopyNode_NoDimensions.feature | 3 - .../NodePropertyConversion.feature | 5 - .../RemoveNodeAggregateAfterDisabling.feature | 5 - .../RemoveNodeAggregateWithDimensions.feature | 8 -- .../NodeRemoval/RemoveNodesFromAggregate.wip | 14 --- ...eNodeAggregateType_BasicErrorCases.feature | 7 -- ...geNodeAggregateType_DeleteStrategy.feature | 14 --- ...odeAggregateType_HappyPathStrategy.feature | 9 -- .../NodeTraversal/AncestorNodes.feature | 4 - .../Features/NodeTraversal/ChildNodes.feature | 3 - .../NodeTraversal/ClosestNode.feature | 4 - .../Features/NodeTraversal/CountNodes.feature | 3 - .../NodeTraversal/DescendantNodes.feature | 3 - .../NodeTraversal/FindNodeById.feature | 3 - .../NodeTraversal/FindNodeByPath.feature | 3 - .../FindNodeByPathAsNodeName.feature | 3 - .../NodeTraversal/FindParentNode.feature | 3 - .../NodeTraversal/FindRootNodeByType.feature | 3 - .../NodeTraversal/FindSubtree.feature | 3 - .../Features/NodeTraversal/References.feature | 3 - .../NodeTraversal/RetrieveNodePath.feature | 3 - .../NodeTraversal/SiblingNodes.feature | 3 - .../Features/NodeTraversal/Timestamps.feature | 19 --- ...AreConnectedToARootNodePerSubgraph.feature | 3 - .../AllNodesCoverTheirOrigin.feature | 3 - .../IntactContentGraph.feature | 2 - ...ateIdentifiersAreUniquePerSubgraph.feature | 3 - ...istentlyClassifiedPerContentStream.feature | 3 - ...eConsistentlyTypedPerContentStream.feature | 3 - .../ReferenceIntegrityIsProvided.feature | 4 - ...AggregateDimensions_WithDimensions.feature | 7 -- .../DimensionMismatch.feature | 3 - .../DisallowedChildNode.feature | 4 - ...sallowedChildNodesAndTetheredNodes.feature | 2 - .../StructureAdjustment/Properties.feature | 5 - .../StructureAdjustment/TetheredNodes.feature | 2 - .../TetheredNodesReordering.feature | 3 - .../UnknownNodeType.feature | 2 - .../TagSubtree_WithDimensions.feature | 11 -- .../TagSubtree_WithoutDimensions.feature | 7 -- .../01-ConstraintChecks.feature | 6 - .../02-BasicFeatures.feature | 8 -- .../02-RebasingWithAutoCreatedNodes.feature | 6 - .../03-RebasingWithConflictingChanges.feature | 11 -- .../02-PublishWorkspace.feature | 13 -- .../01-ConstraintChecks.feature | 5 - .../02-BasicFeatures.feature | 4 - .../03-MoreBasicFeatures.feature | 7 -- .../04-AllFeaturePublication.feature | 21 ---- ...PublishMovedNodesWithoutDimensions.feature | 8 -- .../02-DiscardWorkspace.feature | 14 --- ...NodeOperationsOnMultipleWorkspaces.feature | 5 - .../Workspaces/PruneContentStreams.feature | 15 --- .../RemoveNodeAggregateWithDimensions.wip | 8 -- .../Workspaces/RemoveNodesFromAggregate.wip | 14 --- ...ingleNodeOperationsOnLiveWorkspace.feature | 3 - .../WorkspaceWritingDuringPublication.php | 2 - .../Features/Bootstrap/FeatureContext.php | 1 - .../Behavior/Features/Export/Export.feature | 2 - .../Behavior/Bootstrap/FeatureContext.php | 1 - .../Bootstrap/CRTestSuiteRuntimeVariables.php | 3 - .../Features/Bootstrap/CRTestSuiteTrait.php | 21 ---- .../Features/ContentStreamClosing.php | 2 +- .../Features/ContentStreamForking.php | 2 +- .../Bootstrap/Features/NodeCopying.php | 2 +- .../Bootstrap/Features/NodeCreation.php | 11 +- .../Bootstrap/Features/NodeDisabling.php | 4 +- .../Bootstrap/Features/NodeModification.php | 2 +- .../Features/Bootstrap/Features/NodeMove.php | 2 +- .../Bootstrap/Features/NodeReferencing.php | 2 +- .../Bootstrap/Features/NodeRemoval.php | 2 +- .../Bootstrap/Features/NodeRenaming.php | 2 +- .../Bootstrap/Features/NodeTypeChange.php | 2 +- .../Bootstrap/Features/NodeVariation.php | 2 +- .../Bootstrap/Features/SubtreeTagging.php | 4 +- .../Bootstrap/Features/WorkspaceCreation.php | 23 +++- .../Features/WorkspaceDiscarding.php | 4 +- .../Features/WorkspacePublishing.php | 4 +- ...ricCommandExecutionAndEventPublication.php | 4 +- .../Features/Bootstrap/FeatureContext.php | 1 - .../Features/Bootstrap/RoutingTrait.php | 12 -- .../Features/ContentCache/Assets.feature | 1 - .../Features/ContentCache/ConvertUris.feature | 5 - .../Features/ContentCache/Nodes.feature | 6 - .../NodesInOtherWorkspace.feature | 5 - .../Features/FrontendRouting/Basic.feature | 7 -- .../FrontendRouting/Dimensions.feature | 24 ---- .../FrontendRouting/DisableNodes.feature | 27 ----- .../Lowlevel_ProjectionTests.feature | 17 --- .../FrontendRouting/MultiSiteLinking.feature | 2 - .../NodeCreationEdgeCases.feature | 4 - .../NodeVariationEdgeCases.feature | 19 --- .../FrontendRouting/RouteCache.feature | 9 -- .../FrontendRouting/Shortcuts.feature | 23 ---- .../TetheredSiteChildDocuments.feature | 4 - .../FrontendRouting/UnknownNodeTypes.feature | 2 - .../Features/Fusion/ContentCase.feature | 1 - .../Features/Fusion/ContentCollection.feature | 2 - .../Features/Fusion/ConvertUris.feature | 1 - .../Features/Fusion/FlowQuery.feature | 1 - .../Behavior/Features/Fusion/Menu.feature | 1 - .../Behavior/Bootstrap/FeatureContext.php | 2 - .../Behavior/Features/HandleExceeded.feature | 2 - 181 files changed, 61 insertions(+), 1184 deletions(-) diff --git a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Bootstrap/FeatureContext.php b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Bootstrap/FeatureContext.php index 27d68c397cc..3df89de8c1f 100644 --- a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Bootstrap/FeatureContext.php +++ b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Bootstrap/FeatureContext.php @@ -44,7 +44,6 @@ public function __construct() self::bootstrapFlow(); $this->contentRepositoryRegistry = $this->getObject(ContentRepositoryRegistry::class); - $this->setupCRTestSuiteTrait(); $this->setupDbalGraphAdapterIntegrityViolationTrait(); } diff --git a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Bootstrap/ProjectionIntegrityViolationDetectionTrait.php b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Bootstrap/ProjectionIntegrityViolationDetectionTrait.php index 873a700ea17..126e0b914f8 100644 --- a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Bootstrap/ProjectionIntegrityViolationDetectionTrait.php +++ b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Bootstrap/ProjectionIntegrityViolationDetectionTrait.php @@ -15,6 +15,7 @@ namespace Neos\ContentGraph\DoctrineDbalAdapter\Tests\Behavior\Features\Bootstrap; use Behat\Gherkin\Node\TableNode; +use Doctrine\DBAL\Connection; use Doctrine\DBAL\DBALException; use Doctrine\DBAL\Exception\InvalidArgumentException; use Neos\ContentGraph\DoctrineDbalAdapter\ContentGraphTableNames; @@ -41,7 +42,7 @@ trait ProjectionIntegrityViolationDetectionTrait { use CRTestSuiteRuntimeVariables; - private DoctrineDbalClient $dbalClient; + private Connection $dbal; protected Result $lastIntegrityViolationDetectionResult; @@ -62,7 +63,7 @@ private function tableNames(): ContentGraphTableNames public function setupDbalGraphAdapterIntegrityViolationTrait() { - $this->dbalClient = $this->getObject(DoctrineDbalClient::class); + $this->dbal = $this->getObject(Connection::class); } /** @@ -80,7 +81,7 @@ public function iRemoveTheFollowingSubtreeTag(TableNode $payloadTable): void if (!$subtreeTags->contain($subtreeTagToRemove)) { throw new \RuntimeException(sprintf('Failed to remove subtree tag "%s" because that tag is not set', $subtreeTagToRemove->value), 1708618267); } - $this->dbalClient->getConnection()->update( + $this->dbal->update( $this->tableNames()->hierarchyRelation(), [ 'subtreetags' => json_encode($subtreeTags->without($subtreeTagToRemove), JSON_THROW_ON_ERROR | JSON_FORCE_OBJECT), @@ -97,7 +98,7 @@ public function iAddTheFollowingHierarchyRelation(TableNode $payloadTable): void { $dataset = $this->transformPayloadTableToDataset($payloadTable); $record = $this->transformDatasetToHierarchyRelationRecord($dataset); - $this->dbalClient->getConnection()->insert( + $this->dbal->insert( $this->tableNames()->hierarchyRelation(), $record ); @@ -114,7 +115,7 @@ public function iChangeTheFollowingHierarchyRelationsDimensionSpacePointHash(Tab $record = $this->transformDatasetToHierarchyRelationRecord($dataset); unset($record['position']); - $this->dbalClient->getConnection()->update( + $this->dbal->update( $this->tableNames()->hierarchyRelation(), [ 'dimensionspacepointhash' => $dataset['newDimensionSpacePointHash'] @@ -132,7 +133,7 @@ public function iChangeTheFollowingNodesName(TableNode $payloadTable): void { $dataset = $this->transformPayloadTableToDataset($payloadTable); - $relationAnchorPoint = $this->dbalClient->getConnection()->executeQuery( + $relationAnchorPoint = $this->dbal->executeQuery( 'SELECT n.relationanchorpoint FROM ' . $this->tableNames()->node() . ' n JOIN ' . $this->tableNames()->hierarchyRelation() . ' h ON h.childnodeanchor = n.relationanchorpoint WHERE h.contentstreamid = :contentStreamId @@ -145,7 +146,7 @@ public function iChangeTheFollowingNodesName(TableNode $payloadTable): void ] )->fetchOne(); - $this->dbalClient->getConnection()->update( + $this->dbal->update( $this->tableNames()->node(), [ 'name' => $dataset['newName'] @@ -171,7 +172,7 @@ public function iSetTheFollowingPosition(TableNode $payloadTable): void 'childnodeanchor' => $this->findRelationAnchorPointByDataset($dataset) ]; - $this->dbalClient->getConnection()->update( + $this->dbal->update( $this->tableNames()->hierarchyRelation(), [ 'position' => $dataset['newPosition'] @@ -189,7 +190,7 @@ public function iDetachTheFollowingReferenceRelationFromItsSource(TableNode $pay { $dataset = $this->transformPayloadTableToDataset($payloadTable); - $this->dbalClient->getConnection()->update( + $this->dbal->update( $this->tableNames()->referenceRelation(), [ 'nodeanchorpoint' => 7777777 @@ -207,7 +208,7 @@ public function iSetTheFollowingReferencePosition(TableNode $payloadTable): void { $dataset = $this->transformPayloadTableToDataset($payloadTable); - $this->dbalClient->getConnection()->update( + $this->dbal->update( $this->tableNames()->referenceRelation(), [ 'position' => $dataset['newPosition'] @@ -277,7 +278,7 @@ private function findHierarchyRelationByIds( DimensionSpacePoint $dimensionSpacePoint, NodeAggregateId $nodeAggregateId ): array { - $nodeRecord = $this->dbalClient->getConnection()->executeQuery( + $nodeRecord = $this->dbal->executeQuery( 'SELECT h.* FROM ' . $this->tableNames()->node() . ' n INNER JOIN ' . $this->tableNames()->hierarchyRelation() . ' h @@ -313,7 +314,7 @@ private function transformPayloadTableToDataset(TableNode $payloadTable): array */ public function iRunIntegrityViolationDetection(): void { - $projectionIntegrityViolationDetectionRunner = $this->getContentRepositoryService(new DoctrineDbalProjectionIntegrityViolationDetectionRunnerFactory($this->dbalClient)); + $projectionIntegrityViolationDetectionRunner = $this->getContentRepositoryService(new DoctrineDbalProjectionIntegrityViolationDetectionRunnerFactory($this->getObject(DoctrineDbalClient::class))); $this->lastIntegrityViolationDetectionResult = $projectionIntegrityViolationDetectionRunner->run(); } diff --git a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/HierarchyIntegrityIsProvided.feature b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/HierarchyIntegrityIsProvided.feature index 29e8723a50c..95d7b7dc43a 100644 --- a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/HierarchyIntegrityIsProvided.feature +++ b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/HierarchyIntegrityIsProvided.feature @@ -19,7 +19,6 @@ Feature: Run integrity violation detection regarding hierarchy relations and nod | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -35,7 +34,6 @@ Feature: Run integrity violation detection regarding hierarchy relations and nod | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "child-document" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Scenario: Detach a hierarchy relation from its parent When I add the following hierarchy relation: diff --git a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/NodesHaveAtMostOneParentPerSubgraph.feature b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/NodesHaveAtMostOneParentPerSubgraph.feature index 72ced95d05a..ad41177344f 100644 --- a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/NodesHaveAtMostOneParentPerSubgraph.feature +++ b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/NodesHaveAtMostOneParentPerSubgraph.feature @@ -19,7 +19,6 @@ Feature: Run integrity violation detection regarding parent relations | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -55,7 +54,6 @@ Feature: Run integrity violation detection regarding parent relations | parentNodeAggregateId | "sir-david-nodenborough" | | nodeName | "child-document" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Scenario: Set a second parent for Nody McNodeface And I add the following hierarchy relation: diff --git a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/ReferenceIntegrityIsProvided.feature b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/ReferenceIntegrityIsProvided.feature index 3e02af08377..edfcaf5a09e 100644 --- a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/ReferenceIntegrityIsProvided.feature +++ b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/ReferenceIntegrityIsProvided.feature @@ -22,7 +22,6 @@ Feature: Run integrity violation detection regarding reference relations | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -46,7 +45,6 @@ Feature: Run integrity violation detection regarding reference relations | coveredDimensionSpacePoints | [{"language":"de"},{"language":"gsw"},{"language":"fr"}] | | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Scenario: Detach a reference relation from its source When the command SetNodeReferences is executed with payload: @@ -55,7 +53,6 @@ Feature: Run integrity violation detection regarding reference relations | sourceNodeAggregateId | "source-nodandaise" | | referenceName | "referenceProperty" | | references | [{"target": "anthony-destinode"}] | - And the graph projection is fully up to date And I detach the following reference relation from its source: | Key | Value | | contentStreamId | "cs-identifier" | diff --git a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/SiblingsAreDistinctlySorted.feature b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/SiblingsAreDistinctlySorted.feature index 433d1a30c88..9d32cf24fdc 100644 --- a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/SiblingsAreDistinctlySorted.feature +++ b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/SiblingsAreDistinctlySorted.feature @@ -19,13 +19,11 @@ Feature: Run integrity violation detection regarding sibling sorting | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: Create two siblings and set the sorting to the same value When the event NodeAggregateWithNodeWasCreated was published with payload: @@ -46,7 +44,6 @@ Feature: Run integrity violation detection regarding sibling sorting | coveredDimensionSpacePoints | [{"language":"de"},{"language":"gsw"},{"language":"fr"}] | | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date And I set the following position: | Key | Value | | contentStreamId | "cs-identifier" | diff --git a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/SubtreeTagsAreInherited.feature b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/SubtreeTagsAreInherited.feature index c9a2769dfb2..f26a0f4a079 100644 --- a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/SubtreeTagsAreInherited.feature +++ b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/SubtreeTagsAreInherited.feature @@ -19,13 +19,11 @@ Feature: Run integrity violation detection regarding subtree tag inheritance | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: Create nodes, disable the topmost and remove some restriction edges manually When the event NodeAggregateWithNodeWasCreated was published with payload: @@ -64,7 +62,6 @@ Feature: Run integrity violation detection regarding subtree tag inheritance | nodeAggregateId | "sir-david-nodenborough" | | affectedDimensionSpacePoints | [{"language":"de"},{"language":"gsw"},{"language":"fr"}] | | tag | "disabled" | - And the graph projection is fully up to date And I remove the following subtree tag: | Key | Value | | contentStreamId | "cs-identifier" | diff --git a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/TetheredNodesAreNamed.feature b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/TetheredNodesAreNamed.feature index 921f197fb20..fa72650db8c 100644 --- a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/TetheredNodesAreNamed.feature +++ b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/ProjectionIntegrityViolationDetection/TetheredNodesAreNamed.feature @@ -19,7 +19,6 @@ Feature: Run projection integrity violation detection regarding naming of tether | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -35,7 +34,6 @@ Feature: Run projection integrity violation detection regarding naming of tether | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "document" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Scenario: Remove tethered node's name When the event NodeAggregateWithNodeWasCreated was published with payload: @@ -48,7 +46,6 @@ Feature: Run projection integrity violation detection regarding naming of tether | parentNodeAggregateId | "sir-david-nodenborough" | | nodeName | "to-be-hacked-to-null" | | nodeAggregateClassification | "tethered" | - And the graph projection is fully up to date And I change the following node's name: | Key | Value | | contentStreamId | "cs-identifier" | diff --git a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/SiblingPositions.feature b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/SiblingPositions.feature index 6ace4b14ce3..8a12e838d6e 100644 --- a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/SiblingPositions.feature +++ b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Projection/SiblingPositions.feature @@ -21,7 +21,6 @@ Feature: Sibling positions are properly resolved | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example": "general"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -50,49 +49,41 @@ Feature: Sibling positions are properly resolved | Key | Value | | nodeAggregateId | "lady-nodette-nodington-ii" | | newSucceedingSiblingNodeAggregateId | "lady-nodette-nodington-x" | - And the graph projection is fully up to date # distance iii to x: 32 And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "lady-nodette-nodington-iii" | | newSucceedingSiblingNodeAggregateId | "lady-nodette-nodington-x" | - And the graph projection is fully up to date # distance iv to x: 16 And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "lady-nodette-nodington-iv" | | newSucceedingSiblingNodeAggregateId | "lady-nodette-nodington-x" | - And the graph projection is fully up to date # distance v to x: 8 And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "lady-nodette-nodington-v" | | newSucceedingSiblingNodeAggregateId | "lady-nodette-nodington-x" | - And the graph projection is fully up to date # distance vi to x: 4 And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "lady-nodette-nodington-vi" | | newSucceedingSiblingNodeAggregateId | "lady-nodette-nodington-x" | - And the graph projection is fully up to date # distance vii to x: 2 And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "lady-nodette-nodington-vii" | | newSucceedingSiblingNodeAggregateId | "lady-nodette-nodington-x" | - And the graph projection is fully up to date # distance viii to x: 1 -> reorder -> 128 And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "lady-nodette-nodington-viii" | | newSucceedingSiblingNodeAggregateId | "lady-nodette-nodington-x" | - And the graph projection is fully up to date # distance ix to x: 64 after reorder And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "lady-nodette-nodington-ix" | | newSucceedingSiblingNodeAggregateId | "lady-nodette-nodington-x" | - And the graph projection is fully up to date Then I expect node aggregate identifier "lady-eleonode-rootford" to lead to node cs-identifier;lady-eleonode-rootford;{} And I expect this node to have the following child nodes: diff --git a/Neos.ContentRepository.BehavioralTests/Classes/Command/PerformanceMeasurementCommandController.php b/Neos.ContentRepository.BehavioralTests/Classes/Command/PerformanceMeasurementCommandController.php index 78944e8b7b8..a34583a39e7 100644 --- a/Neos.ContentRepository.BehavioralTests/Classes/Command/PerformanceMeasurementCommandController.php +++ b/Neos.ContentRepository.BehavioralTests/Classes/Command/PerformanceMeasurementCommandController.php @@ -59,7 +59,7 @@ public function preparePerformanceTestCommand(int $nodesPerLevel, int $levels): public function testPerformanceCommand(): void { $time = microtime(true); - $this->performanceMeasurementService->forkContentStream() + $this->performanceMeasurementService->forkContentStream(); $timeElapsed = microtime(true) - $time; $this->outputLine('Time: ' . $timeElapsed); diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Bootstrap/FeatureContext.php b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Bootstrap/FeatureContext.php index 44b677827b3..682bf3c0d66 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Bootstrap/FeatureContext.php +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Bootstrap/FeatureContext.php @@ -16,6 +16,7 @@ use Behat\Behat\Context\Context as BehatContext; use Behat\Behat\Hook\Scope\BeforeScenarioScope; +use Doctrine\DBAL\Connection; use GuzzleHttp\Psr7\Uri; use Neos\Behat\FlowBootstrapTrait; use Neos\ContentGraph\DoctrineDbalAdapter\Tests\Behavior\Features\Bootstrap\ProjectionIntegrityViolationDetectionTrait; @@ -28,7 +29,6 @@ use Neos\ContentRepository\Core\Factory\ContentRepositoryServiceFactoryInterface; use Neos\ContentRepository\Core\Factory\ContentRepositoryServiceInterface; use Neos\ContentRepository\Core\Feature\NodeModification\Dto\PropertyValuesToWrite; -use Neos\ContentRepository\Core\Infrastructure\DbalClientInterface; use Neos\ContentRepository\Core\SharedModel\ContentRepository\ContentRepositoryId; use Neos\ContentRepository\Core\Tests\Behavior\Fixtures\DayOfWeek; use Neos\ContentRepository\Core\Tests\Behavior\Fixtures\PostalAddress; @@ -59,8 +59,7 @@ public function __construct() { self::bootstrapFlow(); - $this->dbalClient = $this->getObject(DbalClientInterface::class); - $this->setupCRTestSuiteTrait(); + $this->dbal = $this->getObject(Connection::class); $this->setUpInterleavingLogger(); $this->contentRepositoryRegistry = $this->getObject(ContentRepositoryRegistry::class); } diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/01-CreateRootNodeAggregateWithNode_ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/01-CreateRootNodeAggregateWithNode_ConstraintChecks.feature index 399af60a076..ce92ed6f3ad 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/01-CreateRootNodeAggregateWithNode_ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/01-CreateRootNodeAggregateWithNode_ConstraintChecks.feature @@ -26,13 +26,11 @@ Feature: Create a root node aggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: Try to create a root node aggregate in a workspace that currently does not exist: When the command CreateRootNodeAggregateWithNode is executed with payload and exceptions are caught: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/02-CreateRootNodeAggregateWithNode_WithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/02-CreateRootNodeAggregateWithNode_WithoutDimensions.feature index 5573499f8a6..f66ffe0a052 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/02-CreateRootNodeAggregateWithNode_WithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/02-CreateRootNodeAggregateWithNode_WithoutDimensions.feature @@ -24,7 +24,6 @@ Feature: Create a root node aggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" Scenario: Create the initial root node aggregate using valid payload without dimensions @@ -42,7 +41,6 @@ Feature: Create a root node aggregate | coveredDimensionSpacePoints | [[]] | | nodeAggregateClassification | "root" | - When the graph projection is fully up to date Then I expect the node aggregate "lady-eleonode-rootford" to exist And I expect this node aggregate to be classified as "root" And I expect this node aggregate to be of type "Neos.ContentRepository:Root" @@ -75,7 +73,6 @@ Feature: Create a root node aggregate | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date When the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -91,7 +88,6 @@ Feature: Create a root node aggregate | coveredDimensionSpacePoints | [[]] | | nodeAggregateClassification | "root" | - When the graph projection is fully up to date Then I expect the node aggregate "lady-eleonode-rootford" to exist And I expect this node aggregate to have no parent node aggregates And I expect this node aggregate to have no child node aggregates diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/03-CreateRootNodeAggregateWithNodeAndTetheredChildren_WithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/03-CreateRootNodeAggregateWithNodeAndTetheredChildren_WithoutDimensions.feature index 28f465e078a..a6d62a90846 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/03-CreateRootNodeAggregateWithNodeAndTetheredChildren_WithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/03-CreateRootNodeAggregateWithNodeAndTetheredChildren_WithoutDimensions.feature @@ -37,7 +37,6 @@ Feature: Create a root node aggregate with tethered children | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And I am user identified by "initiating-user-identifier" @@ -47,7 +46,6 @@ Feature: Create a root node aggregate with tethered children | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository.Testing:RootWithTetheredChildNodes" | | tetheredDescendantNodeAggregateIds | {"child-node": "nody-mc-nodeface", "child-node/grandchild-node": "nodimus-prime"} | - And the graph projection is fully up to date Then I expect exactly 4 events to be published on stream "ContentStream:cs-identifier" And event at index 1 is of type "RootNodeAggregateWithNodeWasCreated" with payload: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/04-CreateRootNodeAggregateWithNodeAndTetheredChildren_WithDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/04-CreateRootNodeAggregateWithNodeAndTetheredChildren_WithDimensions.feature index 8bc71cbd9e9..1820d74fdeb 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/04-CreateRootNodeAggregateWithNodeAndTetheredChildren_WithDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/04-CreateRootNodeAggregateWithNodeAndTetheredChildren_WithDimensions.feature @@ -39,7 +39,6 @@ Feature: Create a root node aggregate with tethered children | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And I am user identified by "initiating-user-identifier" @@ -49,7 +48,6 @@ Feature: Create a root node aggregate with tethered children | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository.Testing:RootWithTetheredChildNodes" | | tetheredDescendantNodeAggregateIds | {"child-node": "nody-mc-nodeface", "child-node/grandchild-node": "nodimus-prime"} | - And the graph projection is fully up to date Then I expect exactly 6 events to be published on stream "ContentStream:cs-identifier" And event at index 1 is of type "RootNodeAggregateWithNodeWasCreated" with payload: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/05-CreateRootNodeAggregateWithNode_WithDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/05-CreateRootNodeAggregateWithNode_WithDimensions.feature index e8370d00f6f..52cf739d9bd 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/05-CreateRootNodeAggregateWithNode_WithDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/01-RootNodeCreation/05-CreateRootNodeAggregateWithNode_WithDimensions.feature @@ -25,7 +25,6 @@ Feature: Create a root node aggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" Scenario: Create the initial root node aggregate using valid payload with dimensions @@ -45,7 +44,6 @@ Feature: Create a root node aggregate And event metadata at index 1 is: | Key | Expected | - When the graph projection is fully up to date Then I expect the node aggregate "lady-eleonode-rootford" to exist And I expect this node aggregate to be classified as "root" And I expect this node aggregate to be of type "Neos.ContentRepository:Root" @@ -89,7 +87,6 @@ Feature: Create a root node aggregate | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date When the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -105,7 +102,6 @@ Feature: Create a root node aggregate | coveredDimensionSpacePoints | [{"language":"mul"},{"language":"de"},{"language":"en"},{"language":"gsw"}] | | nodeAggregateClassification | "root" | - When the graph projection is fully up to date Then I expect the node aggregate "lady-eleonode-rootford" to exist And I expect this node aggregate to have no parent node aggregates And I expect this node aggregate to have no child node aggregates diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/01-CreateNodeAggregateWithNode_ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/01-CreateNodeAggregateWithNode_ConstraintChecks.feature index 6e0b267686b..8870bfcc30e 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/01-CreateNodeAggregateWithNode_ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/01-CreateNodeAggregateWithNode_ConstraintChecks.feature @@ -37,13 +37,11 @@ Feature: Create node aggregate with node | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: Try to create a node aggregate in a workspace that currently does not exist: When the command CreateNodeAggregateWithNode is executed with payload and exceptions are caught: @@ -144,7 +142,6 @@ Feature: Create node aggregate with node | nodeTypeName | "Neos.ContentRepository.Testing:Node" | | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "document" | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNode is executed with payload and exceptions are caught: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/02-CreateNodeAggregateWithNode_ConstraintChecks_WithDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/02-CreateNodeAggregateWithNode_ConstraintChecks_WithDimensions.feature index 75b53cfbcc3..89c55e318bc 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/02-CreateNodeAggregateWithNode_ConstraintChecks_WithDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/02-CreateNodeAggregateWithNode_ConstraintChecks_WithDimensions.feature @@ -39,14 +39,12 @@ Feature: Create node aggregate with node | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And I am in dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: Try to create a node aggregate in an origin dimension space point the parent node does not cover: When the command CreateNodeAggregateWithNode is executed with payload: @@ -55,7 +53,6 @@ Feature: Create node aggregate with node | nodeTypeName | "Neos.ContentRepository.Testing:Node" | | parentNodeAggregateId | "lady-eleonode-rootford" | | originDimensionSpacePoint | {"example":"spec"} | - And the graph projection is fully up to date And the command CreateNodeAggregateWithNode is executed with payload and exceptions are caught: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | @@ -72,7 +69,6 @@ Feature: Create node aggregate with node | nodeTypeName | "Neos.ContentRepository.Testing:Node" | | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "document" | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNode is executed with payload and exceptions are caught: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | @@ -92,7 +88,6 @@ Feature: Create node aggregate with node | parentNodeAggregateId | "lady-eleonode-rootford" | | originDimensionSpacePoint | {"example":"source"} | | nodeName | "document" | - And the graph projection is fully up to date And the command CreateNodeAggregateWithNode is executed with payload and exceptions are caught: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | @@ -109,7 +104,6 @@ Feature: Create node aggregate with node | nodeTypeName | "Neos.ContentRepository.Testing:Node" | | parentNodeAggregateId | "lady-eleonode-rootford" | | originDimensionSpacePoint | {"example":"source"} | - And the graph projection is fully up to date Given I change the node types in content repository "default" to: """yaml 'Neos.ContentRepository.Testing:LeafNode': {} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/03-CreateNodeAggregateWithNode_WithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/03-CreateNodeAggregateWithNode_WithoutDimensions.feature index 040ab0e5576..966629b61ae 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/03-CreateNodeAggregateWithNode_WithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/03-CreateNodeAggregateWithNode_WithoutDimensions.feature @@ -29,7 +29,6 @@ Feature: Create node aggregate with node | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And I am in dimension space point {} And I am user identified by "initiating-user-identifier" @@ -37,7 +36,6 @@ Feature: Create node aggregate with node | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date When the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | parentNodeAggregateId | nodeTypeName | initialPropertyValues | @@ -200,7 +198,6 @@ Feature: Create node aggregate with node | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And I am in dimension space point {} And I am user identified by "initiating-user-identifier" @@ -208,7 +205,6 @@ Feature: Create node aggregate with node | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Given the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | @@ -217,7 +213,6 @@ Feature: Create node aggregate with node | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "node" | - And the graph projection is fully up to date And the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | | nodeAggregateId | "sir-nodeward-nodington-iii" | @@ -240,7 +235,6 @@ Feature: Create node aggregate with node | initialPropertyValues | [] | | nodeAggregateClassification | "regular" | - When the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And I expect node aggregate identifier "sir-nodeward-nodington-iii" and node path "esquire" to lead to node cs-identifier;sir-nodeward-nodington-iii;{} And I expect this node to be a child of node cs-identifier;lady-eleonode-rootford;{} @@ -284,7 +278,6 @@ Feature: Create node aggregate with node | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And I am in dimension space point {} And I am user identified by "initiating-user-identifier" @@ -292,7 +285,6 @@ Feature: Create node aggregate with node | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | @@ -302,7 +294,6 @@ Feature: Create node aggregate with node | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "node" | | tetheredDescendantNodeAggregateIds | {"child-node": "nody-mc-nodeface", "child-node/grandchild-node": "nodimus-prime"} | - And the graph projection is fully up to date Then I expect exactly 5 events to be published on stream "ContentStream:cs-identifier" And event at index 2 is of type "NodeAggregateWithNodeWasCreated" with payload: @@ -468,7 +459,6 @@ Feature: Create node aggregate with node | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And I am in dimension space point {} And I am user identified by "initiating-user-identifier" @@ -476,7 +466,6 @@ Feature: Create node aggregate with node | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | @@ -486,7 +475,6 @@ Feature: Create node aggregate with node | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "node" | | tetheredDescendantNodeAggregateIds | {"invalidcasedname": "nody-mc-nodeface", "invalidcharactors": "lord-from-nodding-hill"} | - And the graph projection is fully up to date And I expect the node aggregate "lady-eleonode-rootford" to exist And I expect this node aggregate to be classified as "root" diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/04-CreateNodeAggregateWithNode_WithDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/04-CreateNodeAggregateWithNode_WithDimensions.feature index ff82b174f1c..d56432e6b20 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/04-CreateNodeAggregateWithNode_WithDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/04-CreateNodeAggregateWithNode_WithDimensions.feature @@ -29,13 +29,11 @@ Feature: Create node aggregate with node | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: Create node aggregate with initial node with content dimensions When the following CreateNodeAggregateWithNode commands are executed: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/05-CreateNodeAggregateWithNode_ComplexDefaultAndInitialProperties.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/05-CreateNodeAggregateWithNode_ComplexDefaultAndInitialProperties.feature index 5e55c88ec77..4ce56369ac4 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/05-CreateNodeAggregateWithNode_ComplexDefaultAndInitialProperties.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/05-CreateNodeAggregateWithNode_ComplexDefaultAndInitialProperties.feature @@ -54,14 +54,12 @@ Feature: Create a node aggregate with complex default values | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And I am in dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: Create a node aggregate with complex default values When the command CreateNodeAggregateWithNode is executed with payload: @@ -69,7 +67,6 @@ Feature: Create a node aggregate with complex default values | nodeAggregateId | "nody-mc-nodeface" | | nodeTypeName | "Neos.ContentRepository.Testing:Node" | | parentNodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date Then I expect a node identified by cs-identifier;nody-mc-nodeface;{} to exist in the content graph And I expect this node to have the following serialized properties: @@ -102,7 +99,6 @@ Feature: Create a node aggregate with complex default values | nodeTypeName | "Neos.ContentRepository.Testing:Node" | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"dayOfWeek":"DayOfWeek:https://schema.org/Friday","postalAddress":"PostalAddress:anotherDummy", "date":"Date:2021-03-13T17:33:17+00:00", "uri":"URI:https://www.neos.io", "price":"PriceSpecification:anotherDummy"} | - And the graph projection is fully up to date Then I expect a node identified by cs-identifier;nody-mc-nodeface;{} to exist in the content graph And I expect this node to have the following properties: | Key | Value | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/06-CreateNodeAggregateWithNode_NodeTypeConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/06-CreateNodeAggregateWithNode_NodeTypeConstraintChecks.feature index bbea237f9c4..2e29f8669d4 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/06-CreateNodeAggregateWithNode_NodeTypeConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/02-NodeCreation/06-CreateNodeAggregateWithNode_NodeTypeConstraintChecks.feature @@ -39,13 +39,11 @@ Feature: Create node aggregate with node | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Direct allowance via grandchild NodeType constraints overrule deny all on NodeType # issue https://github.com/neos/neos-development-collection/issues/4351 @@ -56,7 +54,6 @@ Feature: Create node aggregate with node | nodeTypeName | "Neos.ContentRepository.Testing.TetheredCollection" | | parentNodeAggregateId | "lady-eleonode-rootford" | | tetheredDescendantNodeAggregateIds | { "collection": "collection-node-id"} | - And the graph projection is fully up to date Then I expect the node aggregate "sir-david-nodenborough" to exist Then I expect the node aggregate "collection-node-id" to exist # TetheredCollection @@ -68,7 +65,6 @@ Feature: Create node aggregate with node | nodeAggregateId | "nody-mc-nodeface" | | nodeTypeName | "Neos.ContentRepository.Testing:Node" | | parentNodeAggregateId | "collection-node-id" | - And the graph projection is fully up to date Then I expect the node aggregate "nody-mc-nodeface" to exist # allowed via grant parent node constraints: PrettyNode @@ -77,7 +73,6 @@ Feature: Create node aggregate with node | nodeAggregateId | "pretty-node" | | nodeTypeName | "Neos.ContentRepository.Testing:PrettyNode" | | parentNodeAggregateId | "collection-node-id" | - And the graph projection is fully up to date Then I expect the node aggregate "pretty-node" to exist # disallowed via grant parent node constraints: UglyNode @@ -94,13 +89,11 @@ Feature: Create node aggregate with node | nodeAggregateId | "sir-david-nodenborough" | | nodeTypeName | "Neos.ContentRepository.Testing:Node" | | parentNodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "collection-node-id" | | nodeTypeName | "Neos.ContentRepository.Testing:RestrictedCollection" | | parentNodeAggregateId | "sir-david-nodenborough" | - And the graph projection is fully up to date Then I expect the node aggregate "sir-david-nodenborough" to exist Then I expect the node aggregate "collection-node-id" to exist # Node @@ -112,7 +105,6 @@ Feature: Create node aggregate with node | nodeAggregateId | "pretty-node" | | nodeTypeName | "Neos.ContentRepository.Testing:PrettyNode" | | parentNodeAggregateId | "collection-node-id" | - And the graph projection is fully up to date Then I expect the node aggregate "pretty-node" to exist # disallowed via grant parent node constraints: UglyNode diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/01-CreateNodeVariant_ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/01-CreateNodeVariant_ConstraintChecks.feature index 4db55956655..6d376a71328 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/01-CreateNodeVariant_ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/01-CreateNodeVariant_ConstraintChecks.feature @@ -25,13 +25,11 @@ Feature: Create node variant | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"market":"DE", "language":"gsw"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # We have to add another node since root nodes have no dimension space points and thus cannot be varied # Node /document And the following CreateNodeAggregateWithNode commands are executed: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/02-CreateNodeSpecializationVariant.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/02-CreateNodeSpecializationVariant.feature index 66200bdea63..bc533e5c242 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/02-CreateNodeSpecializationVariant.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/02-CreateNodeSpecializationVariant.feature @@ -29,13 +29,11 @@ Feature: Create node specialization | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example":"source"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | parentNodeAggregateId | succeedingSiblingNodeAggregateId | nodeTypeName | tetheredDescendantNodeAggregateIds | @@ -91,7 +89,6 @@ Feature: Create node specialization | specializationOrigin | {"example":"spec"} | | specializationSiblings | [{"dimensionSpacePoint":{"example":"spec"},"nodeAggregateId":null},{"dimensionSpacePoint":{"example":"leafSpec"},"nodeAggregateId":null}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 12 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;nody-mc-nodeface;{"example":"source"} to exist in the content graph @@ -288,7 +285,6 @@ Feature: Create node specialization | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"leafSpec"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | @@ -317,7 +313,6 @@ Feature: Create node specialization | specializationOrigin | {"example":"spec"} | | specializationSiblings | [{"dimensionSpacePoint":{"example":"spec"},"nodeAggregateId":null}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 15 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;nody-mc-nodeface;{"example":"source"} to exist in the content graph diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/03-CreateNodeGeneralizationVariant.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/03-CreateNodeGeneralizationVariant.feature index 7fcf542fdf0..0e8a7e9dacb 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/03-CreateNodeGeneralizationVariant.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/03-CreateNodeGeneralizationVariant.feature @@ -29,13 +29,11 @@ Feature: Create node generalization | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example":"source"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | originDimensionSpacePoint | nodeName | parentNodeAggregateId | succeedingSiblingNodeAggregateId | nodeTypeName | tetheredDescendantNodeAggregateIds | # We have to add another node since root nodes have no origin dimension space points and thus cannot be varied. @@ -56,13 +54,11 @@ Feature: Create node generalization | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"general"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "elder-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"general"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "youngest-mc-nodeface" | @@ -106,7 +102,6 @@ Feature: Create node generalization | generalizationOrigin | {"example":"general"} | | variantSucceedingSiblings | [{"dimensionSpacePoint":{"example":"general"},"nodeAggregateId":null},{"dimensionSpacePoint":{"example":"specB"},"nodeAggregateId":null}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 14 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;eldest-mc-nodeface;{"example":"general"} to exist in the content graph @@ -370,7 +365,6 @@ Feature: Create node generalization | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"specB"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | @@ -421,7 +415,6 @@ Feature: Create node generalization | generalizationOrigin | {"example":"general"} | | variantSucceedingSiblings | [{"dimensionSpacePoint":{"example":"general"},"nodeAggregateId":null}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 15 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;eldest-mc-nodeface;{"example":"general"} to exist in the content graph @@ -556,7 +549,6 @@ Feature: Create node generalization | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"general"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | @@ -607,7 +599,6 @@ Feature: Create node generalization | peerOrigin | {"example":"specB"} | | peerSucceedingSiblings | [{"dimensionSpacePoint":{"example":"specB"},"nodeAggregateId":null}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 15 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;eldest-mc-nodeface;{"example":"general"} to exist in the content graph @@ -742,7 +733,6 @@ Feature: Create node generalization | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"rootGeneral"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | @@ -793,7 +783,6 @@ Feature: Create node generalization | generalizationOrigin | {"example":"general"} | | variantSucceedingSiblings | [{"dimensionSpacePoint":{"example":"general"},"nodeAggregateId":null},{"dimensionSpacePoint":{"example":"specB"},"nodeAggregateId":null}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 15 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;eldest-mc-nodeface;{"example":"general"} to exist in the content graph diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/04-CreateNodePeerVariant.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/04-CreateNodePeerVariant.feature index 5b60071e11a..e8af70bda0d 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/04-CreateNodePeerVariant.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/03-NodeVariation/04-CreateNodePeerVariant.feature @@ -29,13 +29,11 @@ Feature: Create node peer variant | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example":"source"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | originDimensionSpacePoint | nodeName | parentNodeAggregateId | succeedingSiblingNodeAggregateId | nodeTypeName | tetheredDescendantNodeAggregateIds | # We have to add another node since root nodes have no origin dimension space points and thus cannot be varied. @@ -55,13 +53,11 @@ Feature: Create node peer variant | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"peer"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "elder-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"peer"} | - And the graph projection is fully up to date # Complete the sibling set with a node in the target DSP between the middle and last node And the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -70,7 +66,6 @@ Feature: Create node peer variant | parentNodeAggregateId | "lady-eleonode-rootford" | | originDimensionSpacePoint | {"example":"peer"} | | nodeName | "younger-document" | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "youngest-mc-nodeface" | @@ -115,7 +110,6 @@ Feature: Create node peer variant | peerOrigin | {"example":"peer"} | | peerSucceedingSiblings | [{"dimensionSpacePoint":{"example":"peer"},"nodeAggregateId":null},{"dimensionSpacePoint":{"example":"peerSpec"},"nodeAggregateId":null}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 14 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;nody-mc-nodeface;{"example":"source"} to exist in the content graph @@ -342,7 +336,6 @@ Feature: Create node peer variant | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"peerSpec"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | @@ -393,7 +386,6 @@ Feature: Create node peer variant | peerOrigin | {"example":"peer"} | | peerSucceedingSiblings | [{"dimensionSpacePoint":{"example":"peer"},"nodeAggregateId":null}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 14 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;eldest-mc-nodeface;{"example":"peer"} to exist in the content graph @@ -509,7 +501,6 @@ Feature: Create node peer variant | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"peer"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | @@ -560,7 +551,6 @@ Feature: Create node peer variant | peerOrigin | {"example":"peerSpec"} | | peerSucceedingSiblings | [{"dimensionSpacePoint":{"example":"peerSpec"},"nodeAggregateId":null}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 14 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;eldest-mc-nodeface;{"example":"peer"} to exist in the content graph @@ -684,7 +674,6 @@ Feature: Create node peer variant | nodeAggregateId | "elder-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"peer"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "elder-child-mc-nodeface" | @@ -707,7 +696,6 @@ Feature: Create node peer variant | peerOrigin | {"example":"peer"} | | peerSucceedingSiblings | [{"dimensionSpacePoint":{"example":"peer"},"nodeAggregateId":null},{"dimensionSpacePoint":{"example":"peerSpec"},"nodeAggregateId":null}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 11 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;eldest-mc-nodeface;{"example":"peer"} to exist in the content graph diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/04-NodeModification/01-SetNodeProperties_ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/04-NodeModification/01-SetNodeProperties_ConstraintChecks.feature index 9220aa46393..416ffda4971 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/04-NodeModification/01-SetNodeProperties_ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/04-NodeModification/01-SetNodeProperties_ConstraintChecks.feature @@ -25,13 +25,11 @@ Feature: Set node properties: Constraint checks | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # We have to add another node since root nodes have no dimension space points and thus cannot be varied # Node /document And the following CreateNodeAggregateWithNode commands are executed: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/04-NodeModification/02-SetNodeProperties.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/04-NodeModification/02-SetNodeProperties.feature index 6f9cbbbfae8..3776b2368ff 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/04-NodeModification/02-SetNodeProperties.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/04-NodeModification/02-SetNodeProperties.feature @@ -63,13 +63,11 @@ Feature: Set properties | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"mul"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # We have to add another node since root nodes have no dimension space points and thus cannot be varied # Node /document And the following CreateNodeAggregateWithNode commands are executed: @@ -80,13 +78,11 @@ Feature: Set properties | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"language":"mul"} | | targetOrigin | {"language":"de"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"language":"mul"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date Scenario: Set node properties And the command SetNodeProperties is executed with payload: @@ -94,7 +90,6 @@ Feature: Set properties | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {"language": "de"} | | propertyValues | {"string":"My new string", "int":8472, "float":72.84, "bool":true, "array":{"givenName":"David", "familyName":"Nodenborough","age":84}, "dayOfWeek":"DayOfWeek:https://schema.org/Friday", "date":"Date:2021-03-13T17:33:17+00:00", "uri":"URI:https://www.neos.io", "postalAddress":"PostalAddress:anotherDummy", "price":"PriceSpecification:anotherDummy"} | - And the graph projection is fully up to date Then I expect a node identified by cs-identifier;nody-mc-nodeface;{"language":"de"} to exist in the content graph And I expect this node to have the following properties: | Key | Value | @@ -115,7 +110,6 @@ Feature: Set properties | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {"language": "de"} | | propertyValues | {"string":"My new string"} | - And the graph projection is fully up to date Then I expect a node identified by cs-identifier;nody-mc-nodeface;{"language":"de"} to exist in the content graph And I expect this node to have the following properties: | Key | Value | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/04-NodeModification/03-SetNodeProperties_PropertyScopes.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/04-NodeModification/03-SetNodeProperties_PropertyScopes.feature index e1efc50ef85..8f24c0a6eb8 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/04-NodeModification/03-SetNodeProperties_PropertyScopes.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/04-NodeModification/03-SetNodeProperties_PropertyScopes.feature @@ -36,13 +36,11 @@ Feature: Set node properties with different scopes | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"mul"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # We have to add another node since root nodes have no dimension space points and thus cannot be varied # Node /document And the following CreateNodeAggregateWithNode commands are executed: @@ -53,13 +51,11 @@ Feature: Set node properties with different scopes | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"language":"mul"} | | targetOrigin | {"language":"de"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"language":"mul"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date Scenario: Set node properties And the command SetNodeProperties is executed with payload: @@ -67,7 +63,6 @@ Feature: Set node properties with different scopes | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {"language": "de"} | | propertyValues | {"unscopedProperty":"My new string", "nodeScopedProperty":"My new string", "specializationsScopedProperty":"My new string", "nodeAggregateScopedProperty":"My new string"} | - And the graph projection is fully up to date Then I expect a node identified by cs-identifier;nody-mc-nodeface;{"language":"mul"} to exist in the content graph And I expect this node to have the following properties: | Key | Value | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/01-SetNodeReferences_ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/01-SetNodeReferences_ConstraintChecks.feature index eb15cb9cc55..86457bb59ec 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/01-SetNodeReferences_ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/01-SetNodeReferences_ConstraintChecks.feature @@ -45,13 +45,11 @@ Feature: Constraint checks on SetNodeReferences | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | | source-nodandaise | Neos.ContentRepository.Testing:NodeWithReferences | lady-eleonode-rootford | @@ -163,7 +161,6 @@ Feature: Constraint checks on SetNodeReferences | nodeTypeName | "Neos.ContentRepository.Testing:NodeWithReferences" | | originDimensionSpacePoint | {"language":"en"} | | parentNodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date When the command SetNodeReferences is executed with payload and exceptions are caught: | Key | Value | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/02-SetNodeReferences_WithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/02-SetNodeReferences_WithoutDimensions.feature index 89e816585d1..8e9cb1704f4 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/02-SetNodeReferences_WithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/02-SetNodeReferences_WithoutDimensions.feature @@ -50,13 +50,11 @@ Feature: Node References without Dimensions | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | | source-nodandaise | lady-eleonode-rootford | Neos.ContentRepository.Testing:NodeWithReferences | @@ -71,7 +69,6 @@ Feature: Node References without Dimensions | sourceNodeAggregateId | "source-nodandaise" | | referenceName | "referenceProperty" | | references | [{"target": "anthony-destinode"}] | - And the graph projection is fully up to date Then I expect node aggregate identifier "source-nodandaise" to lead to node cs-identifier;source-nodandaise;{} And I expect this node to have the following references: @@ -89,7 +86,6 @@ Feature: Node References without Dimensions | sourceNodeAggregateId | "source-nodandaise" | | referenceName | "referencePropertyWithProperty" | | references | [{"target": "anthony-destinode", "properties":{"text":"my text", "dayOfWeek":"DayOfWeek:https://schema.org/Friday", "postalAddress":"PostalAddress:dummy"}}] | - And the graph projection is fully up to date Then I expect node aggregate identifier "source-nodandaise" to lead to node cs-identifier;source-nodandaise;{} And I expect this node to have the following references: @@ -107,7 +103,6 @@ Feature: Node References without Dimensions | sourceNodeAggregateId | "source-nodandaise" | | referenceName | "referencesProperty" | | references | [{"target": "berta-destinode"}, {"target": "carl-destinode"}] | - And the graph projection is fully up to date Then I expect node aggregate identifier "source-nodandaise" to lead to node cs-identifier;source-nodandaise;{} And I expect this node to have the following references: @@ -131,7 +126,6 @@ Feature: Node References without Dimensions | sourceNodeAggregateId | "source-nodandaise" | | referenceName | "referencesPropertyWithProperty" | | references | [{"target":"berta-destinode", "properties":{"text":"my text", "dayOfWeek":"DayOfWeek:https://schema.org/Wednesday", "postalAddress":"PostalAddress:dummy"}}, {"target":"carl-destinode", "properties":{"text":"my other text", "dayOfWeek":"DayOfWeek:https://schema.org/Friday", "postalAddress":"PostalAddress:anotherDummy"}}] | - And the graph projection is fully up to date Then I expect node aggregate identifier "source-nodandaise" to lead to node cs-identifier;source-nodandaise;{} And I expect this node to have the following references: @@ -155,14 +149,12 @@ Feature: Node References without Dimensions | sourceNodeAggregateId | "source-nodandaise" | | references | [{"target": "berta-destinode"}, {"target": "carl-destinode"}] | | referenceName | "referencesProperty" | - And the graph projection is fully up to date And the command SetNodeReferences is executed with payload: | Key | Value | | sourceNodeAggregateId | "source-nodandaise" | | references | [{"target": "anthony-destinode"}] | | referenceName | "referencesProperty" | - And the graph projection is fully up to date Then I expect node aggregate identifier "source-nodandaise" to lead to node cs-identifier;source-nodandaise;{} And I expect this node to have the following references: @@ -187,14 +179,12 @@ Feature: Node References without Dimensions | sourceNodeAggregateId | "source-nodandaise" | | references | [{"target": "berta-destinode"}, {"target": "carl-destinode"}] | | referenceName | "referencesProperty" | - And the graph projection is fully up to date And the command SetNodeReferences is executed with payload: | Key | Value | | sourceNodeAggregateId | "source-nodandaise" | | references | [{"target": "carl-destinode"}, {"target": "berta-destinode"}] | | referenceName | "referencesProperty" | - And the graph projection is fully up to date Then I expect node aggregate identifier "source-nodandaise" to lead to node cs-identifier;source-nodandaise;{} And I expect this node to have the following references: @@ -209,7 +199,6 @@ Feature: Node References without Dimensions | sourceNodeAggregateId | "source-nodandaise" | | references | [{"target": "berta-destinode"}, {"target": "carl-destinode"}] | | referenceName | "referencesProperty" | - And the graph projection is fully up to date And the command SetNodeReferences is executed with payload: | Key | Value | @@ -217,7 +206,6 @@ Feature: Node References without Dimensions | references | [] | | referenceName | "referencesProperty" | - And the graph projection is fully up to date Then I expect node aggregate identifier "source-nodandaise" to lead to node cs-identifier;source-nodandaise;{} And I expect this node to have no references @@ -235,14 +223,12 @@ Feature: Node References without Dimensions | sourceNodeAggregateId | "source-nodandaise" | | references | [{"target": "anthony-destinode"}] | | referenceName | "referenceProperty" | - And the graph projection is fully up to date And the command SetNodeReferences is executed with payload: | Key | Value | | sourceNodeAggregateId | "node-wan-kenodi" | | references | [{"target": "anthony-destinode"}] | | referenceName | "referenceProperty" | - And the graph projection is fully up to date Then I expect node aggregate identifier "anthony-destinode" to lead to node cs-identifier;anthony-destinode;{} And I expect this node to be referenced by: @@ -256,7 +242,6 @@ Feature: Node References without Dimensions | sourceNodeAggregateId | "source-nodandaise" | | references | [{"target": "anthony-destinode"}] | | referenceName | "restrictedReferenceProperty" | - And the graph projection is fully up to date Then I expect node aggregate identifier "source-nodandaise" to lead to node cs-identifier;source-nodandaise;{} And I expect this node to have the following references: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/03-SetNodeReferences_WithDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/03-SetNodeReferences_WithDimensions.feature index 9e938dd1427..518bcc417ca 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/03-SetNodeReferences_WithDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/03-SetNodeReferences_WithDimensions.feature @@ -29,13 +29,11 @@ Feature: Node References with Dimensions | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | | source-nodandaise | Neos.ContentRepository.Testing:NodeWithReferences | lady-eleonode-rootford | @@ -47,7 +45,6 @@ Feature: Node References with Dimensions | sourceNodeAggregateId | "source-nodandaise" | | referenceName | "referenceProperty" | | references | [{"target": "anthony-destinode"}] | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"language": "de"} Then I expect node aggregate identifier "source-nodandaise" to lead to node cs-identifier;source-nodandaise;{"language": "de"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/04-SetNodeReferences_PropertyScopes.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/04-SetNodeReferences_PropertyScopes.feature index 2fea3b4a00f..586cd61ed98 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/04-SetNodeReferences_PropertyScopes.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/04-SetNodeReferences_PropertyScopes.feature @@ -43,13 +43,11 @@ Feature: Set node properties with different scopes | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"mul"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # We have to add another node since root nodes have no dimension space points and thus cannot be varied # Node /document And the following CreateNodeAggregateWithNode commands are executed: @@ -61,13 +59,11 @@ Feature: Set node properties with different scopes | nodeAggregateId | "source-nodandaise" | | sourceOrigin | {"language":"mul"} | | targetOrigin | {"language":"de"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "source-nodandaise" | | sourceOrigin | {"language":"mul"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date Scenario: Set node properties And the command SetNodeReferences is executed with payload: @@ -118,7 +114,6 @@ Feature: Set node properties with different scopes | referenceName | "specializationsScopedReferences" | | sourceOriginDimensionSpacePoint | {"language": "de"} | | references | [{"target": "anthony-destinode"}] | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"language": "mul"} Then I expect node aggregate identifier "source-nodandaise" to lead to node cs-identifier;source-nodandaise;{"language": "mul"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/05-NodeVariation_After_NodeReferencing.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/05-NodeVariation_After_NodeReferencing.feature index b09549fa2d9..f8d7d89b193 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/05-NodeVariation_After_NodeReferencing.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/05-NodeReferencing/05-NodeVariation_After_NodeReferencing.feature @@ -29,13 +29,11 @@ Feature: Node References with Dimensions | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | | source-nodandaise | Neos.ContentRepository.Testing:NodeWithReferences | lady-eleonode-rootford | @@ -47,14 +45,12 @@ Feature: Node References with Dimensions | sourceNodeAggregateId | "source-nodandaise" | | referenceName | "referenceProperty" | | references | [{"target": "anthony-destinode"}] | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "source-nodandaise" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"ch"} | - And the graph projection is fully up to date # after specialization, the reference must still exist on the specialized node When I am in workspace "live" and dimension space point {"language": "ch"} @@ -86,7 +82,6 @@ Feature: Node References with Dimensions | sourceOriginDimensionSpacePoint | {"language": "ch"} | | referenceName | "referenceProperty" | | references | [{"target": "source-nodandaise"}] | - And the graph projection is fully up to date # reference to self (modified 2 lines above) When I am in workspace "live" and dimension space point {"language": "ch"} @@ -115,7 +110,6 @@ Feature: Node References with Dimensions | nodeAggregateId | "source-nodandaise" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"ch"} | - And the graph projection is fully up to date When the command SetNodeReferences is executed with payload: | Key | Value | @@ -123,7 +117,6 @@ Feature: Node References with Dimensions | sourceOriginDimensionSpacePoint | {"language": "ch"} | | referenceName | "referenceProperty" | | references | [{"target": "anthony-destinode"}] | - And the graph projection is fully up to date # on the specialization, the reference exists. @@ -153,21 +146,18 @@ Feature: Node References with Dimensions | nodeAggregateId | "anthony-destinode" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"en"} | - And the graph projection is fully up to date When the command SetNodeReferences is executed with payload: | Key | Value | | sourceNodeAggregateId | "source-nodandaise" | | referenceName | "referenceProperty" | | references | [{"target": "anthony-destinode"}] | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "source-nodandaise" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"en"} | - And the graph projection is fully up to date # after creating a peer, the reference must still exist on the peer node When I am in workspace "live" and dimension space point {"language": "en"} @@ -209,7 +199,6 @@ Feature: Node References with Dimensions | sourceOriginDimensionSpacePoint | {"language": "en"} | | referenceName | "referenceProperty" | | references | [{"target": "source-nodandaise"}] | - And the graph projection is fully up to date # reference to self (modified 2 lines above) When I am in workspace "live" and dimension space point {"language": "en"} @@ -250,7 +239,6 @@ Feature: Node References with Dimensions | originDimensionSpacePoint | {"language": "ch"} | | nodeTypeName | "Neos.ContentRepository.Testing:NodeWithReferences" | | parentNodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date When the command SetNodeReferences is executed with payload: | Key | Value | @@ -258,7 +246,6 @@ Feature: Node References with Dimensions | sourceOriginDimensionSpacePoint | {"language": "ch"} | | referenceName | "referenceProperty" | | references | [{"target": "anthony-destinode"}] | - And the graph projection is fully up to date # here we generalize When the command CreateNodeVariant is executed with payload: @@ -266,7 +253,6 @@ Feature: Node References with Dimensions | nodeAggregateId | "ch-only" | | sourceOrigin | {"language":"ch"} | | targetOrigin | {"language":"de"} | - And the graph projection is fully up to date # after generalizing, the reference must still exist on the generalized node When I am in workspace "live" and dimension space point {"language": "de"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/01-DisableNodeAggregate_ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/01-DisableNodeAggregate_ConstraintChecks.feature index 573a37a422b..35736f7519d 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/01-DisableNodeAggregate_ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/01-DisableNodeAggregate_ConstraintChecks.feature @@ -22,13 +22,11 @@ Feature: Constraint checks on node aggregate disabling | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | sir-david-nodenborough | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | document | @@ -64,7 +62,6 @@ Feature: Constraint checks on node aggregate disabling | nodeAggregateId | "sir-david-nodenborough" | | coveredDimensionSpacePoint | {"language": "de"} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date # Note: The behavior has been changed with https://github.com/neos/neos-development-collection/pull/4284 and the test was adjusted accordingly When the command DisableNodeAggregate is executed with payload: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/02-DisableNodeAggregate_WithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/02-DisableNodeAggregate_WithoutDimensions.feature index 06a01480aaa..bd36fbddbfa 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/02-DisableNodeAggregate_WithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/02-DisableNodeAggregate_WithoutDimensions.feature @@ -23,13 +23,11 @@ Feature: Disable a node aggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | preceding-nodenborough | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | preceding-document | @@ -41,7 +39,6 @@ Feature: Disable a node aggregate | sourceNodeAggregateId | "preceding-nodenborough" | | referenceName | "references" | | references | [{"target": "sir-david-nodenborough"}] | - And the graph projection is fully up to date Scenario: Disable node with arbitrary strategy since dimensions are not involved When the command DisableNodeAggregate is executed with payload: @@ -57,7 +54,6 @@ Feature: Disable a node aggregate | affectedDimensionSpacePoints | [[]] | | tag | "disabled" | - When the graph projection is fully up to date And I am in workspace "live" Then I expect the graph projection to consist of exactly 5 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/03-DisableNodeAggregate_WithDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/03-DisableNodeAggregate_WithDimensions.feature index 6beb1bf8013..be46253d908 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/03-DisableNodeAggregate_WithDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/03-DisableNodeAggregate_WithDimensions.feature @@ -25,13 +25,11 @@ Feature: Disable a node aggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"mul"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | preceding-nodenborough | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | preceding-document | @@ -49,7 +47,6 @@ Feature: Disable a node aggregate | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"language":"mul"} | | targetOrigin | {"language":"ltz"} | - And the graph projection is fully up to date # Set the DSP to the "central" variant having variants of all kind And I am in dimension space point {"language":"de"} @@ -67,7 +64,6 @@ Feature: Disable a node aggregate | affectedDimensionSpacePoints | [{"language":"de"}, {"language":"ltz"}, {"language":"gsw"}] | | tag | "disabled" | - When the graph projection is fully up to date And I am in workspace "live" Then I expect the graph projection to consist of exactly 6 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph @@ -319,7 +315,6 @@ Feature: Disable a node aggregate | affectedDimensionSpacePoints | [{"language":"ltz"}, {"language":"mul"}, {"language":"de"}, {"language":"en"}, {"language":"gsw"}] | | tag | "disabled" | - When the graph projection is fully up to date And I am in workspace "live" Then I expect the graph projection to consist of exactly 6 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/04-EnableNodeAggregate_ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/04-EnableNodeAggregate_ConstraintChecks.feature index deacbe55ea5..5a6c85c5a5d 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/04-EnableNodeAggregate_ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/04-EnableNodeAggregate_ConstraintChecks.feature @@ -22,13 +22,11 @@ Feature: Enable a node aggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | sir-david-nodenborough | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | document | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/05-EnableNodeAggregate_WithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/05-EnableNodeAggregate_WithoutDimensions.feature index e684962577c..ce9d1d62d24 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/05-EnableNodeAggregate_WithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/05-EnableNodeAggregate_WithoutDimensions.feature @@ -23,13 +23,11 @@ Feature: Enable a node aggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | preceding-nodenborough | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | preceding-document | @@ -41,14 +39,12 @@ Feature: Enable a node aggregate | sourceNodeAggregateId | "preceding-nodenborough" | | referenceName | "references" | | references | [{"target": "sir-david-nodenborough"}] | - And the graph projection is fully up to date Scenario: Enable a previously disabled node with arbitrary strategy since dimensions are not involved Given the command DisableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date When the command EnableNodeAggregate is executed with payload: | Key | Value | @@ -63,7 +59,6 @@ Feature: Enable a node aggregate | affectedDimensionSpacePoints | [[]] | | tag | "disabled" | - When the graph projection is fully up to date And I am in workspace "live" Then I expect the graph projection to consist of exactly 5 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph @@ -126,12 +121,10 @@ Feature: Enable a node aggregate | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date And the command DisableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date When the command EnableNodeAggregate is executed with payload: | Key | Value | @@ -145,7 +138,6 @@ Feature: Enable a node aggregate | affectedDimensionSpacePoints | [[]] | | tag | "disabled" | - When the graph projection is fully up to date And I am in workspace "live" Then I expect the node aggregate "sir-david-nodenborough" to exist @@ -204,12 +196,10 @@ Feature: Enable a node aggregate | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date And the command DisableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date When the command EnableNodeAggregate is executed with payload: | Key | Value | @@ -223,7 +213,6 @@ Feature: Enable a node aggregate | affectedDimensionSpacePoints | [[]] | | tag | "disabled" | - When the graph projection is fully up to date And I am in workspace "live" Then I expect the node aggregate "sir-david-nodenborough" to exist diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/06-EnableNodeAggregate_WithDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/06-EnableNodeAggregate_WithDimensions.feature index 6ea2bb37452..2d1ca596413 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/06-EnableNodeAggregate_WithDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/06-EnableNodeAggregate_WithDimensions.feature @@ -25,13 +25,11 @@ Feature: Enable a node aggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"mul"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | preceding-nodenborough | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | preceding-document | @@ -50,19 +48,16 @@ Feature: Enable a node aggregate | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"language":"mul"} | | targetOrigin | {"language":"ltz"} | - And the graph projection is fully up to date # Disable our reference node aggregate in all variants And the command DisableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date # Explicitly disable a child node aggregate in all variants And the command DisableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "the-great-nodini" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date # Set the DSP to the "central" variant having variants of all kind And I am in dimension space point {"language":"de"} @@ -81,7 +76,6 @@ Feature: Enable a node aggregate | affectedDimensionSpacePoints | [{"language":"de"},{"language":"ltz"},{"language":"gsw"}] | | tag | "disabled" | - When the graph projection is fully up to date And I am in workspace "live" Then I expect the graph projection to consist of exactly 7 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph @@ -377,7 +371,6 @@ Feature: Enable a node aggregate | affectedDimensionSpacePoints | [{"language":"mul"},{"language":"de"},{"language":"en"},{"language":"gsw"},{"language":"ltz"}] | | tag | "disabled" | - When the graph projection is fully up to date And I am in workspace "live" Then I expect the graph projection to consist of exactly 7 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph @@ -705,7 +698,6 @@ Feature: Enable a node aggregate | nodeAggregateId | "the-great-nodini" | | nodeVariantSelectionStrategy | "allVariants" | - When the graph projection is fully up to date And I am in workspace "live" Then I expect the node aggregate "the-great-nodini" to exist diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/07-CreateNodeAggregateWithNodeWithDisabledAncestor_WithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/07-CreateNodeAggregateWithNodeWithDisabledAncestor_WithoutDimensions.feature index a2cd0880fb1..66eb640bf87 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/07-CreateNodeAggregateWithNodeWithDisabledAncestor_WithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/07-CreateNodeAggregateWithNodeWithDisabledAncestor_WithoutDimensions.feature @@ -21,13 +21,11 @@ Feature: Creation of nodes underneath disabled nodes | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | the-great-nodini | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | document | @@ -35,7 +33,6 @@ Feature: Creation of nodes underneath disabled nodes | Key | Value | | nodeAggregateId | "the-great-nodini" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: When a new node is created underneath a hidden node, this one should be hidden as well When the following CreateNodeAggregateWithNode commands are executed: @@ -49,6 +46,5 @@ Feature: Creation of nodes underneath disabled nodes | Key | Value | | nodeAggregateId | "the-great-nodini" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Then I expect node aggregate identifier "nodingers-cat" and node path "document/pet-document" to lead to node cs-identifier;nodingers-cat;{} And I expect this node to be a child of node cs-identifier;the-great-nodini;{} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/08-CreateNodeAggregateWithNodeWithDisabledAncestor_WithDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/08-CreateNodeAggregateWithNodeWithDisabledAncestor_WithDimensions.feature index f566fe2fb78..2b5d3ec4545 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/08-CreateNodeAggregateWithNodeWithDisabledAncestor_WithDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/08-CreateNodeAggregateWithNodeWithDisabledAncestor_WithDimensions.feature @@ -23,13 +23,11 @@ Feature: Creation of nodes underneath disabled nodes | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"mul"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | the-great-nodini | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | document | @@ -39,7 +37,6 @@ Feature: Creation of nodes underneath disabled nodes | nodeAggregateId | "the-great-nodini" | | sourceOrigin | {"language":"mul"} | | targetOrigin | {"language":"ltz"} | - And the graph projection is fully up to date And VisibilityConstraints are set to "frontend" Scenario: Create a new node with parent disabled with strategy allSpecializations @@ -77,7 +74,6 @@ Feature: Creation of nodes underneath disabled nodes | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {"language":"de"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When I am in dimension space point {"language":"de"} And I expect node aggregate identifier "nodingers-cat" and node path "document/pet-document" to lead to node cs-identifier;nodingers-cat;{"language":"mul"} @@ -124,7 +120,6 @@ Feature: Creation of nodes underneath disabled nodes | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {"language":"de"} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date When I am in dimension space point {"language":"mul"} And I expect node aggregate identifier "nodingers-cat" and node path "document/pet-document" to lead to node cs-identifier;nodingers-cat;{"language":"mul"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/09-CreateNodeVariantOfDisabledNode.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/09-CreateNodeVariantOfDisabledNode.feature index 02b888a19df..274299d6173 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/09-CreateNodeVariantOfDisabledNode.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/06-NodeDisabling/09-CreateNodeVariantOfDisabledNode.feature @@ -21,13 +21,11 @@ Feature: Variation of hidden nodes | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"mul"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And VisibilityConstraints are set to "frontend" Scenario: Specialize a node where the specialization target is enabled @@ -40,20 +38,17 @@ Feature: Variation of hidden nodes | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {"language":"de"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date And the command EnableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {"language":"gsw"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "the-great-nodini" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date And I am in dimension space point {"language":"de"} And I expect node aggregate identifier "the-great-nodini" and node path "court-magician" to lead to no node @@ -70,14 +65,12 @@ Feature: Variation of hidden nodes | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {"language":"de"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "the-great-nodini" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date When I am in dimension space point {"language":"de"} Then I expect node aggregate identifier "the-great-nodini" and node path "court-magician" to lead to no node @@ -90,7 +83,6 @@ Feature: Variation of hidden nodes | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {"language":"gsw"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When I am in dimension space point {"language":"gsw"} Then I expect node aggregate identifier "the-great-nodini" and node path "court-magician" to lead to node cs-identifier;the-great-nodini;{"language":"gsw"} @@ -105,14 +97,12 @@ Feature: Variation of hidden nodes | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {"language":"de"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "the-great-nodini" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"mul"} | - And the graph projection is fully up to date When I am in dimension space point {"language":"de"} Then I expect node aggregate identifier "the-great-nodini" and node path "court-magician" to lead to no node @@ -132,20 +122,17 @@ Feature: Variation of hidden nodes | nodeAggregateId | "the-great-nodini" | | sourceOrigin | {"language":"ltz"} | | targetOrigin | {"language":"mul"} | - And the graph projection is fully up to date And the command DisableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {"language":"mul"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "the-great-nodini" | | sourceOrigin | {"language":"ltz"} | | targetOrigin | {"language":"de"} | - And the graph projection is fully up to date When I am in dimension space point {"language":"ltz"} Then I expect node aggregate identifier "the-great-nodini" and node path "court-magician" to lead to no node @@ -158,7 +145,6 @@ Feature: Variation of hidden nodes | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {"language":"de"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When I am in dimension space point {"language":"de"} Then I expect node aggregate identifier "the-great-nodini" and node path "court-magician" to lead to node cs-identifier;the-great-nodini;{"language":"de"} @@ -173,14 +159,12 @@ Feature: Variation of hidden nodes | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {"language":"de"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "the-great-nodini" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"en"} | - And the graph projection is fully up to date When I am in dimension space point {"language":"de"} Then I expect node aggregate identifier "the-great-nodini" and node path "court-magician" to lead to no node @@ -198,20 +182,17 @@ Feature: Variation of hidden nodes | nodeAggregateId | "the-great-nodini" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"mul"} | - And the graph projection is fully up to date And the command DisableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {"language":"mul"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "the-great-nodini" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"en"} | - And the graph projection is fully up to date When I am in dimension space point {"language":"de"} Then I expect node aggregate identifier "the-great-nodini" and node path "court-magician" to lead to no node @@ -224,7 +205,6 @@ Feature: Variation of hidden nodes | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {"language":"en"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When I am in dimension space point {"language":"en"} Then I expect node aggregate identifier "the-great-nodini" and node path "court-magician" to lead to node cs-identifier;the-great-nodini;{"language":"en"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/01-RemoveNodeAggregate_ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/01-RemoveNodeAggregate_ConstraintChecks.feature index d40ecf604c5..0a3e1800337 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/01-RemoveNodeAggregate_ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/01-RemoveNodeAggregate_ConstraintChecks.feature @@ -26,13 +26,11 @@ Feature: Remove NodeAggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | tetheredDescendantNodeAggregateIds | | sir-david-nodenborough | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | document | {"tethered":"nodewyn-tetherton"} | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/02-RemoveNodeAggregate_WithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/02-RemoveNodeAggregate_WithoutDimensions.feature index a1f9d63b75a..b219e7026a8 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/02-RemoveNodeAggregate_WithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/02-RemoveNodeAggregate_WithoutDimensions.feature @@ -23,13 +23,11 @@ Feature: Remove NodeAggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | sir-david-nodenborough | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | document | @@ -54,7 +52,6 @@ Feature: Remove NodeAggregate | affectedOccupiedDimensionSpacePoints | [[]] | | affectedCoveredDimensionSpacePoints | [[]] | | removalAttachmentPoint | null | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 2 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;sir-david-nodenborough;{} to exist in the content graph @@ -77,19 +74,16 @@ Feature: Remove NodeAggregate | Key | Value | | nodeAggregateId | "nodingers-cat" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date And the command RemoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "nodingers-cat" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date And the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "nodingers-cat" | | nodeTypeName | "Neos.ContentRepository.Testing:Document" | | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "pet" | - And the graph projection is fully up to date Then I expect the node aggregate "nodingers-cat" to exist And I expect this node aggregate to disable dimension space points [] @@ -117,14 +111,12 @@ Feature: Remove NodeAggregate | Key | Value | | nodeAggregateId | "nodingers-cat" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date And the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "nodingers-cat" | | nodeTypeName | "Neos.ContentRepository.Testing:Document" | | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "pet" | - And the graph projection is fully up to date Then I expect node aggregate identifier "sir-david-nodenborough" and node path "document" to lead to node cs-identifier;sir-david-nodenborough;{} And I expect this node to be a child of node cs-identifier;lady-eleonode-rootford;{} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/03-RemoveNodeAggregate_WithDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/03-RemoveNodeAggregate_WithDimensions.feature index 38f12dc934a..543720123f0 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/03-RemoveNodeAggregate_WithDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/03-RemoveNodeAggregate_WithDimensions.feature @@ -25,13 +25,11 @@ Feature: Remove NodeAggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"en"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | sir-david-nodenborough | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | document | @@ -57,7 +55,6 @@ Feature: Remove NodeAggregate | affectedOccupiedDimensionSpacePoints | [{"language":"en"}] | | affectedCoveredDimensionSpacePoints | [{"language":"de"},{"language":"gsw"}] | | removalAttachmentPoint | null | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;sir-david-nodenborough;{"language":"en"} to exist in the content graph @@ -191,7 +188,6 @@ Feature: Remove NodeAggregate | nodeAggregateId | "nodingers-cat" | | sourceOrigin | {"language":"en"} | | targetOrigin | {"language":"de"} | - And the graph projection is fully up to date When the command RemoveNodeAggregate is executed with payload: | Key | Value | @@ -206,7 +202,6 @@ Feature: Remove NodeAggregate | affectedOccupiedDimensionSpacePoints | [{"language":"de"},{"language":"en"}] | | affectedCoveredDimensionSpacePoints | [{"language":"de"},{"language":"en"},{"language":"gsw"},{"language":"fr"}] | | removalAttachmentPoint | null | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 2 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;sir-david-nodenborough;{"language":"en"} to exist in the content graph @@ -296,12 +291,10 @@ Feature: Remove NodeAggregate | Key | Value | | nodeAggregateId | "nodingers-cat" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date And the command RemoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "nodingers-cat" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | nodingers-cat | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | pet | @@ -351,19 +344,16 @@ Feature: Remove NodeAggregate | Key | Value | | nodeAggregateId | "nodingers-cat" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date And the command RemoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "nodingers-cat" | | coveredDimensionSpacePoint | {"language":"de"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "nodingers-cat" | | sourceOrigin | {"language":"en"} | | targetOrigin | {"language":"de"} | - And the graph projection is fully up to date Then I expect the node aggregate "nodingers-cat" to exist And I expect this node aggregate to disable dimension space points [{"language":"en"},{"language":"fr"}] diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/04-VariantRecreation.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/04-VariantRecreation.feature index d128cf5a5b6..6dc0b3a5e02 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/04-VariantRecreation.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/04-VariantRecreation.feature @@ -30,14 +30,12 @@ Feature: Recreate a node variant | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"en"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | originDimensionSpacePoint | nodeName | parentNodeAggregateId | nodeTypeName | tetheredDescendantNodeAggregateIds | | sir-david-nodenborough | {"language":"en"} | document | lady-eleonode-rootford | Neos.ContentRepository.Testing:Document | {"tethered-document": "nodimus-prime", "tethered-document/tethered": "nodimus-mediocre"} | @@ -48,7 +46,6 @@ Feature: Recreate a node variant | workspaceName | "user-ws" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-id" | - And the graph projection is fully up to date Scenario: Create specialization variant of node, publish, delete it and recreate it When the command CreateNodeVariant is executed with payload: @@ -57,19 +54,16 @@ Feature: Recreate a node variant | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"language":"en"} | | targetOrigin | {"language":"de"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | workspaceName | "user-ws" | | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"language":"en"} | | targetOrigin | {"language":"de"} | - And the graph projection is fully up to date And the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "user-ws" | | newContentStreamId | "new-user-cs-id" | - And the graph projection is fully up to date And the command RemoveNodeAggregate is executed with payload: | Key | Value | @@ -77,7 +71,6 @@ Feature: Recreate a node variant | nodeAggregateId | "sir-david-nodenborough" | | coveredDimensionSpacePoint | {"language":"de"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | @@ -85,14 +78,12 @@ Feature: Recreate a node variant | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"language":"en"} | | targetOrigin | {"language":"de"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | workspaceName | "user-ws" | | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"language":"en"} | | targetOrigin | {"language":"de"} | - And the graph projection is fully up to date When I am in workspace "user-ws" and dimension space point {"language": "de"} Then I expect node aggregate identifier "sir-david-nodenborough" and node path "document" to lead to node new-user-cs-id;sir-david-nodenborough;{"language": "de"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/05-CreateNodeAfterDeletion.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/05-CreateNodeAfterDeletion.feature index 8a7c075a96e..08f1ae18ae4 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/05-CreateNodeAfterDeletion.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/05-CreateNodeAfterDeletion.feature @@ -30,13 +30,11 @@ Feature: Create node specialization | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example":"source"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | parentNodeAggregateId | succeedingSiblingNodeAggregateId | nodeTypeName | tetheredDescendantNodeAggregateIds | @@ -52,7 +50,6 @@ Feature: Create node specialization | nodeAggregateId | "younger-mc-nodeface" | | coveredDimensionSpacePoint | {"example":"spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | parentNodeAggregateId | succeedingSiblingNodeAggregateId | nodeTypeName | tetheredDescendantNodeAggregateIds | | nody-mc-nodeface | document | lady-eleonode-rootford | younger-mc-nodeface | Neos.ContentRepository.Testing:Document | {"tethered-node": "nodewyn-tetherton", "tethered-node/tethered-leaf": "nodimer-tetherton"} | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/06-CreateNodeSpecializationVariantAfterDeletion.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/06-CreateNodeSpecializationVariantAfterDeletion.feature index ffb3aceb16c..0940d193944 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/06-CreateNodeSpecializationVariantAfterDeletion.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/07-NodeRemoval/06-CreateNodeSpecializationVariantAfterDeletion.feature @@ -31,13 +31,11 @@ Feature: Create node specialization | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example":"source"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | parentNodeAggregateId | succeedingSiblingNodeAggregateId | nodeTypeName | tetheredDescendantNodeAggregateIds | @@ -56,14 +54,12 @@ Feature: Create node specialization | nodeAggregateId | "nody-mc-nodeface" | | coveredDimensionSpacePoint | {"example":"spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | contentStreamId | "cs-identifier" | | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"spec"} | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 12 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/01-MoveNodes_ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/01-MoveNodes_ConstraintChecks.feature index cfb744ffc71..e0348f5036c 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/01-MoveNodes_ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/01-MoveNodes_ConstraintChecks.feature @@ -37,12 +37,10 @@ Feature: Move node to a new parent / within the current parent before a sibling | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | And I am in workspace "live" and dimension space point {"example": "source"} - And the graph projection is fully up to date And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | originDimensionSpacePoint | nodeTypeName | parentNodeAggregateId | nodeName | tetheredDescendantNodeAggregateIds | | sir-david-nodenborough | {"example": "source"} | Neos.ContentRepository.Testing:DocumentWithTetheredChildNode | lady-eleonode-rootford | document | {"tethered": "nodewyn-tetherton"} | @@ -137,7 +135,6 @@ Feature: Move node to a new parent / within the current parent before a sibling | nodeAggregateId | "sir-nodeward-nodington-iii" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload and exceptions are caught: | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | @@ -153,7 +150,6 @@ Feature: Move node to a new parent / within the current parent before a sibling | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"example": "source"} | | targetOrigin | {"example": "general"} | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload and exceptions are caught: | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | @@ -168,7 +164,6 @@ Feature: Move node to a new parent / within the current parent before a sibling | nodeAggregateId | "sir-nodeward-nodington-iii" | | sourceOrigin | {"example": "source"} | | targetOrigin | {"example": "peer"} | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | originDimensionSpacePoint | nodeTypeName | parentNodeAggregateId | nodeName | | nody-mc-nodeface | {"example": "peer"} | Neos.ContentRepository.Testing:Document | sir-nodeward-nodington-iii | document | @@ -237,13 +232,11 @@ Feature: Move node to a new parent / within the current parent before a sibling | coveredDimensionSpacePoint | {"example": "source"} | | nodeAggregateId | "rival-destinode" | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date And the command RemoveNodeAggregate is executed with payload: | Key | Value | | coveredDimensionSpacePoint | {"example": "peer"} | | nodeAggregateId | "rival-destinode" | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload and exceptions are caught: | Key | Value | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/02-MoveNodeAggregate_NoNewParent_Dimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/02-MoveNodeAggregate_NoNewParent_Dimensions.feature index 3be7125e4bf..18780d6d0ff 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/02-MoveNodeAggregate_NoNewParent_Dimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/02-MoveNodeAggregate_NoNewParent_Dimensions.feature @@ -24,7 +24,6 @@ Feature: Move a node with content dimensions | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example": "general"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -49,7 +48,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 9 events to be published on stream "ContentStream:cs-identifier" And event at index 8 is of type "NodeAggregateWasMoved" with payload: @@ -107,7 +105,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -116,7 +113,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -175,7 +171,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -184,7 +179,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -248,7 +242,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 9 events to be published on stream "ContentStream:cs-identifier" And event at index 8 is of type "NodeAggregateWasMoved" with payload: @@ -312,7 +305,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "elder-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -321,7 +313,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -384,7 +375,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -393,7 +383,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "youngest-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -459,7 +448,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 9 events to be published on stream "ContentStream:cs-identifier" And event at index 8 is of type "NodeAggregateWasMoved" with payload: @@ -519,7 +507,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -528,7 +515,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -587,7 +573,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -596,7 +581,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -660,7 +644,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 9 events to be published on stream "ContentStream:cs-identifier" And event at index 8 is of type "NodeAggregateWasMoved" with payload: @@ -724,7 +707,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "younger-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -733,7 +715,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -796,7 +777,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -805,7 +785,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newPrecedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -873,7 +852,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 9 events to be published on stream "ContentStream:cs-identifier" And event at index 8 is of type "NodeAggregateWasMoved" with payload: @@ -933,7 +911,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -942,7 +919,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -1003,7 +979,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1012,7 +987,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -1076,7 +1050,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 9 events to be published on stream "ContentStream:cs-identifier" And event at index 8 is of type "NodeAggregateWasMoved" with payload: @@ -1140,7 +1113,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "elder-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1149,7 +1121,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -1212,7 +1183,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1221,7 +1191,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "youngest-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -1287,7 +1256,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 9 events to be published on stream "ContentStream:cs-identifier" And event at index 8 is of type "NodeAggregateWasMoved" with payload: @@ -1349,7 +1317,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1358,7 +1325,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -1419,7 +1385,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1428,7 +1393,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -1492,7 +1456,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 9 events to be published on stream "ContentStream:cs-identifier" And event at index 8 is of type "NodeAggregateWasMoved" with payload: @@ -1556,7 +1519,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "younger-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1565,7 +1527,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -1628,7 +1589,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1637,7 +1597,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newPrecedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -1705,7 +1664,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 9 events to be published on stream "ContentStream:cs-identifier" And event at index 8 is of type "NodeAggregateWasMoved" with payload: @@ -1770,7 +1728,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1779,7 +1736,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -1842,7 +1798,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 9 events to be published on stream "ContentStream:cs-identifier" And event at index 8 is of type "NodeAggregateWasMoved" with payload: @@ -1916,7 +1871,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 9 events to be published on stream "ContentStream:cs-identifier" And event at index 8 is of type "NodeAggregateWasMoved" with payload: @@ -1979,7 +1933,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1988,7 +1941,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -2049,7 +2001,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2058,7 +2009,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 10 events to be published on stream "ContentStream:cs-identifier" And event at index 9 is of type "NodeAggregateWasMoved" with payload: @@ -2121,7 +2071,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | null | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 9 events to be published on stream "ContentStream:cs-identifier" And event at index 8 is of type "NodeAggregateWasMoved" with payload: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/03-MoveNodeAggregate_NewParent_Dimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/03-MoveNodeAggregate_NewParent_Dimensions.feature index 216e0251cfb..0842da1a6cb 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/03-MoveNodeAggregate_NewParent_Dimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/03-MoveNodeAggregate_NewParent_Dimensions.feature @@ -24,13 +24,11 @@ Feature: Move a node with content dimensions | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example": "general"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | sir-david-nodenborough | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | parent-document | @@ -54,7 +52,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 13 events to be published on stream "ContentStream:cs-identifier" And event at index 12 is of type "NodeAggregateWasMoved" with payload: @@ -114,7 +111,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -123,7 +119,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -182,7 +177,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -191,7 +185,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -255,7 +248,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 13 events to be published on stream "ContentStream:cs-identifier" And event at index 12 is of type "NodeAggregateWasMoved" with payload: @@ -319,14 +311,12 @@ Feature: Move a node with content dimensions | nodeAggregateId | "elder-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -389,7 +379,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -398,7 +387,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "youngest-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -462,7 +450,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 13 events to be published on stream "ContentStream:cs-identifier" And event at index 12 is of type "NodeAggregateWasMoved" with payload: @@ -522,7 +509,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -531,7 +517,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -590,7 +575,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -599,7 +583,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -663,7 +646,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 13 events to be published on stream "ContentStream:cs-identifier" And event at index 12 is of type "NodeAggregateWasMoved" with payload: @@ -727,7 +709,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "younger-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -736,7 +717,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -799,7 +779,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -808,7 +787,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newPrecedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "gatherAll" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -875,7 +853,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 13 events to be published on stream "ContentStream:cs-identifier" And event at index 12 is of type "NodeAggregateWasMoved" with payload: @@ -933,7 +910,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -942,7 +918,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -999,7 +974,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1008,7 +982,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -1068,7 +1041,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 13 events to be published on stream "ContentStream:cs-identifier" And event at index 12 is of type "NodeAggregateWasMoved" with payload: @@ -1128,7 +1100,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "elder-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1137,7 +1108,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -1196,7 +1166,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1205,7 +1174,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "youngest-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -1265,7 +1233,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 13 events to be published on stream "ContentStream:cs-identifier" And event at index 12 is of type "NodeAggregateWasMoved" with payload: @@ -1323,7 +1290,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1332,7 +1298,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -1389,7 +1354,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1398,7 +1362,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -1458,7 +1421,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 13 events to be published on stream "ContentStream:cs-identifier" And event at index 12 is of type "NodeAggregateWasMoved" with payload: @@ -1518,7 +1480,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "younger-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1527,7 +1488,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -1586,7 +1546,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1595,7 +1554,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newPrecedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -1658,7 +1616,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "eldest-mc-nodeface" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 13 events to be published on stream "ContentStream:cs-identifier" And event at index 12 is of type "NodeAggregateWasMoved" with payload: @@ -1719,7 +1676,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "eldest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1728,7 +1684,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -1786,7 +1741,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | "elder-mc-nodeface" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 13 events to be published on stream "ContentStream:cs-identifier" And event at index 12 is of type "NodeAggregateWasMoved" with payload: @@ -1854,7 +1808,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 13 events to be published on stream "ContentStream:cs-identifier" And event at index 12 is of type "NodeAggregateWasMoved" with payload: @@ -1911,7 +1864,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1920,7 +1872,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -1976,7 +1927,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "youngest-mc-nodeface" | | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1985,7 +1935,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream "ContentStream:cs-identifier" And event at index 13 is of type "NodeAggregateWasMoved" with payload: @@ -2043,7 +1992,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-david-nodenborough" | | newPrecedingSiblingNodeAggregateId | "younger-mc-nodeface" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date Then I expect exactly 13 events to be published on stream "ContentStream:cs-identifier" And event at index 12 is of type "NodeAggregateWasMoved" with payload: @@ -2111,7 +2059,6 @@ Feature: Move a node with content dimensions | nodeAggregateId | "nody-mc-nodeface-ii" | | nodeTypeName | "Neos.ContentRepository.Testing:Document" | | parentNodeAggregateId | "sir-david-nodenborough" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2127,6 +2074,5 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "lady-eleonode-rootford" | | succeedingSiblingsForCoverage | [{"dimensionSpacePoint":{"example":"general"},"nodeAggregateId":null}] | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} And I expect node aggregate identifier "nody-mc-nodeface-ii" to lead to node cs-identifier;nody-mc-nodeface-ii;{"example": "general"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/04-MoveNodeAggregate_ScatteredChildren.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/04-MoveNodeAggregate_ScatteredChildren.feature index da8bd43063f..76d06698dd8 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/04-MoveNodeAggregate_ScatteredChildren.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/04-MoveNodeAggregate_ScatteredChildren.feature @@ -21,7 +21,6 @@ Feature: Move a node with content dimensions | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example": "general"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -49,7 +48,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "nodimus-mediocre" | | newSucceedingSiblingNodeAggregateId | "younger-child-destinode" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -58,7 +56,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | newSucceedingSiblingNodeAggregateId | "bustling-destinode" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 15 events to be published on stream "ContentStream:cs-identifier" And event at index 14 is of type "NodeAggregateWasMoved" with payload: @@ -119,7 +116,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "nodimus-mediocre" | | newSucceedingSiblingNodeAggregateId | "younger-child-destinode" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -127,7 +123,6 @@ Feature: Move a node with content dimensions | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "bustling-destinode" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 15 events to be published on stream "ContentStream:cs-identifier" And event at index 14 is of type "NodeAggregateWasMoved" with payload: @@ -177,7 +172,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "nodimus-mediocre" | | newSucceedingSiblingNodeAggregateId | "younger-child-destinode" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -185,7 +179,6 @@ Feature: Move a node with content dimensions | dimensionSpacePoint | {"example": "source"} | | newSucceedingSiblingNodeAggregateId | "elder-destinode" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 15 events to be published on stream "ContentStream:cs-identifier" And event at index 14 is of type "NodeAggregateWasMoved" with payload: @@ -247,7 +240,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "nodimus-mediocre" | | newSucceedingSiblingNodeAggregateId | "younger-child-destinode" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "elder-destinode" | @@ -255,7 +247,6 @@ Feature: Move a node with content dimensions | newParentNodeAggregateId | "nodimus-mediocre" | | newPrecedingSiblingNodeAggregateId | "bustling-destinode" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -263,7 +254,6 @@ Feature: Move a node with content dimensions | dimensionSpacePoint | {"example": "source"} | | newSucceedingSiblingNodeAggregateId | "bustling-destinode" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date Then I expect exactly 16 events to be published on stream "ContentStream:cs-identifier" And event at index 15 is of type "NodeAggregateWasMoved" with payload: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/05-MoveNodeAggregate_SubtreeTags.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/05-MoveNodeAggregate_SubtreeTags.feature index 06d9bc48849..2777bbb9715 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/05-MoveNodeAggregate_SubtreeTags.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/05-MoveNodeAggregate_SubtreeTags.feature @@ -27,7 +27,6 @@ Feature: Move a node aggregate into and out of a tagged parent | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example": "general"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -50,7 +49,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -58,7 +56,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -111,7 +108,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -119,7 +115,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -174,7 +169,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -182,7 +176,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -235,7 +228,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -243,7 +235,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -299,7 +290,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -307,7 +297,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -361,7 +350,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -369,7 +357,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -425,7 +412,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -433,7 +419,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -441,7 +426,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -495,7 +479,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -503,7 +486,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -511,7 +493,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -565,7 +546,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -573,7 +553,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -581,7 +560,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -635,7 +613,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -643,7 +620,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -651,7 +627,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -705,7 +680,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -713,7 +687,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -721,7 +694,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -775,7 +747,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -783,7 +754,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -791,7 +761,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -845,7 +814,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -853,7 +821,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -861,7 +828,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -915,7 +881,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -923,7 +888,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -931,7 +895,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -987,7 +950,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -995,7 +957,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1003,7 +964,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1057,7 +1017,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -1065,7 +1024,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1073,7 +1031,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1127,7 +1084,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -1135,7 +1091,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1143,7 +1098,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1197,7 +1151,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -1205,7 +1158,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1213,7 +1165,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1267,7 +1218,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -1275,7 +1225,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1283,7 +1232,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1337,7 +1285,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -1345,7 +1292,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1353,7 +1299,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1407,7 +1352,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -1415,7 +1359,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1423,7 +1366,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1477,7 +1419,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -1485,7 +1426,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1493,7 +1433,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1549,7 +1488,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1557,7 +1495,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1611,7 +1548,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1619,7 +1555,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1675,7 +1610,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -1683,7 +1617,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1691,7 +1624,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1745,7 +1677,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -1753,7 +1684,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1761,7 +1691,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1815,7 +1744,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -1823,7 +1751,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1831,7 +1758,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1885,7 +1811,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -1893,7 +1818,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1901,7 +1825,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -1955,7 +1878,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -1963,7 +1885,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -1971,7 +1892,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -2025,7 +1945,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -2033,7 +1952,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2041,7 +1959,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -2095,7 +2012,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -2103,7 +2019,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2111,7 +2026,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -2165,7 +2079,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -2173,7 +2086,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2181,7 +2093,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -2237,7 +2148,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -2245,7 +2155,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2253,7 +2162,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -2307,7 +2215,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -2315,7 +2222,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2323,7 +2229,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -2377,7 +2282,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -2385,7 +2289,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2393,7 +2296,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -2447,7 +2349,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -2455,7 +2356,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2463,7 +2363,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -2517,7 +2416,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -2525,7 +2423,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2533,7 +2430,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -2587,7 +2483,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -2595,7 +2490,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2603,7 +2497,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -2657,7 +2550,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -2665,7 +2557,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "source"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2673,7 +2564,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} @@ -2727,7 +2617,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag1" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -2735,7 +2624,6 @@ Feature: Move a node aggregate into and out of a tagged parent | coveredDimensionSpacePoint | {"example": "spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | | tag | "tag2" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -2743,7 +2631,6 @@ Feature: Move a node aggregate into and out of a tagged parent | dimensionSpacePoint | {"example": "source"} | | newParentNodeAggregateId | "nodimus-prime" | | relationDistributionStrategy | "gatherSpecializations" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {"example": "general"} Then I expect node aggregate identifier "nody-mc-nodeface" and node path "parent-document/document" to lead to node cs-identifier;nody-mc-nodeface;{"example":"general"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/06-AdditionalConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/06-AdditionalConstraintChecks.feature index e3ac3759a33..30079df3031 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/06-AdditionalConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/06-AdditionalConstraintChecks.feature @@ -17,7 +17,6 @@ Feature: Additional constraint checks after move node capabilities are introduce | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example": "general"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -38,21 +37,18 @@ Feature: Additional constraint checks after move node capabilities are introduce | dimensionSpacePoint | {"example": "spec"} | | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "bustling-mc-nodeface" | | dimensionSpacePoint | {"example": "peer"} | | newParentNodeAggregateId | "lady-abigail-nodenborough" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "bustling-mc-nodeface" | | dimensionSpacePoint | {"example": "general"} | | newParentNodeAggregateId | "general-nodesworth" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNode is executed with payload and exceptions are caught: | Key | Value | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/07-MoveNodeAggregateWithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/07-MoveNodeAggregateWithoutDimensions.feature index fbde6f92b7a..bf8c29792df 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/07-MoveNodeAggregateWithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/08-NodeMove/07-MoveNodeAggregateWithoutDimensions.feature @@ -23,7 +23,6 @@ Feature: Move a node without content dimensions | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -59,7 +58,6 @@ Feature: Move a node without content dimensions | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "esquire" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Scenario: Move a node to the end of its siblings When the command MoveNodeAggregate is executed with payload: @@ -69,7 +67,6 @@ Feature: Move a node without content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | null | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;sir-david-nodenborough;{} to exist in the content graph @@ -104,7 +101,6 @@ Feature: Move a node without content dimensions | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "sir-david-nodenborough" | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;sir-david-nodenborough;{} to exist in the content graph @@ -142,7 +138,6 @@ Feature: Move a node without content dimensions | parentNodeAggregateId | "sir-nodeward-nodington-iii" | | nodeName | "other-document" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | @@ -157,7 +152,6 @@ Feature: Move a node without content dimensions | newParentNodeAggregateId | "sir-nodeward-nodington-iii" | | succeedingSiblingsForCoverage | [{"dimensionSpacePoint": [],"nodeAggregateId":null}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 5 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;sir-david-nodenborough;{} to exist in the content graph @@ -204,7 +198,6 @@ Feature: Move a node without content dimensions | newParentNodeAggregateId | "lady-eleonode-rootford" | | succeedingSiblingsForCoverage | [{"dimensionSpacePoint": [],"nodeAggregateId":"sir-nodeward-nodington-iii"}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;sir-david-nodenborough;{} to exist in the content graph diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/09-NodeRenaming/01-ChangeNodeAggregateName_ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/09-NodeRenaming/01-ChangeNodeAggregateName_ConstraintChecks.feature index 444ed0a481d..cbb20ba2adf 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/09-NodeRenaming/01-ChangeNodeAggregateName_ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/09-NodeRenaming/01-ChangeNodeAggregateName_ConstraintChecks.feature @@ -25,14 +25,12 @@ Feature: Change node name | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example":"source"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | tetheredDescendantNodeAggregateIds | | sir-david-nodenborough | null | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | {"tethered": "nodewyn-tetherton"} | @@ -91,7 +89,6 @@ Feature: Change node name | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"example": "source"} | | targetOrigin | {"example": "peer"} | - And the graph projection is fully up to date And the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "sir-nodeward-nodington-iii" | @@ -99,7 +96,6 @@ Feature: Change node name | nodeTypeName | "Neos.ContentRepository.Testing:Document" | | parentNodeAggregateId | "sir-david-nodenborough" | | nodeName | "esquire" | - And the graph projection is fully up to date When the command ChangeNodeAggregateName is executed with payload and exceptions are caught: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/09-NodeRenaming/02-ChangeNodeAggregateName.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/09-NodeRenaming/02-ChangeNodeAggregateName.feature index 457b44cb3bf..1392078b609 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/09-NodeRenaming/02-ChangeNodeAggregateName.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/09-NodeRenaming/02-ChangeNodeAggregateName.feature @@ -23,14 +23,12 @@ Feature: Change node aggregate name | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example":"source"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | originDimensionSpacePoint | parentNodeAggregateId | nodeName | tetheredDescendantNodeAggregateIds | | sir-david-nodenborough | Neos.ContentRepository.Testing:Node | {"example":"general"} | lady-eleonode-rootford | parent-document | {} | @@ -41,14 +39,12 @@ Feature: Change node aggregate name | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"general"} | - And the graph projection is fully up to date # leave spec as a virtual variant And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"peer"} | - And the graph projection is fully up to date Scenario: Rename a child node aggregate with descendants When the command ChangeNodeAggregateName is executed with payload: @@ -95,7 +91,6 @@ Feature: Change node aggregate name | dimensionSpacePoint | {"example": "peer"} | | newParentNodeAggregateId | "lady-eleonode-rootford" | | relationDistributionStrategy | "scatter" | - And the graph projection is fully up to date When the command ChangeNodeAggregateName is executed with payload: | Key | Value | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamClosing/01-CloseContentStream_ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamClosing/01-CloseContentStream_ConstraintChecks.feature index d991eb4fd5b..595c2e53055 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamClosing/01-CloseContentStream_ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamClosing/01-CloseContentStream_ConstraintChecks.feature @@ -13,7 +13,6 @@ Feature: Constraint check test cases for closing content streams | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date Scenario: Try to close a non-existing content stream: And the command CloseContentStream is executed with payload and exceptions are caught: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/01-ForkContentStream_ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/01-ForkContentStream_ConstraintChecks.feature index ff0f58bdd9a..ab7c62addec 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/01-ForkContentStream_ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/01-ForkContentStream_ConstraintChecks.feature @@ -23,7 +23,6 @@ Feature: ForkContentStream Without Dimensions | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/ForkContentStreamWithDisabledNodesWithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/ForkContentStreamWithDisabledNodesWithoutDimensions.feature index c4a13c11db4..9c75bbad71b 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/ForkContentStreamWithDisabledNodesWithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/ForkContentStreamWithDisabledNodesWithoutDimensions.feature @@ -22,7 +22,6 @@ Feature: On forking a content stream, hidden nodes should be correctly copied as | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -48,13 +47,11 @@ Feature: On forking a content stream, hidden nodes should be correctly copied as | parentNodeAggregateId | "the-great-nodini" | | nodeName | "pet" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date And the command DisableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "the-great-nodini" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: on ForkContentStream, the disabled nodes in the target content stream should still be invisible. When the command ForkContentStream is executed with payload: @@ -62,7 +59,6 @@ Feature: On forking a content stream, hidden nodes should be correctly copied as | sourceContentStreamId | "cs-identifier" | | contentStreamId | "user-cs-identifier" | - When the graph projection is fully up to date # node aggregate occupation and coverage is not relevant without dimensions and thus not tested diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/ForkContentStreamWithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/ForkContentStreamWithoutDimensions.feature index 357c6406deb..3c813d29cc5 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/ForkContentStreamWithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/ForkContentStreamWithoutDimensions.feature @@ -23,7 +23,6 @@ Feature: ForkContentStream Without Dimensions | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -53,7 +52,6 @@ Feature: ForkContentStream Without Dimensions | Key | Value | | contentStreamId | "user-cs-identifier" | | sourceContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in content stream "user-cs-identifier" and dimension space point {} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node user-cs-identifier;nody-mc-nodeface;{} @@ -71,7 +69,6 @@ Feature: ForkContentStream Without Dimensions | affectedDimensionSpacePoints | [{}] | | propertyValues | {"text": {"value": "modified value", "type": "string"}} | | propertiesToUnset | {} | - And the graph projection is fully up to date # live When I am in content stream "cs-identifier" and dimension space point {} @@ -101,7 +98,6 @@ Feature: ForkContentStream Without Dimensions | affectedDimensionSpacePoints | [{}] | | propertyValues | {"text": {"value": "modified value", "type": "string"}} | | propertiesToUnset | {} | - And the graph projection is fully up to date # live When I am in content stream "cs-identifier" and dimension space point {} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/NodeReferencesOnForkContentStream.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/NodeReferencesOnForkContentStream.feature index 75decf3a791..6ffb85265d2 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/NodeReferencesOnForkContentStream.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ContentStreamForking/NodeReferencesOnForkContentStream.feature @@ -28,13 +28,11 @@ Feature: On forking a content stream, node references should be copied as well. | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | | source-nodandaise | Neos.ContentRepository.Testing:NodeWithReferences | lady-eleonode-rootford | @@ -46,13 +44,11 @@ Feature: On forking a content stream, node references should be copied as well. | sourceNodeAggregateId | "source-nodandaise" | | referenceName | "referenceProperty" | | references | [{"target": "anthony-destinode"}] | - And the graph projection is fully up to date When the command ForkContentStream is executed with payload: | Key | Value | | contentStreamId | "user-cs-identifier" | | sourceContentStreamId | "cs-identifier" | - And the graph projection is fully up to date # after forking, the reference must still exist on the forked content stream (no surprises here). When I am in content stream "user-cs-identifier" and dimension space point {"language": "de"} @@ -82,7 +78,6 @@ Feature: On forking a content stream, node references should be copied as well. | Key | Value | | nodeAggregateId | "source-nodandaise" | | propertyValues | {"text": "Modified in live workspace"} | - And the graph projection is fully up to date Then I expect node aggregate identifier "source-nodandaise" to lead to node user-cs-identifier;source-nodandaise;{"language": "de"} And I expect this node to have the following references: | Name | Node | Properties | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/AddDimensionShineThrough.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/AddDimensionShineThrough.feature index ef2f1eaf151..d7ed5d65569 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/AddDimensionShineThrough.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/AddDimensionShineThrough.feature @@ -37,13 +37,11 @@ Feature: Add Dimension Specialization | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -52,7 +50,6 @@ Feature: Add Dimension Specialization | originDimensionSpacePoint | {"language": "de"} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "hello" } | - And the graph projection is fully up to date Scenario: Success Case - simple # we change the dimension configuration @@ -110,7 +107,6 @@ Feature: Add Dimension Specialization | nodeAggregateId | "sir-david-nodenborough" | | originDimensionSpacePoint | {"language": "de"} | | propertyValues | {"text": "changed"} | - And the graph projection is fully up to date When I am in content stream "migration-cs" and dimension space point {"language": "de"} Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node migration-cs;sir-david-nodenborough;{"language": "de"} And I expect this node to have the following properties: @@ -142,7 +138,6 @@ Feature: Add Dimension Specialization | nodeAggregateId | "sir-david-nodenborough" | | coveredDimensionSpacePoint | {"language": "de"} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date # ensure the node is disabled When I am in workspace "live" and dimension space point {"language": "de"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/AddNewProperty_NoDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/AddNewProperty_NoDimensions.feature index 9d47c6e453a..c5361ee7bc0 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/AddNewProperty_NoDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/AddNewProperty_NoDimensions.feature @@ -22,13 +22,11 @@ Feature: Add New Property | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -37,7 +35,6 @@ Feature: Add New Property | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "Original text"} | - And the graph projection is fully up to date # Node /doc2 When the command CreateNodeAggregateWithNode is executed with payload: @@ -47,7 +44,6 @@ Feature: Add New Property | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {} | - And the graph projection is fully up to date Scenario: Fixed newValue diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/ChangePropertyValue_Dimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/ChangePropertyValue_Dimensions.feature index e219bf8c2c8..a009cfa968b 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/ChangePropertyValue_Dimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/ChangePropertyValue_Dimensions.feature @@ -28,13 +28,11 @@ Feature: Change Property Value across dimensions; and test DimensionSpacePoints | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document (in "de") When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -43,7 +41,6 @@ Feature: Change Property Value across dimensions; and test DimensionSpacePoints | originDimensionSpacePoint | {"language": "de"} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "Original text"} | - And the graph projection is fully up to date # Node /document (in "en") When the command CreateNodeVariant is executed with payload: @@ -51,7 +48,6 @@ Feature: Change Property Value across dimensions; and test DimensionSpacePoints | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"en"} | - And the graph projection is fully up to date Scenario: change materialized "de" node, should shine through in "ch", but not in "en" @@ -124,7 +120,6 @@ Feature: Change Property Value across dimensions; and test DimensionSpacePoints | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"ch"} | - And the graph projection is fully up to date When I run the following node migration for workspace "live", creating content streams "migration-cs": """yaml @@ -170,7 +165,6 @@ Feature: Change Property Value across dimensions; and test DimensionSpacePoints | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"ch"} | - And the graph projection is fully up to date When I run the following node migration for workspace "live", creating content streams "migration-cs": """yaml diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/ChangePropertyValue_NoDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/ChangePropertyValue_NoDimensions.feature index abfb634b4ec..08c374daab9 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/ChangePropertyValue_NoDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/ChangePropertyValue_NoDimensions.feature @@ -23,13 +23,11 @@ Feature: Change Property | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -38,7 +36,6 @@ Feature: Change Property | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "Original text"} | - And the graph projection is fully up to date Scenario: Fixed newValue diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/Filter_NodeName_NoDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/Filter_NodeName_NoDimensions.feature index 0c3a24f7559..654eba4f256 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/Filter_NodeName_NoDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/Filter_NodeName_NoDimensions.feature @@ -24,12 +24,10 @@ Feature: Filter - Node Name | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | And I am in workspace "live" - And the graph projection is fully up to date And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /name1 When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -39,7 +37,6 @@ Feature: Filter - Node Name | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "Original name1"} | - And the graph projection is fully up to date # Node /name2 When the command CreateNodeAggregateWithNode is executed with payload: @@ -50,7 +47,6 @@ Feature: Filter - Node Name | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "Original name2"} | - And the graph projection is fully up to date # no node name When the command CreateNodeAggregateWithNode is executed with payload: @@ -60,7 +56,6 @@ Feature: Filter - Node Name | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "no node name"} | - And the graph projection is fully up to date Scenario: Fixed newValue diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/Filter_PropertyNotEmpty_NoDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/Filter_PropertyNotEmpty_NoDimensions.feature index 87c80dbd804..95621b6b91a 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/Filter_PropertyNotEmpty_NoDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/Filter_PropertyNotEmpty_NoDimensions.feature @@ -23,13 +23,11 @@ Feature: Filter - Property not empty | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /name1 (has text value set) When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -39,7 +37,6 @@ Feature: Filter - Property not empty | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "Original name1"} | - And the graph projection is fully up to date # Node /name2 (has text value empty) When the command CreateNodeAggregateWithNode is executed with payload: @@ -50,7 +47,6 @@ Feature: Filter - Property not empty | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": ""} | - And the graph projection is fully up to date # no node name (has text value not set) When the command CreateNodeAggregateWithNode is executed with payload: @@ -60,7 +56,6 @@ Feature: Filter - Property not empty | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": null} | - And the graph projection is fully up to date # no node name (has text value not set, and null will be ignored as unset) When the command CreateNodeAggregateWithNode is executed with payload: @@ -70,7 +65,6 @@ Feature: Filter - Property not empty | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {} | - And the graph projection is fully up to date Scenario: PropertyNotEmpty diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/Filter_PropertyValue_NoDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/Filter_PropertyValue_NoDimensions.feature index a3469927d45..40b4d09932f 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/Filter_PropertyValue_NoDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/Filter_PropertyValue_NoDimensions.feature @@ -24,12 +24,10 @@ Feature: Filter - Property Value | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | And I am in workspace "live" - And the graph projection is fully up to date And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /name1 (has text value set) When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -39,7 +37,6 @@ Feature: Filter - Property Value | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "Original name1"} | - And the graph projection is fully up to date # Node /name2 (has text value2) When the command CreateNodeAggregateWithNode is executed with payload: @@ -50,7 +47,6 @@ Feature: Filter - Property Value | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "value2"} | - And the graph projection is fully up to date # no node name (has text value not set, and null will be ignored as unset) When the command CreateNodeAggregateWithNode is executed with payload: @@ -60,7 +56,6 @@ Feature: Filter - Property Value | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": null} | - And the graph projection is fully up to date # no node name (has text value not set) When the command CreateNodeAggregateWithNode is executed with payload: @@ -70,7 +65,6 @@ Feature: Filter - Property Value | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {} | - And the graph projection is fully up to date Scenario: PropertyValue diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/MoveDimensionSpacePoint.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/MoveDimensionSpacePoint.feature index cba219a40f8..f5f34127cc3 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/MoveDimensionSpacePoint.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/MoveDimensionSpacePoint.feature @@ -36,12 +36,10 @@ Feature: Move dimension space point | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | And I am in workspace "live" - And the graph projection is fully up to date And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -49,7 +47,6 @@ Feature: Move dimension space point | nodeTypeName | "Neos.ContentRepository.Testing:Document" | | originDimensionSpacePoint | {"language": "de"} | | parentNodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date Scenario: Success Case - simple @@ -93,7 +90,6 @@ Feature: Move dimension space point | nodeAggregateId | "sir-david-nodenborough" | | coveredDimensionSpacePoint | {"language": "de"} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date # ensure the node is disabled When I am in workspace "live" and dimension space point {"language": "de"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/NodeTypeAdjustment_Dimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/NodeTypeAdjustment_Dimensions.feature index dd77fc64c91..6d8f63210f3 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/NodeTypeAdjustment_Dimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/NodeTypeAdjustment_Dimensions.feature @@ -29,13 +29,11 @@ Feature: Adjust node types with a node migration | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -43,7 +41,6 @@ Feature: Adjust node types with a node migration | nodeTypeName | "Neos.ContentRepository.Testing:Document" | | originDimensionSpacePoint | {"language": "de"} | | parentNodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date ######################## # Actual Test diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/NodeTypeAdjustment_NoDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/NodeTypeAdjustment_NoDimensions.feature index bd8bc50105e..1fa0ea4f0ad 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/NodeTypeAdjustment_NoDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/NodeTypeAdjustment_NoDimensions.feature @@ -27,13 +27,11 @@ Feature: Adjust node types with a node migration | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -41,7 +39,6 @@ Feature: Adjust node types with a node migration | nodeTypeName | "Neos.ContentRepository.Testing:Document" | | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date ######################## # Actual Test diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RemoveNodes_Dimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RemoveNodes_Dimensions.feature index 2c03aa7d782..f8d459e6aa9 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RemoveNodes_Dimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RemoveNodes_Dimensions.feature @@ -26,13 +26,11 @@ Feature: Remove Nodes | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document (in "de") When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -41,7 +39,6 @@ Feature: Remove Nodes | originDimensionSpacePoint | {"language": "de"} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "Original text"} | - And the graph projection is fully up to date # Node /document (in "en") When the command CreateNodeVariant is executed with payload: @@ -49,7 +46,6 @@ Feature: Remove Nodes | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"en"} | - And the graph projection is fully up to date Scenario: Remove nodes in a given dimension space point removes the node with all virtual specializations diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RemoveProperty_NoDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RemoveProperty_NoDimensions.feature index ef9a9cbe68f..7002f446662 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RemoveProperty_NoDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RemoveProperty_NoDimensions.feature @@ -23,13 +23,11 @@ Feature: Remove Property | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -38,7 +36,6 @@ Feature: Remove Property | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "Original text"} | - And the graph projection is fully up to date Scenario: Fixed newValue diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RenameNodeAggregate_Dimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RenameNodeAggregate_Dimensions.feature index b222db6b1f1..5e59e1d3121 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RenameNodeAggregate_Dimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RenameNodeAggregate_Dimensions.feature @@ -26,13 +26,11 @@ Feature: Rename Node Aggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document (in "de") When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -42,7 +40,6 @@ Feature: Rename Node Aggregate | originDimensionSpacePoint | {"language": "de"} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "Original text"} | - And the graph projection is fully up to date # Node /document (in "en") When the command CreateNodeVariant is executed with payload: @@ -50,7 +47,6 @@ Feature: Rename Node Aggregate | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"en"} | - And the graph projection is fully up to date Scenario: Rename Node Aggregate diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RenameProperty_NoDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RenameProperty_NoDimensions.feature index 1856aacb601..02ed7f28624 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RenameProperty_NoDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/RenameProperty_NoDimensions.feature @@ -23,13 +23,11 @@ Feature: Rename Property | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -38,7 +36,6 @@ Feature: Rename Property | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "Original text"} | - And the graph projection is fully up to date Scenario: Fixed newValue diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/StripTagsOnProperty_NoDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/StripTagsOnProperty_NoDimensions.feature index 7ebff06074d..71dbee453bb 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/StripTagsOnProperty_NoDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/EventSourced/Migration/StripTagsOnProperty_NoDimensions.feature @@ -23,13 +23,11 @@ Feature: Strip Tags on Property | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document When the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -38,7 +36,6 @@ Feature: Strip Tags on Property | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"text": "Original

text

"} | - And the graph projection is fully up to date Scenario: Fixed newValue diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeCopying/CopyNode_NoDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeCopying/CopyNode_NoDimensions.feature index 32177b21410..981d0768d1f 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeCopying/CopyNode_NoDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeCopying/CopyNode_NoDimensions.feature @@ -15,7 +15,6 @@ Feature: Copy nodes (without dimensions) | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -51,7 +50,6 @@ Feature: Copy nodes (without dimensions) | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "esquire" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Scenario: Copy When I am in workspace "live" and dimension space point {} @@ -65,5 +63,4 @@ Feature: Copy nodes (without dimensions) | targetSucceedingSiblingnodeAggregateId | null | | nodeAggregateIdMapping | {"sir-nodeward-nodington-iii": "sir-nodeward-nodington-iii-copy"} | - And the graph projection is fully up to date Then I expect node aggregate identifier "sir-nodeward-nodington-iii-copy" to lead to node cs-identifier;sir-nodeward-nodington-iii-copy;{} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodePropertyConversion/NodePropertyConversion.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodePropertyConversion/NodePropertyConversion.feature index cdab8e20bfd..cef36651b3e 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodePropertyConversion/NodePropertyConversion.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodePropertyConversion/NodePropertyConversion.feature @@ -16,13 +16,11 @@ Feature: Node Property Conversion | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: DateTime objects at Node Creation When the command CreateNodeAggregateWithNode is executed with payload: @@ -33,7 +31,6 @@ Feature: Node Property Conversion | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"dateProperty": "Date:1997-07-16T19:20:30+05:00"} | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node cs-identifier;nody-mc-nodeface;{} @@ -49,14 +46,12 @@ Feature: Node Property Conversion | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"dateProperty": "Date:1997-07-16T19:20:30+05:00"} | - And the graph projection is fully up to date When the command SetNodeProperties is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {} | | propertyValues | {"dateProperty": "Date:1997-07-19T19:20:30+05:00"} | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node cs-identifier;nody-mc-nodeface;{} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRemoval/RemoveNodeAggregateAfterDisabling.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRemoval/RemoveNodeAggregateAfterDisabling.feature index 7ce7deadf6a..0af2e5895a5 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRemoval/RemoveNodeAggregateAfterDisabling.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRemoval/RemoveNodeAggregateAfterDisabling.feature @@ -23,13 +23,11 @@ Feature: Disable a node aggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | preceding-nodenborough | Neos.ContentRepository.Testing:Document | lady-eleonode-rootford | preceding-document | @@ -41,7 +39,6 @@ Feature: Disable a node aggregate | sourceNodeAggregateId | "preceding-nodenborough" | | referenceName | "references" | | references | [{"target": "sir-david-nodenborough"}] | - And the graph projection is fully up to date Scenario: Restore a hidden node by removing and recreating it Given the command DisableNodeAggregate is executed with payload: @@ -54,7 +51,6 @@ Feature: Disable a node aggregate | nodeAggregateId | "nody-mc-nodeface" | | affectedOccupiedDimensionSpacePoints | [{}] | | affectedCoveredDimensionSpacePoints | [{}] | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | @@ -64,7 +60,6 @@ Feature: Disable a node aggregate | parentNodeAggregateId | "sir-david-nodenborough" | | nodeName | "child-document" | - When the graph projection is fully up to date And I am in workspace "live" Then I expect the graph projection to consist of exactly 5 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRemoval/RemoveNodeAggregateWithDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRemoval/RemoveNodeAggregateWithDimensions.feature index ae829e65373..d1d60d3091c 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRemoval/RemoveNodeAggregateWithDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRemoval/RemoveNodeAggregateWithDimensions.feature @@ -19,13 +19,11 @@ Feature: Remove NodeAggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-nodesworth" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # We have to add another node since root nodes are in all dimension space points and thus cannot be varied # Node /document And the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: @@ -34,7 +32,6 @@ Feature: Remove NodeAggregate | nodeTypeName | "Neos.ContentRepository.Testing:Document" | | parentNodeAggregateId | "lady-eleonode-nodesworth" | | nodeName | "document" | - And the graph projection is fully up to date # We also want to add a child node to make sure it is correctly removed when the parent is removed # Node /document/child-document And the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: @@ -43,13 +40,11 @@ Feature: Remove NodeAggregate | nodeTypeName | "Neos.ContentRepository.Testing:Document" | | parentNodeAggregateId | "nody-mc-nodeface" | | nodeName | "child-document" | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date ######################## # Section: EXTRA testcases @@ -60,7 +55,6 @@ Feature: Remove NodeAggregate | nodeAggregateId | "nody-mc-nodeface" | | nodeVariantSelectionStrategy | "allVariants" | | coveredDimensionSpacePoint | {"language":"de"} | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 1 node And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph @@ -81,7 +75,6 @@ Feature: Remove NodeAggregate | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date And I am in workspace "user-test" When the command RemoveNodeAggregate is executed with payload: @@ -89,7 +82,6 @@ Feature: Remove NodeAggregate | nodeAggregateId | "nody-mc-nodeface" | | nodeVariantSelectionStrategy | "allVariants" | | coveredDimensionSpacePoint | {"language":"de"} | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRemoval/RemoveNodesFromAggregate.wip b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRemoval/RemoveNodesFromAggregate.wip index 9d5338d22a4..3fe26bf8051 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRemoval/RemoveNodesFromAggregate.wip +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRemoval/RemoveNodesFromAggregate.wip @@ -29,7 +29,6 @@ Feature: Remove Nodes from Aggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | contentStreamId | "live-cs-identifier" | @@ -65,7 +64,6 @@ Feature: Remove Nodes from Aggregate | originDimensionSpacePoint | {"language":"de"} | | parentNodeAggregateId | "nodimus-prime" | | nodeName | "grandchild-document" | - And the graph projection is fully up to date ######################## # Section: EXTRA testcases @@ -96,7 +94,6 @@ Feature: Remove Nodes from Aggregate | contentStreamId | "live-cs-identifier" | | nodeAggregateId | "nodasaurus-rex" | | dimensionSpacePointSet | [{"language":"de"},{"language":"gsw"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 3 nodes And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph @@ -121,7 +118,6 @@ Feature: Remove Nodes from Aggregate | contentStreamId | "live-cs-identifier" | | nodeAggregateId | "nodasaurus-rex" | | dimensionSpacePointSet | [{"language":"gsw"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph @@ -152,7 +148,6 @@ Feature: Remove Nodes from Aggregate | contentStreamId | "live-cs-identifier" | | nodeAggregateId | "nody-mc-nodeface" | | dimensionSpacePointSet | [{"language":"de"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 1 nodes And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph @@ -172,7 +167,6 @@ Feature: Remove Nodes from Aggregate | contentStreamId | "live-cs-identifier" | | nodeAggregateId | "nody-mc-nodeface" | | dimensionSpacePointSet | [{"language":"gsw"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph @@ -200,13 +194,11 @@ Feature: Remove Nodes from Aggregate | Key | Value | | contentStreamId | "user-cs-identifier" | | sourceContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date When the command RemoveNodesFromAggregate was published with payload: | Key | Value | | contentStreamId | "user-cs-identifier" | | nodeAggregateId | "nodasaurus-rex" | | dimensionSpacePointSet | [{"language":"de"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph @@ -255,14 +247,12 @@ Feature: Remove Nodes from Aggregate | Key | Value | | contentStreamId | "user-cs-identifier" | | sourceContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date When the command RemoveNodesFromAggregate was published with payload: | Key | Value | | contentStreamId | "user-cs-identifier" | | nodeAggregateId | "nodimus-prime" | | dimensionSpacePointSet | [{"language":"gsw"}] | - And the graph projection is fully up to date When I am in content stream "user-cs-identifier" and dimension space point {"language":"de"} Then I expect a node "doc-identifier-de" to exist in the graph projection @@ -297,14 +287,12 @@ Feature: Remove Nodes from Aggregate | Key | Value | | contentStreamId | "user-cs-identifier" | | sourceContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date When the command RemoveNodesFromAggregate was published with payload: | Key | Value | | contentStreamId | "user-cs-identifier" | | nodeAggregateId | "nody-mc-nodeface" | | dimensionSpacePointSet | [{"language":"de"},{"language":"gsw"}] | - And the graph projection is fully up to date When I am in content stream "user-cs-identifier" and dimension space point {"language":"de"} Then I expect a node "doc-identifier-de" not to exist in the graph projection @@ -339,14 +327,12 @@ Feature: Remove Nodes from Aggregate | Key | Value | | contentStreamId | "user-cs-identifier" | | sourceContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date When the command RemoveNodesFromAggregate was published with payload: | Key | Value | | contentStreamId | "user-cs-identifier" | | nodeAggregateId | "nody-mc-nodeface" | | dimensionSpacePointSet | [{"language":"gsw"}] | - And the graph projection is fully up to date When I am in content stream "user-cs-identifier" and dimension space point {"language":"de"} Then I expect a node "doc-identifier-de" to exist in the graph projection diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRetyping/ChangeNodeAggregateType_BasicErrorCases.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRetyping/ChangeNodeAggregateType_BasicErrorCases.feature index 244892ae790..cefbbf62dd1 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRetyping/ChangeNodeAggregateType_BasicErrorCases.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRetyping/ChangeNodeAggregateType_BasicErrorCases.feature @@ -49,13 +49,11 @@ Feature: Change node aggregate type - basic error cases | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | @@ -65,7 +63,6 @@ Feature: Change node aggregate type - basic error cases | nodeName | "parent" | | initialPropertyValues | {} | - And the graph projection is fully up to date Scenario: Try to change the node aggregate type on a non-existing content stream When the command ChangeNodeAggregateType was published with payload and exceptions are caught: @@ -100,7 +97,6 @@ Feature: Change node aggregate type - basic error cases | parentNodeAggregateId | "sir-david-nodenborough" | | nodeName | "parent" | | initialPropertyValues | {} | - And the graph projection is fully up to date When the command ChangeNodeAggregateType was published with payload and exceptions are caught: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | @@ -117,7 +113,6 @@ Feature: Change node aggregate type - basic error cases | nodeName | "parent2" | | initialPropertyValues | {} | | tetheredDescendantNodeAggregateIds | {"autocreated": "autocreated-child"} | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | @@ -126,7 +121,6 @@ Feature: Change node aggregate type - basic error cases | originDimensionSpacePoint | {"language":"de"} | | parentNodeAggregateId | "autocreated-child" | | initialPropertyValues | {} | - And the graph projection is fully up to date When the command ChangeNodeAggregateType was published with payload and exceptions are caught: | Key | Value | @@ -145,7 +139,6 @@ Feature: Change node aggregate type - basic error cases | nodeName | "parent2" | | initialPropertyValues | {} | | tetheredDescendantNodeAggregateIds | {"autocreated": "nody-mc-nodeface"} | - And the graph projection is fully up to date When the command ChangeNodeAggregateType was published with payload and exceptions are caught: | Key | Value | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRetyping/ChangeNodeAggregateType_DeleteStrategy.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRetyping/ChangeNodeAggregateType_DeleteStrategy.feature index 26f82f07947..27bfacc0168 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRetyping/ChangeNodeAggregateType_DeleteStrategy.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRetyping/ChangeNodeAggregateType_DeleteStrategy.feature @@ -65,13 +65,11 @@ Feature: Change node aggregate type - behavior of DELETE strategy | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | @@ -82,7 +80,6 @@ Feature: Change node aggregate type - behavior of DELETE strategy | nodeName | "parent" | | initialPropertyValues | {} | - And the graph projection is fully up to date Scenario: Try to change to a node type that disallows already present children with the delete conflict resolution strategy When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: @@ -91,14 +88,12 @@ Feature: Change node aggregate type - behavior of DELETE strategy | nodeTypeName | "Neos.ContentRepository.Testing:NodeTypeA" | | originDimensionSpacePoint | {"language":"de"} | | parentNodeAggregateId | "sir-david-nodenborough" | - And the graph projection is fully up to date When the command ChangeNodeAggregateType was published with payload: | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | | newNodeTypeName | "Neos.ContentRepository.Testing:ParentNodeTypeB" | | strategy | "delete" | - And the graph projection is fully up to date # the type has changed When I am in workspace "live" and dimension space point {"language":"de"} @@ -119,7 +114,6 @@ Feature: Change node aggregate type - behavior of DELETE strategy | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "parent2" | | tetheredDescendantNodeAggregateIds | {"autocreated": "autocreated-child"} | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | @@ -128,14 +122,12 @@ Feature: Change node aggregate type - behavior of DELETE strategy | originDimensionSpacePoint | {"language":"de"} | | parentNodeAggregateId | "autocreated-child" | | initialPropertyValues | {} | - And the graph projection is fully up to date When the command ChangeNodeAggregateType was published with payload: | Key | Value | | nodeAggregateId | "parent2-na" | | newNodeTypeName | "Neos.ContentRepository.Testing:ParentNodeTypeB" | | strategy | "delete" | - And the graph projection is fully up to date # the type has changed When I am in workspace "live" and dimension space point {"language":"de"} @@ -163,14 +155,12 @@ Feature: Change node aggregate type - behavior of DELETE strategy | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {} | | tetheredDescendantNodeAggregateIds | { "child-of-type-a": "child-of-type-a-id"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "nodea-identifier-de" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date When the command ChangeNodeAggregateType was published with payload: | Key | Value | @@ -178,7 +168,6 @@ Feature: Change node aggregate type - behavior of DELETE strategy | newNodeTypeName | "Neos.ContentRepository.Testing:NodeTypeB" | | strategy | "delete" | | tetheredDescendantNodeAggregateIds | { "child-of-type-b": "child-of-type-b-id"} | - And the graph projection is fully up to date # the type has changed When I am in workspace "live" and dimension space point {"language":"de"} @@ -202,14 +191,12 @@ Feature: Change node aggregate type - behavior of DELETE strategy | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {} | | tetheredDescendantNodeAggregateIds | { "child-of-type-a": "child-of-type-a-id"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "nodea-identifier-de" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date When the command ChangeNodeAggregateType was published with payload: | Key | Value | @@ -217,7 +204,6 @@ Feature: Change node aggregate type - behavior of DELETE strategy | newNodeTypeName | "Neos.ContentRepository.Testing:NodeTypeB" | | strategy | "delete" | | tetheredDescendantNodeAggregateIds | { "child-of-type-b": "child-of-type-b-id"} | - And the graph projection is fully up to date # the type has changed When I am in workspace "live" and dimension space point {"language":"de"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRetyping/ChangeNodeAggregateType_HappyPathStrategy.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRetyping/ChangeNodeAggregateType_HappyPathStrategy.feature index 07a3e086e20..01d9b8c9351 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRetyping/ChangeNodeAggregateType_HappyPathStrategy.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeRetyping/ChangeNodeAggregateType_HappyPathStrategy.feature @@ -58,13 +58,11 @@ Feature: Change node aggregate type - behavior of HAPPYPATH strategy | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | @@ -75,7 +73,6 @@ Feature: Change node aggregate type - behavior of HAPPYPATH strategy | nodeName | "parent" | | initialPropertyValues | {} | - And the graph projection is fully up to date Scenario: Try to change to a node type that disallows already present children with the HAPPYPATH conflict resolution strategy When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: @@ -84,7 +81,6 @@ Feature: Change node aggregate type - behavior of HAPPYPATH strategy | nodeTypeName | "Neos.ContentRepository.Testing:NodeTypeA" | | originDimensionSpacePoint | {"language":"de"} | | parentNodeAggregateId | "sir-david-nodenborough" | - And the graph projection is fully up to date When the command ChangeNodeAggregateType was published with payload and exceptions are caught: | Key | Value | @@ -102,7 +98,6 @@ Feature: Change node aggregate type - behavior of HAPPYPATH strategy | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "parent2" | | tetheredDescendantNodeAggregateIds | {"autocreated": "autocreated-child"} | - And the graph projection is fully up to date When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | @@ -111,7 +106,6 @@ Feature: Change node aggregate type - behavior of HAPPYPATH strategy | originDimensionSpacePoint | {"language":"de"} | | parentNodeAggregateId | "autocreated-child" | | initialPropertyValues | {} | - And the graph projection is fully up to date When the command ChangeNodeAggregateType was published with payload and exceptions are caught: | Key | Value | @@ -129,14 +123,12 @@ Feature: Change node aggregate type - behavior of HAPPYPATH strategy | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {} | | tetheredDescendantNodeAggregateIds | { "child-of-type-a": "child-of-type-a-id"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "nodea-identifier-de" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date When the command ChangeNodeAggregateType was published with payload: | Key | Value | @@ -144,7 +136,6 @@ Feature: Change node aggregate type - behavior of HAPPYPATH strategy | newNodeTypeName | "Neos.ContentRepository.Testing:NodeTypeB" | | strategy | "happypath" | | tetheredDescendantNodeAggregateIds | { "child-of-type-b": "child-of-type-b-id"} | - And the graph projection is fully up to date # the type has changed When I am in workspace "live" and dimension space point {"language":"de"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/AncestorNodes.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/AncestorNodes.feature index 2af6ab93c19..ab540e0950a 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/AncestorNodes.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/AncestorNodes.feature @@ -50,13 +50,11 @@ Feature: Find and count nodes using the findAncestorNodes and countAncestorNodes | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -75,12 +73,10 @@ Feature: Find and count nodes using the findAncestorNodes and countAncestorNodes | Key | Value | | nodeAggregateId | "a2a2a" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date And the command DisableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "a2b" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: # findAncestorNodes queries without results diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/ChildNodes.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/ChildNodes.feature index c842280f9be..45531933113 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/ChildNodes.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/ChildNodes.feature @@ -64,13 +64,11 @@ Feature: Find and count nodes using the findChildNodes and countChildNodes queri | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -94,7 +92,6 @@ Feature: Find and count nodes using the findChildNodes and countChildNodes queri | Key | Value | | nodeAggregateId | "a2a3" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: # Child nodes without filter diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/ClosestNode.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/ClosestNode.feature index 22b1ef2eb29..733fe8e5505 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/ClosestNode.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/ClosestNode.feature @@ -50,13 +50,11 @@ Feature: Find nodes using the findClosestNode query | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -75,12 +73,10 @@ Feature: Find nodes using the findClosestNode query | Key | Value | | nodeAggregateId | "a2a2a" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date And the command DisableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "a2b" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: # findClosestNode queries without results diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/CountNodes.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/CountNodes.feature index 4f2530014ce..e035f81355e 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/CountNodes.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/CountNodes.feature @@ -52,13 +52,11 @@ Feature: Find nodes using the countNodes query | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -80,6 +78,5 @@ Feature: Find nodes using the countNodes query | Key | Value | | nodeAggregateId | "a2a1" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date # NOTE: countNodes() counts _all_ nodes, even disabled ones And I execute the countNodes query I expect the result to be 12 diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/DescendantNodes.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/DescendantNodes.feature index d3dd853dcb1..40f16bc79e5 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/DescendantNodes.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/DescendantNodes.feature @@ -64,13 +64,11 @@ Feature: Find and count nodes using the findDescendantNodes and countDescendantN | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -94,7 +92,6 @@ Feature: Find and count nodes using the findDescendantNodes and countDescendantN | Key | Value | | nodeAggregateId | "a2a2a" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindNodeById.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindNodeById.feature index 3891287536c..e347b748f8e 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindNodeById.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindNodeById.feature @@ -63,13 +63,11 @@ Feature: Find nodes using the findNodeById query | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -85,7 +83,6 @@ Feature: Find nodes using the findNodeById query | Key | Value | | nodeAggregateId | "a2a1" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: # findNodeById queries without result diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindNodeByPath.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindNodeByPath.feature index 0b5fd8d9ab6..72e999c647e 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindNodeByPath.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindNodeByPath.feature @@ -66,13 +66,11 @@ Feature: Find nodes using the findNodeByPath query | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -89,7 +87,6 @@ Feature: Find nodes using the findNodeByPath query | Key | Value | | nodeAggregateId | "a2a2" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: # absolute paths without result diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindNodeByPathAsNodeName.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindNodeByPathAsNodeName.feature index 93e2a7d9d6b..1d2d41a044e 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindNodeByPathAsNodeName.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindNodeByPathAsNodeName.feature @@ -63,13 +63,11 @@ Feature: Find nodes using the findNodeByPath query with node name as path argume | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -86,7 +84,6 @@ Feature: Find nodes using the findNodeByPath query with node name as path argume | Key | Value | | nodeAggregateId | "a2a2" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: # findNodeByPath queries without results diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindParentNode.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindParentNode.feature index c830b3ceaef..7a447789dd2 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindParentNode.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindParentNode.feature @@ -63,13 +63,11 @@ Feature: Find nodes using the findParentNodes query | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -85,7 +83,6 @@ Feature: Find nodes using the findParentNodes query | Key | Value | | nodeAggregateId | "a2a" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: # findParentNode queries without result diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindRootNodeByType.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindRootNodeByType.feature index e74a0ba467a..50150ad2deb 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindRootNodeByType.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindRootNodeByType.feature @@ -23,18 +23,15 @@ Feature: Find root nodes by type | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootfords-evil-sister" | | nodeTypeName | "Neos.ContentRepository:AnotherRoot" | - And the graph projection is fully up to date Scenario: When I execute the findRootNodeByType query for node type "Neos.ContentRepository:Root" I expect the node "lady-eleonode-rootford" to be returned diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindSubtree.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindSubtree.feature index 1df9aaf8820..b025d92398c 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindSubtree.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/FindSubtree.feature @@ -52,13 +52,11 @@ Feature: Find nodes using the findSubtree query | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -76,7 +74,6 @@ Feature: Find nodes using the findSubtree query | Key | Value | | nodeAggregateId | "a2a2a" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: # findSubtree queries without results diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/References.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/References.feature index 488bb7f4bc4..3e67ec9f6d1 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/References.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/References.feature @@ -73,13 +73,11 @@ Feature: Find and count references and their target nodes using the findReferenc | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -143,7 +141,6 @@ Feature: Find and count references and their target nodes using the findReferenc | Key | Value | | nodeAggregateId | "a2a3" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: # findReferences queries without results diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/RetrieveNodePath.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/RetrieveNodePath.feature index e90515a436b..137d152ccb3 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/RetrieveNodePath.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/RetrieveNodePath.feature @@ -53,13 +53,11 @@ Feature: Find nodes using the retrieveNodePath query | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -85,7 +83,6 @@ Feature: Find nodes using the retrieveNodePath query | Key | Value | | nodeAggregateId | "b1" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: # retrieveNodePath queries without result diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/SiblingNodes.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/SiblingNodes.feature index bf88395dede..fed67216521 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/SiblingNodes.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/SiblingNodes.feature @@ -63,13 +63,11 @@ Feature: Find sibling nodes using the findPrecedingSiblingNodes and findSucceedi | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -90,7 +88,6 @@ Feature: Find sibling nodes using the findPrecedingSiblingNodes and findSucceedi | Key | Value | | nodeAggregateId | "a2a2" | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date Scenario: # findPrecedingSiblingNodes queries without result diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/Timestamps.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/Timestamps.feature index 4487f84325f..87c484a5c00 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/Timestamps.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/NodeTraversal/Timestamps.feature @@ -74,13 +74,11 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la | baseWorkspaceName | "review" | | newContentStreamId | "cs-user" | | workspaceOwner | "some-user" | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | nodeTypeName | parentNodeAggregateId | initialPropertyValues | tetheredDescendantNodeAggregateIds | | home | home | Neos.ContentRepository.Testing:Homepage | lady-eleonode-rootford | {} | {"terms": "terms", "contact": "contact"} | @@ -92,7 +90,6 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la | nodeAggregateId | "a" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"ch"} | - And the graph projection is fully up to date Scenario: NodePropertiesWereSet events update last modified timestamps When the current date and time is "2023-03-16T13:00:00+01:00" @@ -102,7 +99,6 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la | originDimensionSpacePoint | {"language": "ch"} | | nodeAggregateId | "a" | | propertyValues | {"text": "Changed"} | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {"language":"de"} Then I expect the node "a" to have the following timestamps: | created | originalCreated | lastModified | originalLastModified | @@ -120,7 +116,6 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la | workspaceName | "user-test" | | nodeAggregateId | "a" | | newNodeName | "a-renamed" | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {"language":"de"} Then I expect the node "a" to have the following timestamps: | created | originalCreated | lastModified | originalLastModified | @@ -136,18 +131,15 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la And the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | - And the graph projection is fully up to date And the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "review" | - And the graph projection is fully up to date And the current date and time is "2023-03-16T14:00:00+01:00" And the command "ChangeNodeAggregateName" is executed with payload: | Key | Value | | workspaceName | "user-test" | | nodeAggregateId | "a" | | newNodeName | "a-renamed" | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {"language":"de"} Then I expect the node "a" to have the following timestamps: @@ -188,7 +180,6 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la | sourceNodeAggregateId | "a" | | referenceName | "ref" | | references | [{"target": "b"}] | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {"language":"de"} Then I expect the node "a" to have the following timestamps: | created | originalCreated | lastModified | originalLastModified | @@ -213,7 +204,6 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la | nodeAggregateId | "a" | | newNodeTypeName | "Neos.ContentRepository.Testing:SpecialPage" | | strategy | "happypath" | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {"language":"de"} Then I expect the node "a" to have the following timestamps: | created | originalCreated | lastModified | originalLastModified | @@ -231,7 +221,6 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la | nodeAggregateId | "home" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"en"} | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {"language":"de"} Then I expect the node "home" to have the following timestamps: | created | originalCreated | lastModified | originalLastModified | @@ -249,7 +238,6 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la | nodeAggregateId | "home" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"mul"} | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {"language":"de"} Then I expect the node "home" to have the following timestamps: | created | originalCreated | lastModified | originalLastModified | @@ -270,7 +258,6 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la | relationDistributionStrategy | "gatherSpecializations" | | nodeAggregateId | "a" | | newParentNodeAggregateId | "b" | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {"language":"de"} Then I expect the node "a" to have the following timestamps: | created | originalCreated | lastModified | originalLastModified | @@ -286,7 +273,6 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la And the command UpdateRootNodeAggregateDimensions is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {"language":"de"} Then I expect the node "a" to have the following timestamps: | created | originalCreated | lastModified | originalLastModified | @@ -305,7 +291,6 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la | coveredDimensionSpacePoint | {"language": "ch"} | | nodeAggregateId | "a" | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {"language":"de"} And VisibilityConstraints are set to "withoutRestrictions" Then I expect the node "a" to have the following timestamps: @@ -324,7 +309,6 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la | coveredDimensionSpacePoint | {"language": "ch"} | | nodeAggregateId | "a" | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {"language":"de"} Then I expect the node "a" to have the following timestamps: | created | originalCreated | lastModified | originalLastModified | @@ -344,12 +328,10 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la | nodeAggregateId | "a" | | propertyValues | {"text": "Changed"} | And I execute the findNodeById query for node aggregate id "non-existing" I expect no node to be returned - And the graph projection is fully up to date And the current date and time is "2023-03-16T14:00:00+01:00" And the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | - And the graph projection is fully up to date And I am in workspace "user-test" Then I expect the node "a" to have the following timestamps: @@ -371,7 +353,6 @@ Feature: Behavior of Node timestamp properties "created", "originalCreated", "la And the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "review" | - And the graph projection is fully up to date And I am in workspace "live" Then I expect the node "a" to have the following timestamps: | created | originalCreated | lastModified | originalLastModified | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/AllNodesAreConnectedToARootNodePerSubgraph.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/AllNodesAreConnectedToARootNodePerSubgraph.feature index d9c1c1604fc..42117f25546 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/AllNodesAreConnectedToARootNodePerSubgraph.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/AllNodesAreConnectedToARootNodePerSubgraph.feature @@ -20,7 +20,6 @@ Feature: Run projection integrity violation detection regarding root connection | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date Scenario: Create a cycle When the event RootNodeAggregateWithNodeWasCreated was published with payload: @@ -50,14 +49,12 @@ Feature: Run projection integrity violation detection regarding root connection | parentNodeAggregateId | "sir-david-nodenborough" | | nodeName | "child-document" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date And the event NodeAggregateWasMoved was published with payload: | Key | Value | | contentStreamId | "cs-identifier" | | nodeAggregateId | "sir-david-nodenborough" | | newParentNodeAggregateId | "nody-mc-nodeface" | | succeedingSiblingsForCoverage | [{"dimensionSpacePoint":{"language":"de"},"nodeAggregateId": null},{"dimensionSpacePoint":{"language":"gsw"},"nodeAggregateId": null}] | - And the graph projection is fully up to date And I run integrity violation detection # one error per subgraph Then I expect the integrity violation detection result to contain exactly 2 errors diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/AllNodesCoverTheirOrigin.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/AllNodesCoverTheirOrigin.feature index adea8b499c5..32ae377655e 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/AllNodesCoverTheirOrigin.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/AllNodesCoverTheirOrigin.feature @@ -19,13 +19,11 @@ Feature: Run projection integrity violation detection to find nodes that do not | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: Create a node not covering its origin When the event NodeAggregateWithNodeWasCreated was published with payload: @@ -48,7 +46,6 @@ Feature: Run projection integrity violation detection to find nodes that do not | parentNodeAggregateId | "sir-david-nodenborough" | | nodeName | "document" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date And I run integrity violation detection Then I expect the integrity violation detection result to contain exactly 1 errors And I expect integrity violation detection result error number 1 to have code 1597828607 diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/IntactContentGraph.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/IntactContentGraph.feature index 01276ad9f20..88f0b1e18b9 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/IntactContentGraph.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/IntactContentGraph.feature @@ -28,7 +28,6 @@ Feature: Create an intact content graph and run integrity violation detection | nodeTypeName | "Neos.ContentRepository:Root" | | coveredDimensionSpacePoints | [{"language":"de"},{"language":"gsw"}] | | nodeAggregateClassification | "root" | - And the graph projection is fully up to date And the event NodeAggregateWithNodeWasCreated was published with payload: | Key | Value | | contentStreamId | "cs-identifier" | @@ -66,6 +65,5 @@ Feature: Create an intact content graph and run integrity violation detection | affectedSourceOriginDimensionSpacePoints | [{"language":"de"}] | | referenceName | "referenceProperty" | | references | [{"targetNodeAggregateId":"sir-david-nodenborough", "properties":null}] | - And the graph projection is fully up to date And I run integrity violation detection Then I expect the integrity violation detection result to contain exactly 0 errors diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/NodeAggregateIdentifiersAreUniquePerSubgraph.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/NodeAggregateIdentifiersAreUniquePerSubgraph.feature index 1d25c75ec68..3214306c7a7 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/NodeAggregateIdentifiersAreUniquePerSubgraph.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/NodeAggregateIdentifiersAreUniquePerSubgraph.feature @@ -19,13 +19,11 @@ Feature: Create two nodes with the same node aggregate identifier in the same su | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: Create two node variants in the same subgraph When the event NodeAggregateWithNodeWasCreated was published with payload: @@ -48,7 +46,6 @@ Feature: Create two nodes with the same node aggregate identifier in the same su | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "document" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date And I run integrity violation detection # one error per covered dimension space point Then I expect the integrity violation detection result to contain exactly 2 errors diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/NodeAggregatesAreConsistentlyClassifiedPerContentStream.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/NodeAggregatesAreConsistentlyClassifiedPerContentStream.feature index 607bcde6626..a1dab9bff88 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/NodeAggregatesAreConsistentlyClassifiedPerContentStream.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/NodeAggregatesAreConsistentlyClassifiedPerContentStream.feature @@ -19,13 +19,11 @@ Feature: Run projection integrity violation detection regarding node aggregate c | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: Create node variants of different type When the event NodeAggregateWithNodeWasCreated was published with payload: @@ -48,7 +46,6 @@ Feature: Run projection integrity violation detection regarding node aggregate c | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "document" | | nodeAggregateClassification | "tethered" | - And the graph projection is fully up to date And I run integrity violation detection Then I expect the integrity violation detection result to contain exactly 1 errors And I expect integrity violation detection result error number 1 to have code 1597825384 diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/NodeAggregatesAreConsistentlyTypedPerContentStream.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/NodeAggregatesAreConsistentlyTypedPerContentStream.feature index af45832048d..c4ce8794373 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/NodeAggregatesAreConsistentlyTypedPerContentStream.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/NodeAggregatesAreConsistentlyTypedPerContentStream.feature @@ -21,13 +21,11 @@ Feature: Run projection integrity violation detection regarding node aggregate t | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: Create node variants of different type When the event NodeAggregateWithNodeWasCreated was published with payload: @@ -50,7 +48,6 @@ Feature: Run projection integrity violation detection regarding node aggregate t | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "document" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date And I run integrity violation detection Then I expect the integrity violation detection result to contain exactly 1 errors And I expect integrity violation detection result error number 1 to have code 1597747062 diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/ReferenceIntegrityIsProvided.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/ReferenceIntegrityIsProvided.feature index 56093467cf7..12401f354cc 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/ReferenceIntegrityIsProvided.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/ProjectionIntegrityViolationDetection/ReferenceIntegrityIsProvided.feature @@ -19,7 +19,6 @@ Feature: Run integrity violation detection regarding reference relations | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language":"de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -34,7 +33,6 @@ Feature: Run integrity violation detection regarding reference relations | coveredDimensionSpacePoints | [{"language":"de"}] | | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Scenario: Reference a non-existing node aggregate When the event NodeReferencesWereSet was published with payload: @@ -44,7 +42,6 @@ Feature: Run integrity violation detection regarding reference relations | affectedSourceOriginDimensionSpacePoints | [{"language":"de"}] | | referenceName | "referenceProperty" | | references | [{"targetNodeAggregateId":"anthony-destinode", "properties":null}] | - And the graph projection is fully up to date And I run integrity violation detection Then I expect the integrity violation detection result to contain exactly 1 error And I expect integrity violation detection result error number 1 to have code 1597919585 @@ -66,7 +63,6 @@ Feature: Run integrity violation detection regarding reference relations | affectedSourceOriginDimensionSpacePoints | [{"language":"de"}] | | referenceName | "referenceProperty" | | references | [{"targetNodeAggregateId":"anthony-destinode", "properties":null}] | - And the graph projection is fully up to date And I run integrity violation detection Then I expect the integrity violation detection result to contain exactly 1 error And I expect integrity violation detection result error number 1 to have code 1597919585 diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/RootNodeAggregateDimensionUpdates/UpdateRootNodeAggregateDimensions_WithDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/RootNodeAggregateDimensionUpdates/UpdateRootNodeAggregateDimensions_WithDimensions.feature index b18e736a678..71a7a17abd7 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/RootNodeAggregateDimensionUpdates/UpdateRootNodeAggregateDimensions_WithDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/RootNodeAggregateDimensionUpdates/UpdateRootNodeAggregateDimensions_WithDimensions.feature @@ -19,7 +19,6 @@ Feature: Update Root Node aggregate dimensions | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -39,7 +38,6 @@ Feature: Update Root Node aggregate dimensions And event metadata at index 1 is: | Key | Expected | - When the graph projection is fully up to date Then I expect the node aggregate "lady-eleonode-rootford" to exist And I expect this node aggregate to be classified as "root" And I expect this node aggregate to be of type "Neos.ContentRepository:Root" @@ -74,7 +72,6 @@ Feature: Update Root Node aggregate dimensions Scenario: Adding a dimension and updating the root node works - When the graph projection is fully up to date Given I change the content dimensions in content repository "default" to: | Identifier | Values | Generalizations | | language | mul, de, en | | @@ -98,7 +95,6 @@ Feature: Update Root Node aggregate dimensions And event metadata at index 1 is: | Key | Expected | - When the graph projection is fully up to date Then I expect the node aggregate "lady-eleonode-rootford" to exist And I expect this node aggregate to be classified as "root" And I expect this node aggregate to be of type "Neos.ContentRepository:Root" @@ -138,14 +134,12 @@ Feature: Update Root Node aggregate dimensions Scenario: Adding a dimension updating the root node, removing dimension, updating the root node, works (dimension gone again) - When the graph projection is fully up to date Given I change the content dimensions in content repository "default" to: | Identifier | Values | Generalizations | | language | mul, de, en | | And the command UpdateRootNodeAggregateDimensions is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date # now, the root node exists in "en" When I am in dimension space point {"language":"en"} @@ -159,7 +153,6 @@ Feature: Update Root Node aggregate dimensions And the command UpdateRootNodeAggregateDimensions is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date # now, the root node should not exist anymore in "en" When I am in dimension space point {"language":"en"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/DimensionMismatch.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/DimensionMismatch.feature index 21d602c5891..295aee3f6f3 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/DimensionMismatch.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/DimensionMismatch.feature @@ -24,13 +24,11 @@ Feature: Dimension mismatch | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language": "en"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: Generalization detection # Node /document @@ -40,7 +38,6 @@ Feature: Dimension mismatch | nodeTypeName | "Neos.ContentRepository.Testing:Document" | | originDimensionSpacePoint | {"language": "en"} | | parentNodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date When I change the content dimensions in content repository "default" to: | Identifier | Values | Generalizations | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/DisallowedChildNode.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/DisallowedChildNode.feature index 8272d781e12..bc08fc8725f 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/DisallowedChildNode.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/DisallowedChildNode.feature @@ -30,7 +30,6 @@ Feature: Remove disallowed Child Nodes and grandchild nodes | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -59,7 +58,6 @@ Feature: Remove disallowed Child Nodes and grandchild nodes | nodeName | "sub" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Then I expect no needed structure adjustments for type "Neos.ContentRepository:Root" Then I expect no needed structure adjustments for type "Neos.ContentRepository.Testing:Document" Then I expect no needed structure adjustments for type "Neos.ContentRepository.Testing:SubDocument" @@ -120,7 +118,6 @@ Feature: Remove disallowed Child Nodes and grandchild nodes | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -149,7 +146,6 @@ Feature: Remove disallowed Child Nodes and grandchild nodes | nodeName | "sub" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Then I expect no needed structure adjustments for type "Neos.ContentRepository:Root" Then I expect no needed structure adjustments for type "Neos.ContentRepository.Testing:Document" Then I expect no needed structure adjustments for type "Neos.ContentRepository.Testing:SubDocument" diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/DisallowedChildNodesAndTetheredNodes.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/DisallowedChildNodesAndTetheredNodes.feature index 8fcc7e9a361..1c61677ad9d 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/DisallowedChildNodesAndTetheredNodes.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/DisallowedChildNodesAndTetheredNodes.feature @@ -30,13 +30,11 @@ Feature: Remove disallowed Child Nodes and grandchild nodes | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | | nody-mc-nodeface | lady-eleonode-rootford | Neos.ContentRepository.Testing:Document | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/Properties.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/Properties.feature index 24952a84ece..9b63194f989 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/Properties.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/Properties.feature @@ -24,13 +24,11 @@ Feature: Properties | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Node /document When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | @@ -38,7 +36,6 @@ Feature: Properties | nodeTypeName | "Neos.ContentRepository.Testing:Document" | | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date Then I expect no needed structure adjustments for type "Neos.ContentRepository.Testing:Document" Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node cs-identifier;sir-david-nodenborough;{} @@ -103,7 +100,6 @@ Feature: Properties | nodeAggregateId | "sir-david-nodenborough" | | originDimensionSpacePoint | {} | | propertyValues | {"otherProp": ""} | - And the graph projection is fully up to date Then I expect no needed structure adjustments for type "Neos.ContentRepository.Testing:Document" Scenario: a broken property (which cannot be deserialized) is detected and removed @@ -124,7 +120,6 @@ Feature: Properties | affectedDimensionSpacePoints | [{}] | | propertyValues | {"myProp": {"value": "original value", "type": "My\\Non\\Existing\\Class"}} | | propertiesToUnset | {} | - And the graph projection is fully up to date Then I expect the following structure adjustments for type "Neos.ContentRepository.Testing:Document": | Type | nodeAggregateId | | NON_DESERIALIZABLE_PROPERTY | sir-david-nodenborough | diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/TetheredNodes.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/TetheredNodes.feature index de6d9e0673c..15daa4fe726 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/TetheredNodes.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/TetheredNodes.feature @@ -36,7 +36,6 @@ Feature: Tethered Nodes integrity violations | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -79,7 +78,6 @@ Feature: Tethered Nodes integrity violations | parentNodeAggregateId | "nodewyn-tetherton" | | nodeName | "tethered-leaf" | | nodeAggregateClassification | "tethered" | - And the graph projection is fully up to date Then I expect no needed structure adjustments for type "Neos.ContentRepository.Testing:Document" Scenario: Adjusting the schema adding a new tethered node leads to a MissingTetheredNode integrity violation diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/TetheredNodesReordering.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/TetheredNodesReordering.feature index 2e6b41fe1ce..f571195edad 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/TetheredNodesReordering.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/TetheredNodesReordering.feature @@ -25,13 +25,11 @@ Feature: Tethered Nodes Reordering Structure changes | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | @@ -40,7 +38,6 @@ Feature: Tethered Nodes Reordering Structure changes | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "document" | | tetheredDescendantNodeAggregateIds | {"tethered-node": "tethered-node-agg", "other-tethered-node": "other-tethered-node-agg", "third-tethered-node": "third-tethered-node-agg"} | - And the graph projection is fully up to date Then I expect no needed structure adjustments for type "Neos.ContentRepository.Testing:Document" diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/UnknownNodeType.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/UnknownNodeType.feature index 5006a854579..69bea0d5390 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/UnknownNodeType.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/StructureAdjustment/UnknownNodeType.feature @@ -17,7 +17,6 @@ Feature: Unknown node types | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -34,7 +33,6 @@ Feature: Unknown node types | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "document" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Then I expect no needed structure adjustments for type "Neos.ContentRepository.Testing:Document" Scenario: When removing "Neos.ContentRepository.Testing:Document", we find a missing node type. diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/SubtreeTagging/TagSubtree_WithDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/SubtreeTagging/TagSubtree_WithDimensions.feature index 4b80d2f1960..73b1ceed75e 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/SubtreeTagging/TagSubtree_WithDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/SubtreeTagging/TagSubtree_WithDimensions.feature @@ -22,13 +22,11 @@ Feature: Tag subtree with dimensions | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "root" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | originDimensionSpacePoint | | a | Neos.ContentRepository.Testing:Document | root | a | {"language":"mul"} | @@ -43,7 +41,6 @@ Feature: Tag subtree with dimensions | nodeAggregateId | "a1" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"mul"} | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -63,7 +60,6 @@ Feature: Tag subtree with dimensions | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"mul"} | - And the graph projection is fully up to date When I execute the findSubtree query for entry node aggregate id "a" I expect the following tree with tags: """ @@ -129,26 +125,22 @@ Feature: Tag subtree with dimensions | workspaceName | "user-ws" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-id" | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | workspaceName | "user-ws" | | nodeAggregateId | "a1" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | workspaceName | "user-ws" | | nodeAggregateId | "a1a" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date And the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "user-ws" | | newContentStreamId | "new-user-cs-id" | - And the graph projection is fully up to date And the command RemoveNodeAggregate is executed with payload: | Key | Value | @@ -156,7 +148,6 @@ Feature: Tag subtree with dimensions | nodeAggregateId | "a1" | | coveredDimensionSpacePoint | {"language":"gsw"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date And the command TagSubtree is executed with payload: | Key | Value | @@ -172,14 +163,12 @@ Feature: Tag subtree with dimensions | nodeAggregateId | "a1" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | workspaceName | "user-ws" | | nodeAggregateId | "a1a" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date And I am in workspace "user-ws" and dimension space point {"language":"gsw"} And I execute the findSubtree query for entry node aggregate id "a" I expect the following tree with tags: """ diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/SubtreeTagging/TagSubtree_WithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/SubtreeTagging/TagSubtree_WithoutDimensions.feature index 5273addf313..57feea70620 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/SubtreeTagging/TagSubtree_WithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/SubtreeTagging/TagSubtree_WithoutDimensions.feature @@ -20,13 +20,11 @@ Feature: Tag subtree without dimensions | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "root" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeTypeName | parentNodeAggregateId | nodeName | | a | Neos.ContentRepository.Testing:Document | root | a | @@ -47,7 +45,6 @@ Feature: Tag subtree without dimensions | nodeAggregateId | "a1" | | nodeVariantSelectionStrategy | "allVariants" | | tag | "tag1" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream with prefix "ContentStream:cs-identifier" And event at index 13 is of type "SubtreeWasTagged" with payload: | Key | Expected | @@ -77,7 +74,6 @@ Feature: Tag subtree without dimensions | nodeAggregateId | "a1" | | nodeVariantSelectionStrategy | "allVariants" | | tag | "tag1" | - And the graph projection is fully up to date Then I expect exactly 14 events to be published on stream with prefix "ContentStream:cs-identifier" And event at index 13 is of type "SubtreeWasTagged" with payload: | Key | Expected | @@ -107,7 +103,6 @@ Feature: Tag subtree without dimensions | affectedDimensionSpacePoints | [[]] | | tag | "tag1" | - When the graph projection is fully up to date And I am in workspace "live" Then I expect the graph projection to consist of exactly 12 nodes @@ -137,7 +132,6 @@ Feature: Tag subtree without dimensions | nodeAggregateId | "a1a" | | nodeVariantSelectionStrategy | "allVariants" | | tag | "tag4" | - And the graph projection is fully up to date When I execute the findSubtree query for entry node aggregate id "a" I expect the following tree with tags: """ @@ -161,7 +155,6 @@ Feature: Tag subtree without dimensions | Key | Value | | nodeAggregateId | "a1a" | | newParentNodeAggregateId | "b1" | - And the graph projection is fully up to date When I execute the findSubtree query for entry node aggregate id "a" I expect the following tree with tags: """ a diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W10-IndividualNodeDiscarding/01-ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W10-IndividualNodeDiscarding/01-ConstraintChecks.feature index 3614ab4af0f..2e8d0fa2d93 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W10-IndividualNodeDiscarding/01-ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W10-IndividualNodeDiscarding/01-ConstraintChecks.feature @@ -29,7 +29,6 @@ Feature: Workspace discarding - complex chained functionality | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language": "de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -46,7 +45,6 @@ Feature: Workspace discarding - complex chained functionality | workspaceName | "user-ws" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-id" | - And the graph projection is fully up to date Scenario: Vary to generalization, then delete the origin and discard parts of the result so that an exception is thrown. Ensure that the workspace recovers from this When the command CreateNodeVariant is executed with payload: @@ -55,14 +53,12 @@ Feature: Workspace discarding - complex chained functionality | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"language": "de"} | | targetOrigin | {"language": "en"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | workspaceName | "user-ws" | | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"language": "de"} | | targetOrigin | {"language": "en"} | - And the graph projection is fully up to date And the command RemoveNodeAggregate is executed with payload: | Key | Value | @@ -70,7 +66,6 @@ Feature: Workspace discarding - complex chained functionality | nodeAggregateId | "sir-david-nodenborough" | | coveredDimensionSpacePoint | {"language": "en"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command DiscardIndividualNodesFromWorkspace is executed with payload and exceptions are caught: | Key | Value | @@ -83,6 +78,5 @@ Feature: Workspace discarding - complex chained functionality | Key | Value | | workspaceName | "user-ws" | | newContentStreamId | "user-cs-id-yet-again-rebased" | - And the graph projection is fully up to date When I am in workspace "user-ws" and dimension space point {"language": "de"} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node user-cs-id-yet-again-rebased;nody-mc-nodeface;{"language": "de"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W10-IndividualNodeDiscarding/02-BasicFeatures.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W10-IndividualNodeDiscarding/02-BasicFeatures.feature index b79d8cc1789..89ab495782d 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W10-IndividualNodeDiscarding/02-BasicFeatures.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W10-IndividualNodeDiscarding/02-BasicFeatures.feature @@ -29,7 +29,6 @@ Feature: Discard individual nodes (basics) | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -65,7 +64,6 @@ Feature: Discard individual nodes (basics) | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"image": {"type": "string", "value": "Initial image"}} | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date # Create user workspace And the command CreateWorkspace is executed with payload: @@ -73,7 +71,6 @@ Feature: Discard individual nodes (basics) | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date # modify nodes in user WS And the command SetNodeProperties is executed with payload: | Key | Value | @@ -93,7 +90,6 @@ Feature: Discard individual nodes (basics) | nodeAggregateId | "sir-nodeward-nodington-iii" | | originDimensionSpacePoint | {} | | propertyValues | {"image": "Modified image"} | - And the graph projection is fully up to date ################ # DISCARDING @@ -106,7 +102,6 @@ Feature: Discard individual nodes (basics) | nodesToDiscard | [{"workspaceName": "user-test", "dimensionSpacePoint": {}, "nodeAggregateId": "sir-nodeward-nodington-iii"}] | | newContentStreamId | "user-cs-identifier-new" | - And the graph projection is fully up to date When I am in workspace "user-test" and dimension space point {} Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node user-cs-identifier-new;sir-david-nodenborough;{} @@ -128,7 +123,6 @@ Feature: Discard individual nodes (basics) | workspaceName | "user-test" | | nodesToDiscard | [] | | newContentStreamId | "user-cs-identifier-new" | - And the graph projection is fully up to date When I am in workspace "user-test" and dimension space point {} Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node user-cs-identifier-new;sir-david-nodenborough;{} @@ -150,7 +144,6 @@ Feature: Discard individual nodes (basics) | workspaceName | "user-test" | | nodesToDiscard | [{"workspaceName": "user-test", "dimensionSpacePoint": {}, "nodeAggregateId": "sir-david-nodenborough"}, {"workspaceName": "user-test", "dimensionSpacePoint": {}, "nodeAggregateId": "nody-mc-nodeface"}, {"workspaceName": "user-test", "dimensionSpacePoint": {}, "nodeAggregateId": "sir-nodeward-nodington-iii"}] | | newContentStreamId | "user-cs-identifier-new" | - And the graph projection is fully up to date When I am in workspace "user-test" and dimension space point {} Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node user-cs-identifier-new;sir-david-nodenborough;{} @@ -172,7 +165,6 @@ Feature: Discard individual nodes (basics) | Key | Value | | workspaceName | "user-test" | | nodesToDiscard | [{"workspaceName": "user-test", "dimensionSpacePoint": {}, "nodeAggregateId": "sir-nodeward-nodington-iii"}] | - And the graph projection is fully up to date # live WS does not change because of a discard When I am in workspace "live" and dimension space point {} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W6-WorkspaceRebasing/02-RebasingWithAutoCreatedNodes.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W6-WorkspaceRebasing/02-RebasingWithAutoCreatedNodes.feature index 3460bc39efd..387efdc36e3 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W6-WorkspaceRebasing/02-RebasingWithAutoCreatedNodes.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W6-WorkspaceRebasing/02-RebasingWithAutoCreatedNodes.feature @@ -34,19 +34,16 @@ Feature: Rebasing auto-created nodes works | workspaceName | "live" | | newContentStreamId | "cs-identifier" | And I am in workspace "live" and dimension space point {} - And the graph projection is fully up to date And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date And the command CreateWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date Scenario: complex scenario (to reproduce the bug) -- see the feature description # USER workspace: create a new node with auto-created child nodes @@ -58,7 +55,6 @@ Feature: Rebasing auto-created nodes works | nodeName | "mcnodeface" | | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date And I am in workspace "user-test" and dimension space point {} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node user-cs-identifier;nody-mc-nodeface;{} When I get the node at path "mcnodeface/foo" @@ -72,11 +68,9 @@ Feature: Rebasing auto-created nodes works | originDimensionSpacePoint | {} | | propertyValues | {"text": {"value":"Modified","type":"string"}} | | propertiesToUnset | {} | - And the graph projection is fully up to date When the command RebaseWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | - And the graph projection is fully up to date # This should properly work; no error. diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W6-WorkspaceRebasing/03-RebasingWithConflictingChanges.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W6-WorkspaceRebasing/03-RebasingWithConflictingChanges.feature index 6d656e26dcd..332dfe48cfc 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W6-WorkspaceRebasing/03-RebasingWithConflictingChanges.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W6-WorkspaceRebasing/03-RebasingWithConflictingChanges.feature @@ -22,7 +22,6 @@ Feature: Workspace rebasing - conflicting changes | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -40,14 +39,12 @@ Feature: Workspace rebasing - conflicting changes | propertyValues | {"text": "Original"} | # we need to ensure that the projections are up to date now; otherwise a content stream is forked with an out- # of-date base version. This means the content stream can never be merged back, but must always be rebased. - And the graph projection is fully up to date And the command CreateWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | | workspaceOwner | "owner-identifier" | - And the graph projection is fully up to date Scenario: Conflicting changes lead to OUTDATED_CONFLICT which can be recovered from via forced rebase @@ -57,14 +54,12 @@ Feature: Workspace rebasing - conflicting changes | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-one" | | workspaceOwner | "owner-identifier" | - And the graph projection is fully up to date And the command CreateWorkspace is executed with payload: | Key | Value | | workspaceName | "user-ws-two" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-two" | | workspaceOwner | "owner-identifier" | - And the graph projection is fully up to date When the command RemoveNodeAggregate is executed with payload: | Key | Value | @@ -72,7 +67,6 @@ Feature: Workspace rebasing - conflicting changes | nodeVariantSelectionStrategy | "allVariants" | | coveredDimensionSpacePoint | {} | | workspaceName | "user-ws-one" | - And the graph projection is fully up to date When the command SetNodeProperties is executed with payload: | Key | Value | @@ -80,7 +74,6 @@ Feature: Workspace rebasing - conflicting changes | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {} | | propertyValues | {"text": "Modified"} | - And the graph projection is fully up to date And the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -89,7 +82,6 @@ Feature: Workspace rebasing - conflicting changes | parentNodeAggregateId | "lady-eleonode-rootford" | | originDimensionSpacePoint | {} | | workspaceName | "user-ws-two" | - And the graph projection is fully up to date And the command SetNodeProperties is executed with payload: | Key | Value | @@ -97,12 +89,10 @@ Feature: Workspace rebasing - conflicting changes | nodeAggregateId | "noderus-secundus" | | originDimensionSpacePoint | {} | | propertyValues | {"text": "The other node"} | - And the graph projection is fully up to date And the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "user-ws-one" | - And the graph projection is fully up to date Then workspace user-ws-two has status OUTDATED @@ -111,7 +101,6 @@ Feature: Workspace rebasing - conflicting changes | workspaceName | "user-ws-two" | | rebasedContentStreamId | "user-cs-two-rebased" | | rebaseErrorHandlingStrategy | "force" | - And the graph projection is fully up to date Then workspace user-ws-two has status UP_TO_DATE And I expect a node identified by user-cs-two-rebased;noderus-secundus;{} to exist in the content graph diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W7-WorkspacePublication/02-PublishWorkspace.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W7-WorkspacePublication/02-PublishWorkspace.feature index eeeec62bf8c..87f426a7e7e 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W7-WorkspacePublication/02-PublishWorkspace.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W7-WorkspacePublication/02-PublishWorkspace.feature @@ -22,7 +22,6 @@ Feature: Workspace based content publishing | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -40,14 +39,12 @@ Feature: Workspace based content publishing | propertyValues | {"text": "Original"} | # we need to ensure that the projections are up to date now; otherwise a content stream is forked with an out- # of-date base version. This means the content stream can never be merged back, but must always be rebased. - And the graph projection is fully up to date And the command CreateWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | | workspaceOwner | "owner-identifier" | - And the graph projection is fully up to date Scenario: Basic events are emitted # LIVE workspace @@ -89,7 +86,6 @@ Feature: Workspace based content publishing | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {} | | propertyValues | {"text": "Modified"} | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node cs-identifier;nody-mc-nodeface;{} @@ -107,7 +103,6 @@ Feature: Workspace based content publishing When the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node cs-identifier;nody-mc-nodeface;{} @@ -123,14 +118,12 @@ Feature: Workspace based content publishing | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {} | | propertyValues | {"text": "Modified in user workspace"} | - And the graph projection is fully up to date And the command SetNodeProperties is executed with payload: | Key | Value | | workspaceName | "live" | | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {} | | propertyValues | {"text": "Modified in live workspace"} | - And the graph projection is fully up to date # PUBLISHING without rebase: error When the command PublishWorkspace is executed with payload and exceptions are caught: @@ -144,12 +137,10 @@ Feature: Workspace based content publishing | Key | Value | | workspaceName | "user-test" | | rebasedContentStreamId | "rebased-cs-id" | - And the graph projection is fully up to date And the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} @@ -167,13 +158,11 @@ Feature: Workspace based content publishing | originDimensionSpacePoint | {} | | propertyValues | {"text": "Modified"} | - And the graph projection is fully up to date # PUBLISHING And the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} When the command SetNodeProperties is executed with payload: @@ -183,13 +172,11 @@ Feature: Workspace based content publishing | originDimensionSpacePoint | {} | | propertyValues | {"text": "Modified anew"} | - And the graph projection is fully up to date # PUBLISHING And the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node cs-identifier;nody-mc-nodeface;{} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/01-ConstraintChecks.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/01-ConstraintChecks.feature index 327caf1fa7e..3d1dd329dcb 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/01-ConstraintChecks.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/01-ConstraintChecks.feature @@ -29,7 +29,6 @@ Feature: Workspace publication - complex chained functionality | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"language": "de"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -46,7 +45,6 @@ Feature: Workspace publication - complex chained functionality | workspaceName | "user-ws" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-id" | - And the graph projection is fully up to date Scenario: Vary to generalization, then publish only the child node so that an exception is thrown. Ensure that the workspace recovers from this When the command CreateNodeVariant is executed with payload: @@ -55,14 +53,12 @@ Feature: Workspace publication - complex chained functionality | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"language": "de"} | | targetOrigin | {"language": "en"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | workspaceName | "user-ws" | | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"language": "de"} | | targetOrigin | {"language": "en"} | - And the graph projection is fully up to date When the command PublishIndividualNodesFromWorkspace is executed with payload and exceptions are caught: | Key | Value | @@ -75,6 +71,5 @@ Feature: Workspace publication - complex chained functionality | Key | Value | | workspaceName | "user-ws" | | newContentStreamId | "user-cs-id-yet-again-rebased" | - And the graph projection is fully up to date When I am in workspace "user-ws" and dimension space point {"language": "de"} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node user-cs-id-yet-again-rebased;nody-mc-nodeface;{"language": "de"} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/02-BasicFeatures.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/02-BasicFeatures.feature index 68984305699..487007ba37d 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/02-BasicFeatures.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/02-BasicFeatures.feature @@ -21,14 +21,12 @@ Feature: Individual node publication | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | workspaceName | "live" | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # Create user workspace And the command CreateWorkspace is executed with payload: @@ -36,7 +34,6 @@ Feature: Individual node publication | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date ################ # PUBLISHING @@ -58,7 +55,6 @@ Feature: Individual node publication | nodesToPublish | [{"workspaceName": "user-test", "dimensionSpacePoint": {}, "nodeAggregateId": "sir-david-nodenborough"}] | | contentStreamIdForRemainingPart | "user-cs-identifier-remaining" | | contentStreamIdForMatchingPart | "user-cs-identifier-matching" | - And the graph projection is fully up to date And I am in workspace "live" diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/03-MoreBasicFeatures.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/03-MoreBasicFeatures.feature index 3b9b33847cd..8b261cc14c1 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/03-MoreBasicFeatures.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/03-MoreBasicFeatures.feature @@ -29,7 +29,6 @@ Feature: Publishing individual nodes (basics) | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -65,7 +64,6 @@ Feature: Publishing individual nodes (basics) | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"image": {"type": "string", "value": "Initial image"}} | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date # Create user workspace And the command CreateWorkspace is executed with payload: @@ -73,7 +71,6 @@ Feature: Publishing individual nodes (basics) | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date # modify nodes in user WS And the command SetNodeProperties is executed with payload: | Key | Value | @@ -93,7 +90,6 @@ Feature: Publishing individual nodes (basics) | nodeAggregateId | "sir-nodeward-nodington-iii" | | originDimensionSpacePoint | {} | | propertyValues | {"image": "Modified image"} | - And the graph projection is fully up to date ################ # PUBLISHING @@ -106,7 +102,6 @@ Feature: Publishing individual nodes (basics) | nodesToPublish | [{"workspaceName": "user-test", "dimensionSpacePoint": {}, "nodeAggregateId": "sir-nodeward-nodington-iii"}] | | contentStreamIdForRemainingPart | "user-cs-identifier-remaining" | | contentStreamIdForMatchingPart | "user-cs-identifier-matching" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node cs-identifier;sir-david-nodenborough;{} @@ -142,7 +137,6 @@ Feature: Publishing individual nodes (basics) | workspaceName | "user-test" | | nodesToPublish | [] | | contentStreamIdForRemainingPart | "user-cs-identifier-remaining" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node cs-identifier;sir-david-nodenborough;{} @@ -178,7 +172,6 @@ Feature: Publishing individual nodes (basics) | workspaceName | "user-test" | | nodesToPublish | [{"workspaceName": "user-test", "dimensionSpacePoint": {}, "nodeAggregateId": "sir-david-nodenborough"}, {"workspaceName": "user-test", "dimensionSpacePoint": {}, "nodeAggregateId": "nody-mc-nodeface"}, {"workspaceName": "user-test", "dimensionSpacePoint": {}, "nodeAggregateId": "sir-nodeward-nodington-iii"}] | | contentStreamIdForRemainingPart | "user-cs-identifier-remaining" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node cs-identifier;sir-david-nodenborough;{} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/04-AllFeaturePublication.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/04-AllFeaturePublication.feature index 514ad393268..d0ee08d5e57 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/04-AllFeaturePublication.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/04-AllFeaturePublication.feature @@ -38,7 +38,6 @@ Feature: Publishing hide/show scenario of nodes | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -74,7 +73,6 @@ Feature: Publishing hide/show scenario of nodes | parentNodeAggregateId | "lady-eleonode-rootford" | | initialPropertyValues | {"image": {"type": "image", "value": "Initial image"}} | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Scenario: (DisableNode) It is possible to publish hiding of a node. Given the command CreateWorkspace is executed with payload: @@ -82,7 +80,6 @@ Feature: Publishing hide/show scenario of nodes | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date And I am in workspace "user-test" # SETUP: hide two nodes in USER workspace @@ -96,7 +93,6 @@ Feature: Publishing hide/show scenario of nodes | nodeAggregateId | "sir-nodeward-nodington-iii" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date When the command PublishIndividualNodesFromWorkspace is executed with payload: | Key | Value | @@ -104,7 +100,6 @@ Feature: Publishing hide/show scenario of nodes | nodesToPublish | [{"nodeAggregateId": "sir-david-nodenborough", "workspaceName": "user-test", "dimensionSpacePoint": {}}] | | contentStreamIdForRemainingPart | "remaining-cs-id" | | contentStreamIdForMatchingPart | "matching-cs-id" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "sir-david-nodenborough" to lead to no node @@ -130,13 +125,11 @@ Feature: Publishing hide/show scenario of nodes | nodeVariantSelectionStrategy | "allVariants" | # we need to ensure that the projections are up to date now; otherwise a content stream is forked with an out- # of-date base version. This means the content stream can never be merged back, but must always be rebased. - And the graph projection is fully up to date Given the command CreateWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date # SETUP: enable two nodes in USER workspace Given the command EnableNodeAggregate is executed with payload: @@ -151,14 +144,12 @@ Feature: Publishing hide/show scenario of nodes | nodeAggregateId | "sir-nodeward-nodington-iii" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date When the command PublishIndividualNodesFromWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | nodesToPublish | [{"nodeAggregateId": "sir-david-nodenborough", "workspaceName": "user-test", "dimensionSpacePoint": {}}] | | contentStreamIdForRemainingPart | "user-cs-identifier-modified" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node cs-identifier;sir-david-nodenborough;{} @@ -219,7 +210,6 @@ Feature: Publishing hide/show scenario of nodes | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date # SETUP: remove two nodes in USER workspace When the command RemoveNodeAggregate is executed with payload: @@ -235,14 +225,12 @@ Feature: Publishing hide/show scenario of nodes | nodeAggregateId | "sir-nodeward-nodington-iii" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date When the command PublishIndividualNodesFromWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | nodesToPublish | [{"nodeAggregateId": "sir-david-nodenborough", "workspaceName": "user-test", "dimensionSpacePoint": {}}] | | contentStreamIdForRemainingPart | "user-cs-identifier-modified" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "sir-david-nodenborough" to lead to no node @@ -261,7 +249,6 @@ Feature: Publishing hide/show scenario of nodes | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date # SETUP: remove two nodes in USER workspace When the command RemoveNodeAggregate is executed with payload: @@ -276,13 +263,11 @@ Feature: Publishing hide/show scenario of nodes | nodeAggregateId | "sir-nodeward-nodington-iii" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date When the command PublishIndividualNodesFromWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | nodesToPublish | [{"nodeAggregateId": "sir-david-nodenborough", "workspaceName": "user-test", "dimensionSpacePoint": {}}] | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "sir-david-nodenborough" to lead to no node @@ -301,7 +286,6 @@ Feature: Publishing hide/show scenario of nodes | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date # SETUP: set two node references in USER workspace When the command SetNodeReferences is executed with payload: @@ -318,14 +302,12 @@ Feature: Publishing hide/show scenario of nodes | sourceOriginDimensionSpacePoint | {} | | referenceName | "referenceProperty" | | references | [{"target":"sir-nodeward-nodington-iii"}] | - And the graph projection is fully up to date When the command PublishIndividualNodesFromWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | nodesToPublish | [{"nodeAggregateId": "sir-david-nodenborough", "workspaceName": "user-test", "dimensionSpacePoint": {}}] | | contentStreamIdForRemainingPart | "user-cs-identifier-modified" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node cs-identifier;sir-david-nodenborough;{} @@ -361,7 +343,6 @@ Feature: Publishing hide/show scenario of nodes | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date # SETUP: set two new nodes in USER workspace When the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: @@ -380,14 +361,12 @@ Feature: Publishing hide/show scenario of nodes | originDimensionSpacePoint | {} | | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "foo2" | - And the graph projection is fully up to date When the command PublishIndividualNodesFromWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | nodesToPublish | [{"nodeAggregateId": "new1-agg", "workspaceName": "user-test", "dimensionSpacePoint": {}}] | | contentStreamIdForRemainingPart | "user-cs-identifier-modified" | - And the graph projection is fully up to date When I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "new1-agg" to lead to node cs-identifier;new1-agg;{} diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/05-PublishMovedNodesWithoutDimensions.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/05-PublishMovedNodesWithoutDimensions.feature index 9da2034d93c..da170cc530b 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/05-PublishMovedNodesWithoutDimensions.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W8-IndividualNodePublication/05-PublishMovedNodesWithoutDimensions.feature @@ -22,7 +22,6 @@ Feature: Publishing moved nodes without dimensions | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -58,14 +57,12 @@ Feature: Publishing moved nodes without dimensions | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "esquire" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date And the command CreateWorkspace is executed with payload: | Key | Value | | workspaceName | "user" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date Scenario: Publish the move of a node to the end of its siblings When the command MoveNodeAggregate is executed with payload: @@ -79,7 +76,6 @@ Feature: Publishing moved nodes without dimensions | Key | Value | | workspaceName | "user" | | nodesToPublish | [{"workspaceName": "user", "dimensionSpacePoint": {}, "nodeAggregateId": "sir-david-nodenborough"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph @@ -119,7 +115,6 @@ Feature: Publishing moved nodes without dimensions | Key | Value | | workspaceName | "user" | | nodesToPublish | [{"workspaceName": "user", "dimensionSpacePoint": {}, "nodeAggregateId": "sir-nodeward-nodington-iii"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph @@ -158,7 +153,6 @@ Feature: Publishing moved nodes without dimensions | parentNodeAggregateId | "sir-nodeward-nodington-iii" | | nodeName | "other-document" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | | workspaceName | "user" | @@ -169,7 +163,6 @@ Feature: Publishing moved nodes without dimensions | Key | Value | | workspaceName | "user" | | nodesToPublish | [{"workspaceName": "user", "dimensionSpacePoint": {}, "nodeAggregateId": "sir-david-nodenborough"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 5 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph @@ -215,7 +208,6 @@ Feature: Publishing moved nodes without dimensions | workspaceName | "user" | | nodesToPublish | [{"workspaceName": "user", "dimensionSpacePoint": {}, "nodeAggregateId": "nody-mc-nodeface"}] | - When the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by cs-identifier;lady-eleonode-rootford;{} to exist in the content graph And I expect a node identified by cs-identifier;sir-david-nodenborough;{} to exist in the content graph diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W9-WorkspaceDiscarding/02-DiscardWorkspace.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W9-WorkspaceDiscarding/02-DiscardWorkspace.feature index 1aac8c9bde1..823d5bbfb05 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W9-WorkspaceDiscarding/02-DiscardWorkspace.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/W9-WorkspaceDiscarding/02-DiscardWorkspace.feature @@ -22,7 +22,6 @@ Feature: Workspace discarding - basic functionality | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -40,14 +39,12 @@ Feature: Workspace discarding - basic functionality | propertyValues | {"text": "Original"} | # we need to ensure that the projections are up to date now; otherwise a content stream is forked with an out- # of-date base version. This means the content stream can never be merged back, but must always be rebased. - And the graph projection is fully up to date And the command CreateWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | | workspaceOwner | "owner-identifier" | - And the graph projection is fully up to date Scenario: Discarding a full workspace works When the command SetNodeProperties is executed with payload: @@ -56,7 +53,6 @@ Feature: Workspace discarding - basic functionality | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {} | | propertyValues | {"text": "Modified"} | - And the graph projection is fully up to date When I am in workspace "user-test" and dimension space point {} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node user-cs-identifier;nody-mc-nodeface;{} @@ -69,7 +65,6 @@ Feature: Workspace discarding - basic functionality | Key | Value | | workspaceName | "user-test" | | newContentStreamId | "user-cs-identifier-modified" | - And the graph projection is fully up to date When I am in workspace "user-test" and dimension space point {} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node user-cs-identifier-modified;nody-mc-nodeface;{} @@ -84,7 +79,6 @@ Feature: Workspace discarding - basic functionality | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {} | | propertyValues | {"text": "Modified"} | - And the graph projection is fully up to date And the command SetNodeProperties is executed with payload: | Key | Value | @@ -92,14 +86,12 @@ Feature: Workspace discarding - basic functionality | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {} | | propertyValues | {"text": "Modified in live workspace"} | - And the graph projection is fully up to date # Discarding When the command DiscardWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | newContentStreamId | "user-cs-identifier-modified" | - And the graph projection is fully up to date When I am in workspace "user-test" and dimension space point {} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node user-cs-identifier-modified;nody-mc-nodeface;{} @@ -115,14 +107,12 @@ Feature: Workspace discarding - basic functionality | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-one" | | workspaceOwner | "owner-identifier" | - And the graph projection is fully up to date And the command CreateWorkspace is executed with payload: | Key | Value | | workspaceName | "user-ws-two" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-two" | | workspaceOwner | "owner-identifier" | - And the graph projection is fully up to date When the command RemoveNodeAggregate is executed with payload: | Key | Value | @@ -130,7 +120,6 @@ Feature: Workspace discarding - basic functionality | nodeAggregateId | "nody-mc-nodeface" | | nodeVariantSelectionStrategy | "allVariants" | | coveredDimensionSpacePoint | {} | - And the graph projection is fully up to date When the command SetNodeProperties is executed with payload: | Key | Value | @@ -138,12 +127,10 @@ Feature: Workspace discarding - basic functionality | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {} | | propertyValues | {"text": "Modified"} | - And the graph projection is fully up to date And the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "user-ws-one" | - And the graph projection is fully up to date Then workspace user-ws-two has status OUTDATED @@ -158,7 +145,6 @@ Feature: Workspace discarding - basic functionality | Key | Value | | workspaceName | "user-ws-two" | | newContentStreamId | "user-cs-two-discarded" | - And the graph projection is fully up to date Then workspace user-ws-two has status OUTDATED diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/NodeOperationsOnMultipleWorkspaces.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/NodeOperationsOnMultipleWorkspaces.feature index 7d178996e7a..43943c2e60e 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/NodeOperationsOnMultipleWorkspaces.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/NodeOperationsOnMultipleWorkspaces.feature @@ -16,7 +16,6 @@ Feature: Single Node operations on multiple workspaces/content streams; e.g. cop | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -42,19 +41,16 @@ Feature: Single Node operations on multiple workspaces/content streams; e.g. cop | parentNodeAggregateId | "nody-mc-nodeface" | | nodeName | "pet" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date And the command SetNodeProperties is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {} | | propertyValues | {"text": "Original"} | - And the graph projection is fully up to date And the command CreateWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date Scenario: Set property of a node Given the command SetNodeProperties is executed with payload: @@ -72,7 +68,6 @@ Feature: Single Node operations on multiple workspaces/content streams; e.g. cop | originDimensionSpacePoint | [] | | propertyValues.text.value | "Changed" | - When the graph projection is fully up to date And I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node cs-identifier;nody-mc-nodeface;{} And I expect this node to have the following properties: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/PruneContentStreams.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/PruneContentStreams.feature index 34c8e21d299..b10efb96252 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/PruneContentStreams.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/PruneContentStreams.feature @@ -13,13 +13,11 @@ Feature: If content streams are not in use anymore by the workspace, they can be | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "root-node" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date Scenario: content streams are marked as IN_USE_BY_WORKSPACE properly after creation Then the content stream "cs-identifier" has state "IN_USE_BY_WORKSPACE" @@ -31,7 +29,6 @@ Feature: If content streams are not in use anymore by the workspace, they can be | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date Then the content stream "user-cs-identifier" has state "IN_USE_BY_WORKSPACE" @@ -41,11 +38,9 @@ Feature: If content streams are not in use anymore by the workspace, they can be | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date When the command RebaseWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | - And the graph projection is fully up to date When I am in workspace "user-test" and dimension space point {} Then the current content stream has state "IN_USE_BY_WORKSPACE" @@ -58,16 +53,13 @@ Feature: If content streams are not in use anymore by the workspace, they can be | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date When the command RebaseWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | rebasedContentStreamId | "user-cs-identifier-rebased" | - And the graph projection is fully up to date # now, we have one unused content stream (the old content stream of the user-test workspace) When I prune unused content streams - And the graph projection is fully up to date When I am in content stream "user-cs-identifier" and dimension space point {} Then I expect node aggregate identifier "root-node" to lead to no node @@ -82,15 +74,12 @@ Feature: If content streams are not in use anymore by the workspace, they can be | workspaceName | "user-test" | | baseWorkspaceName | "live" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date When the command RebaseWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | - And the graph projection is fully up to date # now, we have one unused content stream (the old content stream of the user-test workspace) When I prune unused content streams - And the graph projection is fully up to date And I prune removed content streams from the event stream Then I expect exactly 0 events to be published on stream "ContentStream:user-cs-identifier" @@ -103,13 +92,11 @@ Feature: If content streams are not in use anymore by the workspace, they can be | workspaceName | "review" | | baseWorkspaceName | "live" | | newContentStreamId | "review-cs-identifier" | - And the graph projection is fully up to date And the command CreateWorkspace is executed with payload: | Key | Value | | workspaceName | "user-test" | | baseWorkspaceName | "review" | | newContentStreamId | "user-cs-identifier" | - And the graph projection is fully up to date # now, we rebase the "review" workspace, effectively marking the "review-cs-identifier" content stream as NO_LONGER_IN_USE. # however, we are not allowed to drop the content stream from the event store yet, because the "user-cs-identifier" is based @@ -117,10 +104,8 @@ Feature: If content streams are not in use anymore by the workspace, they can be When the command RebaseWorkspace is executed with payload: | Key | Value | | workspaceName | "review" | - And the graph projection is fully up to date When I prune unused content streams - And the graph projection is fully up to date And I prune removed content streams from the event stream # the events should still exist diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/RemoveNodeAggregateWithDimensions.wip b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/RemoveNodeAggregateWithDimensions.wip index 1ee88a7acea..30f13ab7578 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/RemoveNodeAggregateWithDimensions.wip +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/RemoveNodeAggregateWithDimensions.wip @@ -18,13 +18,11 @@ Feature: Remove NodeAggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | contentStreamId | "live-cs-identifier" | | nodeAggregateId | "lady-eleonode-nodesworth" | | nodeTypeName | "Neos.ContentRepository:Root" | - And the graph projection is fully up to date # We have to add another node since root nodes are in all dimension space points and thus cannot be varied # Node /document And the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: @@ -35,7 +33,6 @@ Feature: Remove NodeAggregate | originDimensionSpacePoint | {"language":"de"} | | parentNodeAggregateId | "lady-eleonode-nodesworth" | | nodeName | "document" | - And the graph projection is fully up to date # We also want to add a child node to make sure it is correctly removed when the parent is removed # Node /document/child-document And the command CreateNodeAggregateWithNodeAndSerializedProperties is executed with payload: @@ -46,14 +43,12 @@ Feature: Remove NodeAggregate | originDimensionSpacePoint | {"language":"de"} | | parentNodeAggregateId | "nody-mc-nodeface" | | nodeName | "child-document" | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | contentStreamId | "live-cs-identifier" | | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"language":"de"} | | targetOrigin | {"language":"gsw"} | - And the graph projection is fully up to date ######################## # Section: EXTRA testcases @@ -65,7 +60,6 @@ Feature: Remove NodeAggregate | nodeAggregateId | "nody-mc-nodeface" | | nodeVariantSelectionStrategy | "allVariants" | | coveredDimensionSpacePoint | {"language":"de"} | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 1 node And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph @@ -84,7 +78,6 @@ Feature: Remove NodeAggregate | Key | Value | | contentStreamId | "user-cs-identifier" | | sourceContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date When the command RemoveNodeAggregate is executed with payload: | Key | Value | @@ -92,7 +85,6 @@ Feature: Remove NodeAggregate | nodeAggregateId | "nody-mc-nodeface" | | nodeVariantSelectionStrategy | "allVariants" | | coveredDimensionSpacePoint | {"language":"de"} | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/RemoveNodesFromAggregate.wip b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/RemoveNodesFromAggregate.wip index 9d5338d22a4..3fe26bf8051 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/RemoveNodesFromAggregate.wip +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/RemoveNodesFromAggregate.wip @@ -29,7 +29,6 @@ Feature: Remove Nodes from Aggregate | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | contentStreamId | "live-cs-identifier" | @@ -65,7 +64,6 @@ Feature: Remove Nodes from Aggregate | originDimensionSpacePoint | {"language":"de"} | | parentNodeAggregateId | "nodimus-prime" | | nodeName | "grandchild-document" | - And the graph projection is fully up to date ######################## # Section: EXTRA testcases @@ -96,7 +94,6 @@ Feature: Remove Nodes from Aggregate | contentStreamId | "live-cs-identifier" | | nodeAggregateId | "nodasaurus-rex" | | dimensionSpacePointSet | [{"language":"de"},{"language":"gsw"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 3 nodes And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph @@ -121,7 +118,6 @@ Feature: Remove Nodes from Aggregate | contentStreamId | "live-cs-identifier" | | nodeAggregateId | "nodasaurus-rex" | | dimensionSpacePointSet | [{"language":"gsw"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph @@ -152,7 +148,6 @@ Feature: Remove Nodes from Aggregate | contentStreamId | "live-cs-identifier" | | nodeAggregateId | "nody-mc-nodeface" | | dimensionSpacePointSet | [{"language":"de"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 1 nodes And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph @@ -172,7 +167,6 @@ Feature: Remove Nodes from Aggregate | contentStreamId | "live-cs-identifier" | | nodeAggregateId | "nody-mc-nodeface" | | dimensionSpacePointSet | [{"language":"gsw"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph @@ -200,13 +194,11 @@ Feature: Remove Nodes from Aggregate | Key | Value | | contentStreamId | "user-cs-identifier" | | sourceContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date When the command RemoveNodesFromAggregate was published with payload: | Key | Value | | contentStreamId | "user-cs-identifier" | | nodeAggregateId | "nodasaurus-rex" | | dimensionSpacePointSet | [{"language":"de"}] | - And the graph projection is fully up to date Then I expect the graph projection to consist of exactly 4 nodes And I expect a node identified by live-cs-identifier;lady-eleonode-nodesworth;{} to exist in the content graph @@ -255,14 +247,12 @@ Feature: Remove Nodes from Aggregate | Key | Value | | contentStreamId | "user-cs-identifier" | | sourceContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date When the command RemoveNodesFromAggregate was published with payload: | Key | Value | | contentStreamId | "user-cs-identifier" | | nodeAggregateId | "nodimus-prime" | | dimensionSpacePointSet | [{"language":"gsw"}] | - And the graph projection is fully up to date When I am in content stream "user-cs-identifier" and dimension space point {"language":"de"} Then I expect a node "doc-identifier-de" to exist in the graph projection @@ -297,14 +287,12 @@ Feature: Remove Nodes from Aggregate | Key | Value | | contentStreamId | "user-cs-identifier" | | sourceContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date When the command RemoveNodesFromAggregate was published with payload: | Key | Value | | contentStreamId | "user-cs-identifier" | | nodeAggregateId | "nody-mc-nodeface" | | dimensionSpacePointSet | [{"language":"de"},{"language":"gsw"}] | - And the graph projection is fully up to date When I am in content stream "user-cs-identifier" and dimension space point {"language":"de"} Then I expect a node "doc-identifier-de" not to exist in the graph projection @@ -339,14 +327,12 @@ Feature: Remove Nodes from Aggregate | Key | Value | | contentStreamId | "user-cs-identifier" | | sourceContentStreamId | "live-cs-identifier" | - And the graph projection is fully up to date When the command RemoveNodesFromAggregate was published with payload: | Key | Value | | contentStreamId | "user-cs-identifier" | | nodeAggregateId | "nody-mc-nodeface" | | dimensionSpacePointSet | [{"language":"gsw"}] | - And the graph projection is fully up to date When I am in content stream "user-cs-identifier" and dimension space point {"language":"de"} Then I expect a node "doc-identifier-de" to exist in the graph projection diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/SingleNodeOperationsOnLiveWorkspace.feature b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/SingleNodeOperationsOnLiveWorkspace.feature index cee29b67b01..4d6b6a90b55 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/SingleNodeOperationsOnLiveWorkspace.feature +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Features/Workspaces/SingleNodeOperationsOnLiveWorkspace.feature @@ -18,7 +18,6 @@ Feature: Single Node operations on live workspace | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -34,7 +33,6 @@ Feature: Single Node operations on live workspace | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "child" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Scenario: Set property of a node Given the command SetNodeProperties is executed with payload: @@ -50,7 +48,6 @@ Feature: Single Node operations on live workspace | originDimensionSpacePoint | [] | | propertyValues.text.value | "Hello" | - When the graph projection is fully up to date And I am in workspace "live" and dimension space point {} Then I expect node aggregate identifier "nody-mc-nodeface" to lead to node cs-identifier;nody-mc-nodeface;{} And I expect this node to have the following properties: diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Functional/Feature/WorkspacePublication/WorkspaceWritingDuringPublication.php b/Neos.ContentRepository.BehavioralTests/Tests/Functional/Feature/WorkspacePublication/WorkspaceWritingDuringPublication.php index 02c77e0bd58..c77ce33d13a 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Functional/Feature/WorkspacePublication/WorkspaceWritingDuringPublication.php +++ b/Neos.ContentRepository.BehavioralTests/Tests/Functional/Feature/WorkspacePublication/WorkspaceWritingDuringPublication.php @@ -42,7 +42,6 @@ use Neos\ContentRepository\Core\SharedModel\Workspace\WorkspaceTitle; use Neos\ContentRepository\TestSuite\Behavior\Features\Bootstrap\CRTestSuiteTrait; use Neos\ContentRepositoryRegistry\ContentRepositoryRegistry; -use Neos\ContentRepositoryRegistry\Factory\ProjectionCatchUpTrigger\CatchUpTriggerWithSynchronousOption; use Neos\EventStore\Exception\ConcurrencyException; use Neos\Flow\Tests\FunctionalTestCase; use PHPUnit\Framework\Assert; @@ -66,7 +65,6 @@ class WorkspaceWritingDuringPublication extends FunctionalTestCase public function setUp(): void { parent::setUp(); - CatchUpTriggerWithSynchronousOption::enableSynchronicityForSpeedingUpTesting(); GherkinTableNodeBasedContentDimensionSourceFactory::$contentDimensionsToUse = new class implements ContentDimensionSourceInterface { public function getDimension(ContentDimensionId $dimensionId): ?ContentDimension diff --git a/Neos.ContentRepository.Export/Tests/Behavior/Features/Bootstrap/FeatureContext.php b/Neos.ContentRepository.Export/Tests/Behavior/Features/Bootstrap/FeatureContext.php index bc5ea2a6d7d..01310c7beff 100644 --- a/Neos.ContentRepository.Export/Tests/Behavior/Features/Bootstrap/FeatureContext.php +++ b/Neos.ContentRepository.Export/Tests/Behavior/Features/Bootstrap/FeatureContext.php @@ -44,7 +44,6 @@ public function __construct() self::bootstrapFlow(); $this->contentRepositoryRegistry = $this->getObject(ContentRepositoryRegistry::class); - $this->setupCRTestSuiteTrait(); $this->setupCrImportExportTrait(); } diff --git a/Neos.ContentRepository.Export/Tests/Behavior/Features/Export/Export.feature b/Neos.ContentRepository.Export/Tests/Behavior/Features/Export/Export.feature index 4ec48a59b49..d2580ce81c2 100644 --- a/Neos.ContentRepository.Export/Tests/Behavior/Features/Export/Export.feature +++ b/Neos.ContentRepository.Export/Tests/Behavior/Features/Export/Export.feature @@ -17,7 +17,6 @@ Feature: As a user of the CR I want to export the event stream | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | @@ -33,7 +32,6 @@ Feature: As a user of the CR I want to export the event stream | parentNodeAggregateId | "lady-eleonode-rootford" | | nodeName | "child-document" | | nodeAggregateClassification | "regular" | - And the graph projection is fully up to date Scenario: Export the event stream Then I expect exactly 3 events to be published on stream with prefix "ContentStream:cs-identifier" diff --git a/Neos.ContentRepository.LegacyNodeMigration/Tests/Behavior/Bootstrap/FeatureContext.php b/Neos.ContentRepository.LegacyNodeMigration/Tests/Behavior/Bootstrap/FeatureContext.php index dd5302406c3..0c9d8dd9770 100644 --- a/Neos.ContentRepository.LegacyNodeMigration/Tests/Behavior/Bootstrap/FeatureContext.php +++ b/Neos.ContentRepository.LegacyNodeMigration/Tests/Behavior/Bootstrap/FeatureContext.php @@ -79,7 +79,6 @@ public function __construct() $this->mockFilesystemAdapter = new InMemoryFilesystemAdapter(); $this->mockFilesystem = new Filesystem($this->mockFilesystemAdapter); - $this->setupCRTestSuiteTrait(); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/CRTestSuiteRuntimeVariables.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/CRTestSuiteRuntimeVariables.php index c714869f9b7..398ea384130 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/CRTestSuiteRuntimeVariables.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/CRTestSuiteRuntimeVariables.php @@ -14,7 +14,6 @@ namespace Neos\ContentRepository\TestSuite\Behavior\Features\Bootstrap; -use Neos\ContentRepository\Core\CommandHandler\CommandResult; use Neos\ContentRepository\Core\ContentGraphFinder; use Neos\ContentRepository\Core\ContentRepository; use Neos\ContentRepository\Core\DimensionSpace\DimensionSpacePoint; @@ -48,8 +47,6 @@ trait CRTestSuiteRuntimeVariables protected ?NodeAggregateId $currentRootNodeAggregateId = null; - protected ?CommandResult $lastCommandOrEventResult = null; - protected ?\Exception $lastCommandException = null; protected ?Node $currentNode = null; diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/CRTestSuiteTrait.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/CRTestSuiteTrait.php index fcb2f45fbaa..f203182b36d 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/CRTestSuiteTrait.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/CRTestSuiteTrait.php @@ -49,7 +49,6 @@ use Neos\ContentRepository\TestSuite\Behavior\Features\Bootstrap\Features\WorkspaceCreation; use Neos\ContentRepository\TestSuite\Behavior\Features\Bootstrap\Features\WorkspaceDiscarding; use Neos\ContentRepository\TestSuite\Behavior\Features\Bootstrap\Features\WorkspacePublishing; -use Neos\ContentRepositoryRegistry\Factory\ProjectionCatchUpTrigger\CatchUpTriggerWithSynchronousOption; use Neos\EventStore\EventStoreInterface; use PHPUnit\Framework\Assert; @@ -85,13 +84,6 @@ trait CRTestSuiteTrait use WorkspaceDiscarding; use WorkspacePublishing; - protected function setupCRTestSuiteTrait(): void - { - if (getenv('CATCHUPTRIGGER_ENABLE_SYNCHRONOUS_OPTION')) { - CatchUpTriggerWithSynchronousOption::enableSynchronicityForSpeedingUpTesting(); - } - } - /** * @BeforeScenario * @throws \Exception @@ -139,18 +131,6 @@ protected function readPayloadTable(TableNode $payloadTable): array return $eventPayload; } - /** - * @When /^the graph projection is fully up to date$/ - */ - public function theGraphProjectionIsFullyUpToDate(): void - { - if ($this->lastCommandOrEventResult === null) { - throw new \RuntimeException('lastCommandOrEventResult not filled; so I cannot block!'); - } - $this->lastCommandOrEventResult->block(); - $this->lastCommandOrEventResult = null; - } - /** * @Then /^workspace "([^"]*)" points to another content stream than workspace "([^"]*)"$/ */ @@ -304,7 +284,6 @@ public function iPruneUnusedContentStreams(): void /** @var ContentStreamPruner $contentStreamPruner */ $contentStreamPruner = $this->getContentRepositoryService(new ContentStreamPrunerFactory()); $contentStreamPruner->prune(); - $this->lastCommandOrEventResult = $contentStreamPruner->getLastCommandResult(); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/ContentStreamClosing.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/ContentStreamClosing.php index cf1fdeee18d..81c21a91567 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/ContentStreamClosing.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/ContentStreamClosing.php @@ -37,7 +37,7 @@ public function theCommandCloseContentStreamIsExecutedWithPayload(TableNode $pay $commandArguments = $this->readPayloadTable($payloadTable); $command = CloseContentStream::create(ContentStreamId::fromString($commandArguments['contentStreamId'])); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/ContentStreamForking.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/ContentStreamForking.php index ce7bae86a26..dc859e092d4 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/ContentStreamForking.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/ContentStreamForking.php @@ -41,7 +41,7 @@ public function theCommandForkContentStreamIsExecutedWithPayload(TableNode $payl ContentStreamId::fromString($commandArguments['sourceContentStreamId']), ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeCopying.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeCopying.php index ae19812dc32..6c68de67e35 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeCopying.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeCopying.php @@ -67,6 +67,6 @@ public function theCommandCopyNodesRecursivelyIsExecutedCopyingTheCurrentNodeAgg ); $command = $command->withNodeAggregateIdMapping(NodeAggregateIdMapping::fromArray($commandArguments['nodeAggregateIdMapping'])); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } } diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeCreation.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeCreation.php index d9fe8b59c92..499376eeea2 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeCreation.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeCreation.php @@ -69,7 +69,7 @@ public function theCommandCreateRootNodeAggregateWithNodeIsExecutedWithPayload(T $command = $command->withTetheredDescendantNodeAggregateIds(NodeAggregateIdsByNodePaths::fromArray($commandArguments['tetheredDescendantNodeAggregateIds'])); } - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); $this->currentRootNodeAggregateId = $nodeAggregateId; } @@ -121,7 +121,7 @@ public function theCommandUpdateRootNodeAggregateDimensionsIsExecutedWithPayload $nodeAggregateId, ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); $this->currentRootNodeAggregateId = $nodeAggregateId; } @@ -158,7 +158,7 @@ public function theCommandCreateNodeAggregateWithNodeIsExecutedWithPayload(Table if (isset($commandArguments['tetheredDescendantNodeAggregateIds'])) { $command = $command->withTetheredDescendantNodeAggregateIds(NodeAggregateIdsByNodePaths::fromArray($commandArguments['tetheredDescendantNodeAggregateIds'])); } - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** @@ -208,8 +208,7 @@ public function theFollowingCreateNodeAggregateWithNodeCommandsAreExecuted(Table if (isset($row['tetheredDescendantNodeAggregateIds'])) { $command = $command->withTetheredDescendantNodeAggregateIds(NodeAggregateIdsByNodePaths::fromJsonString($row['tetheredDescendantNodeAggregateIds'])); } - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); - $this->theGraphProjectionIsFullyUpToDate(); + $this->currentContentRepository->handle($command); } } @@ -254,7 +253,7 @@ public function theCommandCreateNodeAggregateWithNodeAndSerializedPropertiesIsEx if (isset($commandArguments['tetheredDescendantNodeAggregateIds'])) { $command = $command->withTetheredDescendantNodeAggregateIds(NodeAggregateIdsByNodePaths::fromArray($commandArguments['tetheredDescendantNodeAggregateIds'])); } - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeDisabling.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeDisabling.php index 998f2862bb7..62c6948d904 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeDisabling.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeDisabling.php @@ -57,7 +57,7 @@ public function theCommandDisableNodeAggregateIsExecutedWithPayload(TableNode $p NodeVariantSelectionStrategy::from($commandArguments['nodeVariantSelectionStrategy']), ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** @@ -95,7 +95,7 @@ public function theCommandEnableNodeAggregateIsExecutedWithPayload(TableNode $pa NodeVariantSelectionStrategy::from($commandArguments['nodeVariantSelectionStrategy']), ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeModification.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeModification.php index df53480a408..db983fd4e59 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeModification.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeModification.php @@ -61,7 +61,7 @@ public function theCommandSetPropertiesIsExecutedWithPayload(TableNode $payloadT $this->deserializeProperties($commandArguments['propertyValues']), ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeMove.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeMove.php index fcced8fa130..73edb77c65c 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeMove.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeMove.php @@ -73,7 +73,7 @@ public function theCommandMoveNodeIsExecutedWithPayload(TableNode $payloadTable) $newSucceedingSiblingNodeAggregateId, ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeReferencing.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeReferencing.php index bffc305d9b7..19fc646c11c 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeReferencing.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeReferencing.php @@ -75,7 +75,7 @@ public function theCommandSetNodeReferencesIsExecutedWithPayload(TableNode $payl $references, ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeRemoval.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeRemoval.php index 8a6a0139f71..9bd92a7caba 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeRemoval.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeRemoval.php @@ -61,7 +61,7 @@ public function theCommandRemoveNodeAggregateIsExecutedWithPayload(TableNode $pa $command = $command->withRemovalAttachmentPoint(NodeAggregateId::fromString($commandArguments['removalAttachmentPoint'])); } - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeRenaming.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeRenaming.php index f6161196102..3288b58930f 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeRenaming.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeRenaming.php @@ -47,7 +47,7 @@ public function theCommandChangeNodeAggregateNameIsExecutedWithPayload(TableNode NodeName::fromString($commandArguments['newNodeName']), ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeTypeChange.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeTypeChange.php index 045b34a62ba..76eb758223e 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeTypeChange.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeTypeChange.php @@ -53,7 +53,7 @@ public function theCommandChangeNodeAggregateTypeIsExecutedWithPayload(TableNode $command = $command->withTetheredDescendantNodeAggregateIds(NodeAggregateIdsByNodePaths::fromArray($commandArguments['tetheredDescendantNodeAggregateIds'])); } - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeVariation.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeVariation.php index b73ed130810..3ead5a2de26 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeVariation.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/NodeVariation.php @@ -51,7 +51,7 @@ public function theCommandCreateNodeVariantIsExecutedWithPayload(TableNode $payl OriginDimensionSpacePoint::fromArray($commandArguments['sourceOrigin']), OriginDimensionSpacePoint::fromArray($commandArguments['targetOrigin']), ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/SubtreeTagging.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/SubtreeTagging.php index 3a4c78dba9b..f249060dca5 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/SubtreeTagging.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/SubtreeTagging.php @@ -61,7 +61,7 @@ public function theCommandTagSubtreeIsExecutedWithPayload(TableNode $payloadTabl SubtreeTag::fromString($commandArguments['tag']), ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** @@ -132,7 +132,7 @@ public function theCommandUntagSubtreeIsExecutedWithPayload(TableNode $payloadTa SubtreeTag::fromString($commandArguments['tag']), ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/WorkspaceCreation.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/WorkspaceCreation.php index c1db79de268..fec6f30e5a5 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/WorkspaceCreation.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/WorkspaceCreation.php @@ -15,6 +15,7 @@ namespace Neos\ContentRepository\TestSuite\Behavior\Features\Bootstrap\Features; use Behat\Gherkin\Node\TableNode; +use Neos\ContentRepository\Core\Feature\ContentStreamCreation\Command\CreateContentStream; use Neos\ContentRepository\Core\Feature\ContentStreamEventStreamName; use Neos\ContentRepository\Core\Feature\WorkspaceCreation\Command\CreateRootWorkspace; use Neos\ContentRepository\Core\Feature\WorkspaceCreation\Command\CreateWorkspace; @@ -39,6 +40,22 @@ abstract protected function readPayloadTable(TableNode $payloadTable): array; abstract protected function publishEvent(string $eventType, StreamName $streamName, array $eventPayload): void; + /** + * @When /^the command CreateContentStream is executed with payload:$/ + * @param TableNode $payloadTable + * @throws \Exception + */ + public function theCommandCreateContentStreamIsExecutedWithPayload(TableNode $payloadTable) + { + $commandArguments = $this->readPayloadTable($payloadTable); + + $command = CreateContentStream::create( + ContentStreamId::fromString($commandArguments['contentStreamId']), + ); + + $this->currentContentRepository->handle($command); + } + /** * @When /^the command CreateRootWorkspace is executed with payload:$/ * @param TableNode $payloadTable @@ -55,7 +72,7 @@ public function theCommandCreateRootWorkspaceIsExecutedWithPayload(TableNode $pa ContentStreamId::fromString($commandArguments['newContentStreamId']) ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** * @Given /^the event RootWorkspaceWasCreated was published with payload:$/ @@ -88,7 +105,7 @@ public function theCommandCreateWorkspaceIsExecutedWithPayload(TableNode $payloa isset($commandArguments['workspaceOwner']) ? UserId::fromString($commandArguments['workspaceOwner']) : null ); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } @@ -110,7 +127,7 @@ public function theCommandRebaseWorkspaceIsExecutedWithPayload(TableNode $payloa $command = $command->withErrorHandlingStrategy(RebaseErrorHandlingStrategy::from($commandArguments['rebaseErrorHandlingStrategy'])); } - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/WorkspaceDiscarding.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/WorkspaceDiscarding.php index 3cd4136c4f5..28aaf305b73 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/WorkspaceDiscarding.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/WorkspaceDiscarding.php @@ -46,7 +46,7 @@ public function theCommandDiscardWorkspaceIsExecuted(TableNode $payloadTable): v $command = $command->withNewContentStreamId(ContentStreamId::fromString($commandArguments['newContentStreamId'])); } - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } @@ -67,7 +67,7 @@ public function theCommandDiscardIndividualNodesFromWorkspaceIsExecuted(TableNod $command = $command->withNewContentStreamId(ContentStreamId::fromString($commandArguments['newContentStreamId'])); } - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/WorkspacePublishing.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/WorkspacePublishing.php index 9f74b4a5bee..0b7c9cf04e9 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/WorkspacePublishing.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/Features/WorkspacePublishing.php @@ -53,7 +53,7 @@ public function theCommandPublishIndividualNodesFromWorkspaceIsExecuted(TableNod $command = $command->withContentStreamIdForRemainingPart(ContentStreamId::fromString($commandArguments['contentStreamIdForRemainingPart'])); } - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** @@ -85,7 +85,7 @@ public function theCommandPublishWorkspaceIsExecuted(TableNode $payloadTable): v ); } - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** diff --git a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/GenericCommandExecutionAndEventPublication.php b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/GenericCommandExecutionAndEventPublication.php index 114a73ce42f..c8e2118d5e4 100644 --- a/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/GenericCommandExecutionAndEventPublication.php +++ b/Neos.ContentRepository.TestSuite/Classes/Behavior/Features/Bootstrap/GenericCommandExecutionAndEventPublication.php @@ -81,7 +81,7 @@ public function theCommandIsExecutedWithPayload(string $shortCommandName, TableN $command = $commandClassName::fromArray($commandArguments); - $this->lastCommandOrEventResult = $this->currentContentRepository->handle($command); + $this->currentContentRepository->handle($command); } /** @@ -140,7 +140,7 @@ protected function publishEvent(string $eventType, StreamName $streamName, array ->getValue($eventPersister); $event = $eventNormalizer->denormalize($artificiallyConstructedEvent); - $this->lastCommandOrEventResult = $eventPersister->publishEvents(new EventsToPublish( + $eventPersister->publishEvents(new EventsToPublish( $streamName, Events::with($event), ExpectedVersion::ANY() diff --git a/Neos.Neos/Tests/Behavior/Features/Bootstrap/FeatureContext.php b/Neos.Neos/Tests/Behavior/Features/Bootstrap/FeatureContext.php index 631f0469d7f..ac1b37f4ba5 100644 --- a/Neos.Neos/Tests/Behavior/Features/Bootstrap/FeatureContext.php +++ b/Neos.Neos/Tests/Behavior/Features/Bootstrap/FeatureContext.php @@ -56,7 +56,6 @@ public function __construct() $this->contentRepositoryRegistry = $this->getObject(ContentRepositoryRegistry::class); $this->persistenceManager = $this->getObject(PersistenceManagerInterface::class); - $this->setupCRTestSuiteTrait(); } /* diff --git a/Neos.Neos/Tests/Behavior/Features/Bootstrap/RoutingTrait.php b/Neos.Neos/Tests/Behavior/Features/Bootstrap/RoutingTrait.php index ed45891c0b7..07957742e4e 100644 --- a/Neos.Neos/Tests/Behavior/Features/Bootstrap/RoutingTrait.php +++ b/Neos.Neos/Tests/Behavior/Features/Bootstrap/RoutingTrait.php @@ -164,18 +164,6 @@ public function anAssetExists(string $assetIdentifier, string $fileName, string $persistenceManager->clearState(); } - /** - * @When The documenturipath projection is up to date - */ - public function theDocumenturipathProjectionIsUpToDate(): void - { - if ($this->lastCommandOrEventResult === null) { - // we just blocked in "The graph projection is up to date" - return; - } - $this->lastCommandOrEventResult->block(); - } - /** * @When I am on URL :url */ diff --git a/Neos.Neos/Tests/Behavior/Features/ContentCache/Assets.feature b/Neos.Neos/Tests/Behavior/Features/ContentCache/Assets.feature index 2d4a8a34fd7..ce87df26d85 100644 --- a/Neos.Neos/Tests/Behavior/Features/ContentCache/Assets.feature +++ b/Neos.Neos/Tests/Behavior/Features/ContentCache/Assets.feature @@ -58,7 +58,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on asset changes | Key | Value | | nodeAggregateId | "root" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | initialPropertyValues | nodeName | | a | root | Neos.Neos:Site | {} | site | diff --git a/Neos.Neos/Tests/Behavior/Features/ContentCache/ConvertUris.feature b/Neos.Neos/Tests/Behavior/Features/ContentCache/ConvertUris.feature index fad01fcfe6c..01ed29eace8 100644 --- a/Neos.Neos/Tests/Behavior/Features/ContentCache/ConvertUris.feature +++ b/Neos.Neos/Tests/Behavior/Features/ContentCache/ConvertUris.feature @@ -41,7 +41,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on DynamicNodeTag | Key | Value | | nodeAggregateId | "root" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | initialPropertyValues | nodeName | | a | root | Neos.Neos:Site | {} | a | @@ -118,8 +117,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on DynamicNodeTag | contentStreamId | "cs-identifier" | | nodeAggregateId | "a1" | | propertyValues | {"uriPathSegment": "a1-new"} | - And the graph projection is fully up to date - And The documenturipath projection is up to date And the Fusion context node is a2 And I execute the following Fusion code: @@ -155,8 +152,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on DynamicNodeTag | contentStreamId | "cs-identifier" | | nodeAggregateId | "a1" | | propertyValues | {"uriPathSegment": "a1-new"} | - And the graph projection is fully up to date - And The documenturipath projection is up to date And I am in workspace "live" and dimension space point {} And the Fusion context node is a2 diff --git a/Neos.Neos/Tests/Behavior/Features/ContentCache/Nodes.feature b/Neos.Neos/Tests/Behavior/Features/ContentCache/Nodes.feature index ee88f83659e..26305010171 100644 --- a/Neos.Neos/Tests/Behavior/Features/ContentCache/Nodes.feature +++ b/Neos.Neos/Tests/Behavior/Features/ContentCache/Nodes.feature @@ -38,7 +38,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on node and nodety | Key | Value | | nodeAggregateId | "root" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | initialPropertyValues | nodeName | | a | root | Neos.Neos:Site | {} | site | @@ -133,7 +132,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on node and nodety | contentStreamId | "cs-identifier" | | nodeAggregateId | "a1" | | propertyValues | {"title": "Node a1 new"} | - And the graph projection is fully up to date And the Fusion context node is a1 And I execute the following Fusion code: @@ -167,7 +165,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on node and nodety | contentStreamId | "cs-identifier" | | nodeAggregateId | "a2" | | propertyValues | {"title": "Node a2 new"} | - And the graph projection is fully up to date And the Fusion context node is a1 And I execute the following Fusion code: @@ -202,7 +199,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on node and nodety | contentStreamId | "cs-identifier" | | nodeAggregateId | "a3" | | propertyValues | {"title": "Node a3 new"} | - And the graph projection is fully up to date And the Fusion context node is a1 And I execute the following Fusion code: @@ -236,7 +232,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on node and nodety | contentStreamId | "cs-identifier" | | nodeAggregateId | "a1" | | propertyValues | {"title": "Node a1 new"} | - And the graph projection is fully up to date And the Fusion context node is a2 And I execute the following Fusion code: @@ -269,7 +264,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on node and nodety | contentStreamId | "cs-identifier" | | nodeAggregateId | "a1-1" | | propertyValues | {"title": "Node a1-1 new"} | - And the graph projection is fully up to date And the Fusion context node is "a1" And I execute the following Fusion code: diff --git a/Neos.Neos/Tests/Behavior/Features/ContentCache/NodesInOtherWorkspace.feature b/Neos.Neos/Tests/Behavior/Features/ContentCache/NodesInOtherWorkspace.feature index 183dc20ffcc..edb3c90f2e9 100644 --- a/Neos.Neos/Tests/Behavior/Features/ContentCache/NodesInOtherWorkspace.feature +++ b/Neos.Neos/Tests/Behavior/Features/ContentCache/NodesInOtherWorkspace.feature @@ -43,7 +43,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on node and nodety | Key | Value | | nodeAggregateId | "root" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | initialPropertyValues | nodeName | | a | root | Neos.Neos:Site | {} | site | @@ -141,7 +140,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on node and nodety | contentStreamId | "cs-identifier" | | nodeAggregateId | "a1" | | propertyValues | {"title": "Node a1 new"} | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the Fusion context node is a1 @@ -177,7 +175,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on node and nodety | contentStreamId | "cs-identifier" | | nodeAggregateId | "a2" | | propertyValues | {"title": "Node a2 new"} | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the Fusion context node is a1 @@ -213,7 +210,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on node and nodety | contentStreamId | "cs-identifier" | | nodeAggregateId | "a1" | | propertyValues | {"title": "Node a1 new"} | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the Fusion context node is a2 @@ -249,7 +245,6 @@ Feature: Tests for the ContentCacheFlusher and cache flushing on node and nodety | contentStreamId | "cs-identifier" | | nodeAggregateId | "a1-1" | | propertyValues | {"title": "Node a1-1 new"} | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {} And the Fusion context node is "a1" diff --git a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Basic.feature b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Basic.feature index 7c360e6a7f9..70cbc3f531f 100644 --- a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Basic.feature +++ b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Basic.feature @@ -36,7 +36,6 @@ Feature: Basic routing functionality (match & resolve document nodes in one dime | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date # lady-eleonode-rootford # shernode-homes @@ -66,7 +65,6 @@ Feature: Basic routing functionality (match & resolve document nodes in one dime resolver: factoryClassName: Neos\Neos\FrontendRouting\DimensionResolution\Resolver\NoopResolverFactory """ - And The documenturipath projection is up to date Scenario: Match homepage URL When I am on URL "/" @@ -94,7 +92,6 @@ Feature: Basic routing functionality (match & resolve document nodes in one dime | nodeAggregateId | "sir-david-nodenborough" | | originDimensionSpacePoint | {} | | propertyValues | {"uriPathSegment": "david-nodenborough-updated"} | - And The documenturipath projection is up to date And I am on URL "/" Then the node "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough-updated" And the node "earl-o-documentbourgh" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough-updated/earl-document" @@ -105,13 +102,11 @@ Feature: Basic routing functionality (match & resolve document nodes in one dime | nodeAggregateId | "sir-david-nodenborough" | | originDimensionSpacePoint | {} | | propertyValues | {"uriPathSegment": "david-nodenborough-updated-a"} | - And The documenturipath projection is up to date When the command SetNodeProperties is executed with payload: | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | | originDimensionSpacePoint | {} | | propertyValues | {"uriPathSegment": "david-nodenborough-updated-b"} | - And The documenturipath projection is up to date And I am on URL "/" Then the node "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough-updated-b" @@ -131,7 +126,6 @@ Feature: Basic routing functionality (match & resolve document nodes in one dime | dimensionSpacePoint | {} | | newParentNodeAggregateId | "shernode-homes" | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date And I am on URL "/earl-document" Then the matched node should be "earl-o-documentbourgh" in content stream "cs-identifier" and dimension "{}" And the node "earl-o-documentbourgh" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/earl-document" @@ -143,7 +137,6 @@ Feature: Basic routing functionality (match & resolve document nodes in one dime | dimensionSpacePoint | {} | | newParentNodeAggregateId | "earl-o-documentbourgh" | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date And I am on URL "/david-nodenborough/earl-document/nody" Then the matched node should be "nody-mc-nodeface" in content stream "cs-identifier" and dimension "{}" And the node "nody-mc-nodeface" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough/earl-document/nody" diff --git a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Dimensions.feature b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Dimensions.feature index 6e40d5409db..020923121dd 100644 --- a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Dimensions.feature +++ b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Dimensions.feature @@ -48,7 +48,6 @@ Feature: Routing functionality with multiple content dimensions | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | initialPropertyValues | nodeName | | sir-david-nodenborough | lady-eleonode-rootford | Neos.Neos:Test.Routing.Page | {"uriPathSegment": "ignore-me"} | node1 | @@ -59,7 +58,6 @@ Feature: Routing functionality with multiple content dimensions | nodeAggregateId | "carl-destinode" | | sourceOrigin | {"market":"DE", "language":"en"} | | targetOrigin | {"market":"DE", "language":"de"} | - And the graph projection is fully up to date And the command SetNodeProperties is executed with payload: | Key | Value | | nodeAggregateId | "carl-destinode" | @@ -94,9 +92,6 @@ Feature: Routing functionality with multiple content dimensions DE: '' """ - And the graph projection is fully up to date - And The documenturipath projection is up to date - Scenario: Resolve homepage URL in multiple dimensions When I am on URL "/" Then the node "sir-david-nodenborough" in content stream "cs-identifier" and dimension '{"market":"DE", "language":"en"}' should resolve to URL "/" @@ -207,8 +202,6 @@ Feature: Routing functionality with multiple content dimensions When the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "migration-cs" | - And the graph projection is fully up to date - And The documenturipath projection is up to date When I am on URL "/" Then the node "carl-destinode" in content stream "cs-identifier" and dimension '{"market":"CH", "language":"en"}' should resolve to URL "/nody/carl" @@ -278,8 +271,6 @@ Feature: Routing functionality with multiple content dimensions When the command PublishWorkspace is executed with payload: | Key | Value | | workspaceName | "migration-cs" | - And the graph projection is fully up to date - And The documenturipath projection is up to date When I am on URL "/" And the node "carl-destinode" in content stream "cs-identifier" and dimension '{"market":"DE", "language":"de"}' should resolve to URL "/de/nody/karl-de" @@ -292,7 +283,6 @@ Feature: Routing functionality with multiple content dimensions | nodeAggregateId | "carl-destinode" | | originDimensionSpacePoint | {"market":"DE", "language":"de"} | | propertyValues | {"uriPathSegment": "karl-aktualisiert"} | - And The documenturipath projection is up to date When I am on URL "/" And the node "carl-destinode" in content stream "cs-identifier" and dimension '{"market":"DE", "language":"de"}' should resolve to URL "/de/nody/karl-aktualisiert" # testcase for #4256 @@ -333,29 +323,23 @@ Feature: Routing functionality with multiple content dimensions And the command UpdateRootNodeAggregateDimensions is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date # create variant for fr and sites node When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"market":"DE", "language":"en"} | | targetOrigin | {"market":"DE", "language":"fr"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"market":"DE", "language":"en"} | | targetOrigin | {"market":"DE", "language":"fr"} | - - And the graph projection is fully up to date And the command SetNodeProperties is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {"market":"DE", "language":"fr"} | | propertyValues | {"uriPathSegment": "nody-fr"} | - And the graph projection is fully up to date - When I am on URL "/" Then the node "sir-david-nodenborough" in content stream "cs-identifier" and dimension '{"market":"DE", "language":"fr"}' should resolve to URL "/fr/" Then the node "nody-mc-nodeface" in content stream "cs-identifier" and dimension '{"market":"DE", "language":"fr"}' should resolve to URL "/fr/nody-fr" @@ -395,28 +379,23 @@ Feature: Routing functionality with multiple content dimensions And the command UpdateRootNodeAggregateDimensions is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | - And the graph projection is fully up to date # create variant for fr and sites node When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | | sourceOrigin | {"market":"DE", "language":"en"} | | targetOrigin | {"market":"DE", "language":"fr"} | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"market":"DE", "language":"en"} | | targetOrigin | {"market":"DE", "language":"fr"} | - And the graph projection is fully up to date - And the command SetNodeProperties is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | | originDimensionSpacePoint | {"market":"DE", "language":"fr"} | | propertyValues | {"uriPathSegment": "nody-fr"} | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | @@ -425,9 +404,6 @@ Feature: Routing functionality with multiple content dimensions | newParentNodeAggregateId | "lady-eleonode-rootford" | | newSucceedingSiblingNodeAggregateId | null | | relationDistributionStrategy | "scatter" | - And The documenturipath projection is up to date - - And the graph projection is fully up to date When I am on URL "/" Then the node "sir-david-nodenborough" in content stream "cs-identifier" and dimension '{"market":"DE", "language":"en"}' should resolve to URL "/" diff --git a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/DisableNodes.feature b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/DisableNodes.feature index 7539f67e1af..c275c47c6e9 100644 --- a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/DisableNodes.feature +++ b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/DisableNodes.feature @@ -35,7 +35,6 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date # lady-eleonode-rootford # shernode-homes @@ -67,15 +66,12 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes factoryClassName: Neos\Neos\FrontendRouting\DimensionResolution\Resolver\NoopResolverFactory """ - And The documenturipath projection is up to date - Scenario: Disable leaf node When the command DisableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "leaf-mc-node" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And The documenturipath projection is up to date Then No node should match URL "/david-nodenborough/earl-document/leaf" And The node "leaf-mc-node" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough/earl-document/leaf" @@ -85,7 +81,6 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | nodeAggregateId | "sir-david-nodenborough" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And The documenturipath projection is up to date Then No node should match URL "/david-nodenborough" And No node should match URL "/david-nodenborough/earl-document" And The node "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough" @@ -102,8 +97,6 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | nodeAggregateId | "earl-o-documentbourgh" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date - And The documenturipath projection is up to date Then No node should match URL "/david-nodenborough" And No node should match URL "/david-nodenborough/earl-document" And The node "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough" @@ -113,8 +106,6 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | nodeAggregateId | "sir-david-nodenborough" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date - And The documenturipath projection is up to date When I am on URL "/david-nodenborough" Then the matched node should be "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" And No node should match URL "/david-nodenborough/earl-document" @@ -132,8 +123,6 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | nodeAggregateId | "earl-o-documentbourgh" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date - And The documenturipath projection is up to date Then No node should match URL "/david-nodenborough" And No node should match URL "/david-nodenborough/earl-document" And The node "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough" @@ -143,8 +132,6 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | nodeAggregateId | "earl-o-documentbourgh" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date - And The documenturipath projection is up to date Then No node should match URL "/david-nodenborough" And No node should match URL "/david-nodenborough/earl-document" And The node "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough" @@ -162,8 +149,6 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | nodeAggregateId | "sir-david-nodenborough" | | affectedDimensionSpacePoints | [{}] | | tag | "disabled" | - And the graph projection is fully up to date - And The documenturipath projection is up to date Then No node should match URL "/david-nodenborough" And No node should match URL "/david-nodenborough/earl-document" And The node "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough" @@ -173,8 +158,6 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | nodeAggregateId | "sir-david-nodenborough" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date - And The documenturipath projection is up to date When I am on URL "/david-nodenborough" Then the matched node should be "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" And The node "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough" @@ -192,8 +175,6 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | nodeAggregateId | "earl-o-documentbourgh" | | affectedDimensionSpacePoints | [{}] | | tag | "disabled" | - And the graph projection is fully up to date - And The documenturipath projection is up to date Then No node should match URL "/david-nodenborough" And No node should match URL "/david-nodenborough/earl-document" And The node "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough" @@ -209,8 +190,6 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | nodeAggregateId | "sir-david-nodenborough" | | affectedDimensionSpacePoints | [{}] | | tag | "disabled" | - And the graph projection is fully up to date - And The documenturipath projection is up to date When I am on URL "/david-nodenborough" Then the matched node should be "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" And The node "sir-david-nodenborough" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough" @@ -222,14 +201,12 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | nodeAggregateId | "sir-david-nodenborough" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "earl-o-documentbourgh" | | dimensionSpacePoint | {} | | newParentNodeAggregateId | "nody-mc-nodeface" | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date When I am on URL "/nody/earl-document" Then the matched node should be "earl-o-documentbourgh" in content stream "cs-identifier" and dimension "{}" @@ -239,14 +216,12 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | nodeAggregateId | "earl-o-documentbourgh" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date When the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "earl-o-documentbourgh" | | dimensionSpacePoint | {} | | newParentNodeAggregateId | "nody-mc-nodeface" | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date Then No node should match URL "/nody/earl-document" And The node "leaf-mc-node" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/nody/earl-document/leaf" @@ -256,11 +231,9 @@ Feature: Routing behavior of removed, disabled and re-enabled nodes | nodeAggregateId | "nody-mc-nodeface" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And the graph projection is fully up to date When the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | initialPropertyValues | | nody-mc-nodeface-child | nody-mc-nodeface | Neos.Neos:Test.Routing.Page | {"uriPathSegment": "nody-child"} | - And The documenturipath projection is up to date When the command EnableNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-nodeface" | diff --git a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Lowlevel_ProjectionTests.feature b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Lowlevel_ProjectionTests.feature index 54999dbed75..7e64e235cc5 100644 --- a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Lowlevel_ProjectionTests.feature +++ b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Lowlevel_ProjectionTests.feature @@ -44,7 +44,6 @@ Feature: Low level tests covering the inner behavior of the routing projection | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | initialPropertyValues | nodeName | @@ -53,7 +52,6 @@ Feature: Low level tests covering the inner behavior of the routing projection | b | shernode-homes | Neos.Neos:Test.Routing.Page | {"uriPathSegment": "b"} | b | | c | shernode-homes | Neos.Neos:Test.Routing.Page | {"uriPathSegment": "c"} | c | And A site exists for node name "site" - And The documenturipath projection is up to date Scenario: initial state Then I expect the documenturipath table to contain exactly: @@ -71,7 +69,6 @@ Feature: Low level tests covering the inner behavior of the routing projection | dimensionSpacePoint | {} | | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | @@ -87,7 +84,6 @@ Feature: Low level tests covering the inner behavior of the routing projection | dimensionSpacePoint | {} | | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "b" | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | @@ -103,7 +99,6 @@ Feature: Low level tests covering the inner behavior of the routing projection | dimensionSpacePoint | {} | | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "a" | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | @@ -119,7 +114,6 @@ Feature: Low level tests covering the inner behavior of the routing projection | dimensionSpacePoint | {} | | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "c" | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | @@ -135,7 +129,6 @@ Feature: Low level tests covering the inner behavior of the routing projection | dimensionSpacePoint | {} | | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | @@ -151,14 +144,12 @@ Feature: Low level tests covering the inner behavior of the routing projection | dimensionSpacePoint | {} | | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "a" | - And the graph projection is fully up to date And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "c" | | dimensionSpacePoint | {} | | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "a" | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | @@ -174,7 +165,6 @@ Feature: Low level tests covering the inner behavior of the routing projection | dimensionSpacePoint | {} | | newParentNodeAggregateId | "a" | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | @@ -192,14 +182,12 @@ Feature: Low level tests covering the inner behavior of the routing projection | parentNodeAggregateId | "b" | | initialPropertyValues | {"uriPathSegment": "b1"} | | succeedingSiblingNodeAggregateId | null | - And the graph projection is fully up to date And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "b" | | dimensionSpacePoint | {} | | newParentNodeAggregateId | "a" | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | @@ -218,14 +206,12 @@ Feature: Low level tests covering the inner behavior of the routing projection | parentNodeAggregateId | "b" | | initialPropertyValues | {"uriPathSegment": "b1"} | | succeedingSiblingNodeAggregateId | null | - And the graph projection is fully up to date And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "b1" | | dimensionSpacePoint | {} | | newParentNodeAggregateId | "a" | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | @@ -248,7 +234,6 @@ Feature: Low level tests covering the inner behavior of the routing projection | dimensionSpacePoint | {} | | newParentNodeAggregateId | "a" | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | @@ -273,7 +258,6 @@ Feature: Low level tests covering the inner behavior of the routing projection | dimensionSpacePoint | {} | | newParentNodeAggregateId | "b" | | newSucceedingSiblingNodeAggregateId | "b2" | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | @@ -291,7 +275,6 @@ Feature: Low level tests covering the inner behavior of the routing projection | nodeAggregateId | "c" | | newNodeTypeName | "Neos.Neos:Test.Routing.SomeOtherPage" | | strategy | "happypath" | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | diff --git a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/MultiSiteLinking.feature b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/MultiSiteLinking.feature index 3d402e4ee54..bef76957eb9 100644 --- a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/MultiSiteLinking.feature +++ b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/MultiSiteLinking.feature @@ -44,7 +44,6 @@ Feature: Linking between multiple websites | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date # lady-eleonode-rootford # shernode-homes @@ -78,7 +77,6 @@ Feature: Linking between multiple websites resolver: factoryClassName: Neos\Neos\FrontendRouting\DimensionResolution\Resolver\NoopResolverFactory """ - And The documenturipath projection is up to date Scenario: Resolve foreign website homepage node When I am on URL "http://domain1.tld/" diff --git a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/NodeCreationEdgeCases.feature b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/NodeCreationEdgeCases.feature index fe34203f36f..2af04b6d801 100644 --- a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/NodeCreationEdgeCases.feature +++ b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/NodeCreationEdgeCases.feature @@ -27,20 +27,17 @@ Feature: Test cases for node creation edge cases | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example":"source"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "shernode-homes" | | nodeTypeName | "Neos.Neos:Site" | | parentNodeAggregateId | "lady-eleonode-rootford" | | originDimensionSpacePoint | {"example":"source"} | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | parentNodeAggregateId | succeedingSiblingNodeAggregateId | nodeTypeName | initialPropertyValues | # Let's prepare some siblings to check orderings. Also, everything gets better with siblings. @@ -53,7 +50,6 @@ Feature: Test cases for node creation edge cases | nodeAggregateId | "younger-mc-nodeface" | | coveredDimensionSpacePoint | {"example":"spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | parentNodeAggregateId | succeedingSiblingNodeAggregateId | nodeTypeName | initialPropertyValues | | nody-mc-nodeface | document | shernode-homes | younger-mc-nodeface | Neos.Neos:Document | {"uriPathSegment": "nody"} | diff --git a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/NodeVariationEdgeCases.feature b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/NodeVariationEdgeCases.feature index 8265f425db0..0fae43d5649 100644 --- a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/NodeVariationEdgeCases.feature +++ b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/NodeVariationEdgeCases.feature @@ -27,26 +27,22 @@ Feature: Test cases for node variation edge cases | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example":"source"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "shernode-homes" | | nodeTypeName | "Neos.Neos:Site" | | parentNodeAggregateId | "lady-eleonode-rootford" | | originDimensionSpacePoint | {"example":"source"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "shernode-homes" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"peer"} | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | originDimensionSpacePoint | nodeName | parentNodeAggregateId | succeedingSiblingNodeAggregateId | nodeTypeName | initialPropertyValues | # Set up our test subject document @@ -61,13 +57,11 @@ Feature: Test cases for node variation edge cases | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"peer"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "elder-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"peer"} | - And the graph projection is fully up to date # Complete the sibling set with a node in the target DSP between the middle and last node And the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | @@ -77,13 +71,11 @@ Feature: Test cases for node variation edge cases | originDimensionSpacePoint | {"example":"peer"} | | nodeName | "younger-document" | | initialPropertyValues | {"uriPathSegment": "younger"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "youngest-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"peer"} | - And the graph projection is fully up to date Then I expect the documenturipath table to contain exactly: # source: 65901ded4f068dac14ad0dce4f459b29 @@ -136,20 +128,17 @@ Feature: Test cases for node variation edge cases | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example":"source"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "shernode-homes" | | nodeTypeName | "Neos.Neos:Site" | | parentNodeAggregateId | "lady-eleonode-rootford" | | originDimensionSpacePoint | {"example":"rootGeneral"} | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | originDimensionSpacePoint | nodeName | parentNodeAggregateId | succeedingSiblingNodeAggregateId | nodeTypeName | initialPropertyValues | # Let's create some siblings, both in source and target, to check ordering @@ -164,19 +153,16 @@ Feature: Test cases for node variation edge cases | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"general"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "elder-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"general"} | - And the graph projection is fully up to date And the command CreateNodeVariant is executed with payload: | Key | Value | | nodeAggregateId | "youngest-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"general"} | - And the graph projection is fully up to date Then I expect the documenturipath table to contain exactly: # general: 033e5de7b423f45bb4f5a09f73af839e @@ -234,20 +220,17 @@ Feature: Test cases for node variation edge cases | workspaceTitle | "Live" | | workspaceDescription | "The live workspace" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" and dimension space point {"example":"source"} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the command CreateNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "shernode-homes" | | nodeTypeName | "Neos.Neos:Site" | | parentNodeAggregateId | "lady-eleonode-rootford" | | originDimensionSpacePoint | {"example":"source"} | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | nodeName | parentNodeAggregateId | succeedingSiblingNodeAggregateId | nodeTypeName | initialPropertyValues | # Let's create our test subject... @@ -262,7 +245,6 @@ Feature: Test cases for node variation edge cases | nodeAggregateId | "nody-mc-nodeface" | | coveredDimensionSpacePoint | {"example":"spec"} | | nodeVariantSelectionStrategy | "allSpecializations" | - And the graph projection is fully up to date When the command CreateNodeVariant is executed with payload: | Key | Value | @@ -270,7 +252,6 @@ Feature: Test cases for node variation edge cases | nodeAggregateId | "nody-mc-nodeface" | | sourceOrigin | {"example":"source"} | | targetOrigin | {"example":"spec"} | - And the graph projection is fully up to date Then I expect the documenturipath table to contain exactly: # source: 65901ded4f068dac14ad0dce4f459b29 diff --git a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/RouteCache.feature b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/RouteCache.feature index 6a39474e497..8b3cc7b67ba 100644 --- a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/RouteCache.feature +++ b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/RouteCache.feature @@ -35,7 +35,6 @@ Feature: Route cache invalidation | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date # lady-eleonode-rootford # shernode-homes @@ -65,7 +64,6 @@ Feature: Route cache invalidation resolver: factoryClassName: Neos\Neos\FrontendRouting\DimensionResolution\Resolver\NoopResolverFactory """ - And The documenturipath projection is up to date Scenario: Change uri path segment invalidates route cache When I am on URL "/" @@ -76,7 +74,6 @@ Feature: Route cache invalidation | nodeAggregateId | "sir-david-nodenborough" | | originDimensionSpacePoint | {} | | propertyValues | {"uriPathSegment": "david-nodenborough-updated"} | - And The documenturipath projection is up to date Then No node should match URL "/david-nodenborough" And No node should match URL "/david-nodenborough/earl-document" @@ -90,13 +87,11 @@ Feature: Route cache invalidation | nodeAggregateId | "sir-david-nodenborough" | | originDimensionSpacePoint | {} | | propertyValues | {"uriPathSegment": "david-nodenborough-updated-a"} | - And The documenturipath projection is up to date When the command SetNodeProperties is executed with payload: | Key | Value | | nodeAggregateId | "sir-david-nodenborough" | | originDimensionSpacePoint | {} | | propertyValues | {"uriPathSegment": "david-nodenborough-updated-b"} | - And The documenturipath projection is up to date Then No node should match URL "/david-nodenborough" And No node should match URL "/david-nodenborough/earl-document" @@ -115,7 +110,6 @@ Feature: Route cache invalidation | dimensionSpacePoint | {} | | newParentNodeAggregateId | "shernode-homes" | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date Then No node should match URL "/david-nodenborough/earl-document" @@ -129,7 +123,6 @@ Feature: Route cache invalidation | dimensionSpacePoint | {} | | newParentNodeAggregateId | "earl-o-documentbourgh" | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date Then No node should match URL "/nody" @@ -143,7 +136,6 @@ Feature: Route cache invalidation | nodeAggregateId | "sir-david-nodenborough" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And The documenturipath projection is up to date Then No node should match URL "/david-nodenborough" And No node should match URL "/david-nodenborough/earl-document" @@ -159,7 +151,6 @@ Feature: Route cache invalidation | nodeAggregateId | "sir-david-nodenborough" | | coveredDimensionSpacePoint | {} | | nodeVariantSelectionStrategy | "allVariants" | - And The documenturipath projection is up to date Then No node should match URL "/david-nodenborough" And No node should match URL "/david-nodenborough/earl-document" diff --git a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Shortcuts.feature b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Shortcuts.feature index d937e5607a7..f99ca13c2aa 100644 --- a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Shortcuts.feature +++ b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/Shortcuts.feature @@ -52,7 +52,6 @@ Feature: Routing behavior of shortcut nodes | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date # lady-eleonode-rootford # shernode-homes @@ -94,7 +93,6 @@ Feature: Routing behavior of shortcut nodes resolver: factoryClassName: Neos\Neos\FrontendRouting\DimensionResolution\Resolver\NoopResolverFactory """ - And The documenturipath projection is up to date Scenario: Shortcut parent node When I am on URL "/" @@ -119,7 +117,6 @@ Feature: Routing behavior of shortcut nodes | nodeAggregateId | "shortcut-external-url" | | originDimensionSpacePoint | {} | | propertyValues | {"target": "/some/relative/url"} | - And The documenturipath projection is up to date When I am on URL "https://current.host/" Then the node "shortcut-external-url" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/some/relative/url" @@ -129,7 +126,6 @@ Feature: Routing behavior of shortcut nodes | nodeAggregateId | "shortcut-external-url" | | originDimensionSpacePoint | {} | | propertyValues | {"target": "https://www.some-domain.tld:1234/some/url/path?some=query#some-fragment"} | - And The documenturipath projection is up to date When I am on URL "http://current.host/" Then the node "shortcut-external-url" in content stream "cs-identifier" and dimension "{}" should resolve to URL "https://www.some-domain.tld:1234/some/url/path?some=query#some-fragment" @@ -146,7 +142,6 @@ Feature: Routing behavior of shortcut nodes | parentNodeAggregateId | "shortcut-first-child-node" | | initialPropertyValues | {"uriPathSegment": "new-child-node"} | | succeedingSiblingNodeAggregateId | "first-child-node" | - And The documenturipath projection is up to date When I am on URL "/" Then the node "shortcut-first-child-node" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough/shortcuts/shortcut-first-child/new-child-node" @@ -157,7 +152,6 @@ Feature: Routing behavior of shortcut nodes | dimensionSpacePoint | {} | | newParentNodeAggregateId | "shortcut-first-child-node" | | newSucceedingSiblingNodeAggregateId | "first-child-node" | - And The documenturipath projection is up to date When I am on URL "/" Then the node "shortcut-first-child-node" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough/shortcuts/shortcut-first-child/nodeward-3" @@ -168,7 +162,6 @@ Feature: Routing behavior of shortcut nodes | dimensionSpacePoint | {} | | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | "first-child-node" | - And The documenturipath projection is up to date When I am on URL "/" Then the node "shortcut-first-child-node" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough/shortcuts/shortcut-first-child/second-child-node" @@ -179,7 +172,6 @@ Feature: Routing behavior of shortcut nodes | dimensionSpacePoint | {} | | newParentNodeAggregateId | "shortcut-first-child-node" | | newSucceedingSiblingNodeAggregateId | "second-child-node" | - And The documenturipath projection is up to date When I am on URL "/" Then the node "shortcut-first-child-node" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough/shortcuts/shortcut-first-child/first-child-node" @@ -192,14 +184,12 @@ Feature: Routing behavior of shortcut nodes | parentNodeAggregateId | "shortcut-first-child-node" | | initialPropertyValues | {"uriPathSegment": "new-child-node"} | | succeedingSiblingNodeAggregateId | "second-child-node" | - And the graph projection is fully up to date And the command MoveNodeAggregate is executed with payload: | Key | Value | | nodeAggregateId | "nody-mc-newface" | | dimensionSpacePoint | {} | | newParentNodeAggregateId | null | | newSucceedingSiblingNodeAggregateId | null | - And The documenturipath projection is up to date When I am on URL "/" Then the node "shortcut-first-child-node" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough/shortcuts/shortcut-first-child/first-child-node" @@ -209,7 +199,6 @@ Feature: Routing behavior of shortcut nodes | nodeAggregateId | "sir-david-nodenborough-ii" | | newNodeTypeName | "Neos.Neos:Shortcut" | | strategy | "happypath" | - And The documenturipath projection is up to date When I am on URL "/" Then the node "sir-david-nodenborough-ii" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough-2/nodeward-3" @@ -219,7 +208,6 @@ Feature: Routing behavior of shortcut nodes | nodeAggregateId | "shortcut-first-child-node" | | newNodeTypeName | "Neos.Neos:Test.Routing.Page" | | strategy | "happypath" | - And The documenturipath projection is up to date When I am on URL "/" Then the node "shortcut-first-child-node" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough/shortcuts/shortcut-first-child" @@ -229,7 +217,6 @@ Feature: Routing behavior of shortcut nodes | nodeAggregateId | "shortcut-first-child-node" | | originDimensionSpacePoint | {} | | propertyValues | {"targetMode": "parentNode"} | - And The documenturipath projection is up to date When I am on URL "/" Then the node "shortcut-first-child-node" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough/shortcuts" @@ -239,7 +226,6 @@ Feature: Routing behavior of shortcut nodes | nodeAggregateId | "shortcut-first-child-node" | | originDimensionSpacePoint | {} | | propertyValues | {"targetMode": "selectedTarget", "target": "http://www.neos.io"} | - And The documenturipath projection is up to date When I am on URL "/" Then the node "shortcut-first-child-node" in content stream "cs-identifier" and dimension "{}" should resolve to URL "http://www.neos.io/" @@ -253,7 +239,6 @@ Feature: Routing behavior of shortcut nodes | nodeAggregateId | "shortcut-parent-node" | | originDimensionSpacePoint | {} | | propertyValues | {"targetMode": "firstChildNode"} | - And The documenturipath projection is up to date When I am on URL "/" Then the node "shortcut-parent-node" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough/shortcuts/shortcut-parent-node/new-child" @@ -263,7 +248,6 @@ Feature: Routing behavior of shortcut nodes | nodeAggregateId | "shortcut-parent-node" | | originDimensionSpacePoint | {} | | propertyValues | {"targetMode": "selectedTarget", "target": "https://neos.io/"} | - And The documenturipath projection is up to date When I am on URL "/" Then the node "shortcut-parent-node" in content stream "cs-identifier" and dimension "{}" should resolve to URL "https://neos.io/" @@ -276,7 +260,6 @@ Feature: Routing behavior of shortcut nodes | parentNodeAggregateId | "shortcuts" | | initialPropertyValues | {"uriPathSegment": "invalid-target-mode", "targetMode": "invalidMode"} | | nodeName | "some-node-name" | - And The documenturipath projection is up to date When I am on URL "/" Then The node "invalid-target-mode" in content stream "cs-identifier" and dimension "{}" should not resolve to an URL @@ -289,7 +272,6 @@ Feature: Routing behavior of shortcut nodes | parentNodeAggregateId | "shortcuts" | | initialPropertyValues | {"uriPathSegment": "invalid-missing-target", "targetMode": "selectedTarget"} | | nodeName | "some-node-name" | - And The documenturipath projection is up to date When I am on URL "/" Then The node "invalid-missing-target" in content stream "cs-identifier" and dimension "{}" should not resolve to an URL @@ -302,7 +284,6 @@ Feature: Routing behavior of shortcut nodes | parentNodeAggregateId | "shortcuts" | | initialPropertyValues | {"uriPathSegment": "invalid-shortcut-first-child", "targetMode": "firstChildNode"} | | nodeName | "some-node-name" | - And The documenturipath projection is up to date When I am on URL "/" Then The node "invalid-shortcut-first-child-node" in content stream "cs-identifier" and dimension "{}" should not resolve to an URL @@ -315,7 +296,6 @@ Feature: Routing behavior of shortcut nodes | parentNodeAggregateId | "shortcuts" | | initialPropertyValues | {"uriPathSegment": "invalid-shortcut-selected-node", "targetMode": "selectedTarget", "target": "node://non-existing-node"} | | nodeName | "some-node-name" | - And The documenturipath projection is up to date When I am on URL "/" Then The node "invalid-shortcut-selected-node" in content stream "cs-identifier" and dimension "{}" should not resolve to an URL @@ -328,7 +308,6 @@ Feature: Routing behavior of shortcut nodes | parentNodeAggregateId | "shortcuts" | | initialPropertyValues | {"uriPathSegment": "invalid-shortcut-selected-node", "targetMode": "selectedTarget", "target": "node://"} | | nodeName | "some-node-name" | - And The documenturipath projection is up to date When I am on URL "/" Then The node "invalid-shortcut-selected-node" in content stream "cs-identifier" and dimension "{}" should not resolve to an URL @@ -338,7 +317,6 @@ Feature: Routing behavior of shortcut nodes | nodeAggregateId | parentNodeAggregateId | nodeTypeName | initialPropertyValues | nodeName | | level-1 | shortcuts | Neos.Neos:Shortcut | {"uriPathSegment": "level1", "targetMode": "selectedTarget", "target": "node://level-2"} | level1 | | level-2 | shortcuts | Neos.Neos:Shortcut | {"uriPathSegment": "level2", "targetMode": "selectedTarget", "target": "node://shortcut-first-child-node"} | level2 | - And The documenturipath projection is up to date When I am on URL "/" Then the node "level-1" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough/shortcuts/shortcut-first-child/first-child-node" Then the node "level-2" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/david-nodenborough/shortcuts/shortcut-first-child/first-child-node" @@ -349,6 +327,5 @@ Feature: Routing behavior of shortcut nodes | nodeAggregateId | parentNodeAggregateId | nodeTypeName | initialPropertyValues | nodeName | | node-a | shortcuts | Neos.Neos:Shortcut | {"uriPathSegment": "a", "targetMode": "selectedTarget", "target": "node://node-b"} | node-a | | node-b | shortcuts | Neos.Neos:Shortcut | {"uriPathSegment": "b", "targetMode": "selectedTarget", "target": "node://node-a"} | node-b | - And The documenturipath projection is up to date When I am on URL "/" Then The node "node-a" in content stream "cs-identifier" and dimension "{}" should not resolve to an URL diff --git a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/TetheredSiteChildDocuments.feature b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/TetheredSiteChildDocuments.feature index d3ae4a3ee7d..32c089f2b00 100644 --- a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/TetheredSiteChildDocuments.feature +++ b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/TetheredSiteChildDocuments.feature @@ -35,7 +35,6 @@ Feature: Tests for site node child documents. These are special in that they hav | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date # We explicitly create a site node with a tethered child document without uriPathSegment, so its uriPath is empty, exactly as the site node's And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | initialPropertyValues | nodeName | @@ -53,7 +52,6 @@ Feature: Tests for site node child documents. These are special in that they hav resolver: factoryClassName: Neos\Neos\FrontendRouting\DimensionResolution\Resolver\NoopResolverFactory """ - And The documenturipath projection is up to date Scenario: Set tethered child uriPathSegment When I remember NodeAggregateId of node "shernode-homes"s child "notFound" as "notFoundId" @@ -61,8 +59,6 @@ Feature: Tests for site node child documents. These are special in that they hav | Key | Value | | nodeAggregateId | "$notFoundId" | | propertyValues | {"uriPathSegment": "not-found"} | - And the graph projection is fully up to date - And The documenturipath projection is up to date And I am on URL "/" Then the matched node should be "shernode-homes" in content stream "cs-identifier" and dimension "{}" And the node "$notFoundId" in content stream "cs-identifier" and dimension "{}" should resolve to URL "/not-found" diff --git a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/UnknownNodeTypes.feature b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/UnknownNodeTypes.feature index fee65d02083..a224340993d 100644 --- a/Neos.Neos/Tests/Behavior/Features/FrontendRouting/UnknownNodeTypes.feature +++ b/Neos.Neos/Tests/Behavior/Features/FrontendRouting/UnknownNodeTypes.feature @@ -29,7 +29,6 @@ Feature: Basic routing functionality (match & resolve nodes with unknown types) | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date Scenario: When the event NodeAggregateWithNodeWasCreated was published with payload: @@ -55,7 +54,6 @@ Feature: Basic routing functionality (match & resolve nodes with unknown types) | parentNodeAggregateId | "shernode-homes" | | nodeAggregateClassification | "regular" | | initialPropertyValues | {"uriPathSegment": {"type": "string", "value": "non-existing"}} | - And The documenturipath projection is up to date Then I expect the documenturipath table to contain exactly: | uripath | nodeaggregateidpath | nodeaggregateid | parentnodeaggregateid | precedingnodeaggregateid | succeedingnodeaggregateid | nodetypename | | "" | "lady-eleonode-rootford" | "lady-eleonode-rootford" | null | null | null | "Neos.Neos:Sites" | diff --git a/Neos.Neos/Tests/Behavior/Features/Fusion/ContentCase.feature b/Neos.Neos/Tests/Behavior/Features/Fusion/ContentCase.feature index d3ed34d23d2..98b99c8429c 100644 --- a/Neos.Neos/Tests/Behavior/Features/Fusion/ContentCase.feature +++ b/Neos.Neos/Tests/Behavior/Features/Fusion/ContentCase.feature @@ -38,7 +38,6 @@ Feature: Tests for the "Neos.Neos:ContentCase" Fusion prototype | Key | Value | | nodeAggregateId | "root" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | | a | root | Neos.Neos:Site | diff --git a/Neos.Neos/Tests/Behavior/Features/Fusion/ContentCollection.feature b/Neos.Neos/Tests/Behavior/Features/Fusion/ContentCollection.feature index 40dbdcedf35..547974b53f6 100644 --- a/Neos.Neos/Tests/Behavior/Features/Fusion/ContentCollection.feature +++ b/Neos.Neos/Tests/Behavior/Features/Fusion/ContentCollection.feature @@ -46,7 +46,6 @@ Feature: Tests for the "Neos.Neos:ContentCollection" Fusion prototype | Key | Value | | nodeAggregateId | "root" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | | a | root | Neos.Neos:Site | @@ -117,7 +116,6 @@ Feature: Tests for the "Neos.Neos:ContentCollection" Fusion prototype | parentNodeAggregateId | "a" | | initialPropertyValues | {} | | tetheredDescendantNodeAggregateIds | { "main": "a1-main"} | - And the graph projection is fully up to date When the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | | content1 | a1-main | Neos.Neos:Test.ContentType | diff --git a/Neos.Neos/Tests/Behavior/Features/Fusion/ConvertUris.feature b/Neos.Neos/Tests/Behavior/Features/Fusion/ConvertUris.feature index da76e6f9217..976d642c0ef 100644 --- a/Neos.Neos/Tests/Behavior/Features/Fusion/ConvertUris.feature +++ b/Neos.Neos/Tests/Behavior/Features/Fusion/ConvertUris.feature @@ -35,7 +35,6 @@ Feature: Tests for the "Neos.Neos:ConvertUris" Fusion prototype | Key | Value | | nodeAggregateId | "root" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And I am in content stream "cs-identifier" and dimension space point {} And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName |initialPropertyValues | nodeName | diff --git a/Neos.Neos/Tests/Behavior/Features/Fusion/FlowQuery.feature b/Neos.Neos/Tests/Behavior/Features/Fusion/FlowQuery.feature index 4c0f6e0bbf3..8711a7d6269 100644 --- a/Neos.Neos/Tests/Behavior/Features/Fusion/FlowQuery.feature +++ b/Neos.Neos/Tests/Behavior/Features/Fusion/FlowQuery.feature @@ -51,7 +51,6 @@ Feature: Tests for the "Neos.ContentRepository" Flow Query methods. | Key | Value | | nodeAggregateId | "root" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And I am in content stream "cs-identifier" and dimension space point {} And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | initialPropertyValues | nodeName | diff --git a/Neos.Neos/Tests/Behavior/Features/Fusion/Menu.feature b/Neos.Neos/Tests/Behavior/Features/Fusion/Menu.feature index 28ab06fe590..b63cfe9adf6 100644 --- a/Neos.Neos/Tests/Behavior/Features/Fusion/Menu.feature +++ b/Neos.Neos/Tests/Behavior/Features/Fusion/Menu.feature @@ -51,7 +51,6 @@ Feature: Tests for the "Neos.Neos:Menu" and related Fusion prototypes | Key | Value | | nodeAggregateId | "root" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date And the following CreateNodeAggregateWithNode commands are executed: | nodeAggregateId | parentNodeAggregateId | nodeTypeName | initialPropertyValues | nodeName | | a | root | Neos.Neos:Site | {"title": "Node a"} | a | diff --git a/Neos.TimeableNodeVisibility/Tests/Behavior/Bootstrap/FeatureContext.php b/Neos.TimeableNodeVisibility/Tests/Behavior/Bootstrap/FeatureContext.php index 14907e8d62e..16caaf8821f 100644 --- a/Neos.TimeableNodeVisibility/Tests/Behavior/Bootstrap/FeatureContext.php +++ b/Neos.TimeableNodeVisibility/Tests/Behavior/Bootstrap/FeatureContext.php @@ -38,8 +38,6 @@ public function __construct() { self::bootstrapFlow(); $this->contentRepositoryRegistry = $this->getObject(ContentRepositoryRegistry::class); - - $this->setupCRTestSuiteTrait(); } /** diff --git a/Neos.TimeableNodeVisibility/Tests/Behavior/Features/HandleExceeded.feature b/Neos.TimeableNodeVisibility/Tests/Behavior/Features/HandleExceeded.feature index 02bc27ece9b..f4b3234e78a 100644 --- a/Neos.TimeableNodeVisibility/Tests/Behavior/Features/HandleExceeded.feature +++ b/Neos.TimeableNodeVisibility/Tests/Behavior/Features/HandleExceeded.feature @@ -31,14 +31,12 @@ Feature: Simple handling of nodes with exceeded enableAfter and disableAfter dat | Key | Value | | workspaceName | "live" | | newContentStreamId | "cs-identifier" | - And the graph projection is fully up to date And I am in workspace "live" And I am in workspace "live" and dimension space point {} And the command CreateRootNodeAggregateWithNode is executed with payload: | Key | Value | | nodeAggregateId | "lady-eleonode-rootford" | | nodeTypeName | "Neos.Neos:Sites" | - And the graph projection is fully up to date # <===========================|now|===========================> From bba472b20430b91b9d386d1404096429c8c39714 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Fri, 17 May 2024 11:14:37 +0200 Subject: [PATCH 15/18] TASK: Adjust composer.json to run tests in sync by default --- .composer.json | 8 -------- .github/workflows/build.yml | 2 +- Readme.rst | 7 ------- composer.json | 8 -------- 4 files changed, 1 insertion(+), 24 deletions(-) diff --git a/.composer.json b/.composer.json index 903520e398f..6f7f5947917 100644 --- a/.composer.json +++ b/.composer.json @@ -45,10 +45,6 @@ "../../flow doctrine:migrate --quiet; ../../flow cr:setup", "@test:behat-cli -c Neos.Neos/Tests/Behavior/behat.yml" ], - "test:behavioral:sync": [ - "@putenv CATCHUPTRIGGER_ENABLE_SYNCHRONOUS_OPTION=1", - "@test:behavioral" - ], "test:behavioral:stop-on-failure": [ "@test:behat-cli -vvv --stop-on-failure -c Neos.ContentRepository.BehavioralTests/Tests/Behavior/behat.yml.dist", "@test:behat-cli -vvv --stop-on-failure -c Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/behat.yml.dist", @@ -58,10 +54,6 @@ "../../flow doctrine:migrate --quiet; ../../flow cr:setup", "@test:behat-cli -vvv --stop-on-failure -c Neos.Neos/Tests/Behavior/behat.yml" ], - "test:behavioral:stop-on-failure:sync": [ - "@putenv CATCHUPTRIGGER_ENABLE_SYNCHRONOUS_OPTION=1", - "@test:behavioral:stop-on-failure" - ], "test": [ "@test:unit", "@test:functional", diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9774cd47fe3..74d6e20291e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -249,7 +249,7 @@ jobs: # DEBUG MODE: ALTERNATIVELY, comment in the following lines to dump the DB. # do not exit the script if the tests break; as we want to upload the database dumps afterwards. set +e - composer test:behavioral:stop-on-failure:sync + composer test:behavioral:stop-on-failure retVal=$? # automatically search for race conditions diff --git a/Readme.rst b/Readme.rst index 4e114e2462d..f8200689add 100644 --- a/Readme.rst +++ b/Readme.rst @@ -188,13 +188,6 @@ we use the right versions etc). cd Packages/Neos composer test:behavioral -Running all tests can take a long time, depending on the hardware. -To speed up the process, Behat tests can be executed in a "synchronous" mode: - - .. code-block:: bash - - composer test:behavioral:sync - Alternatively, if you want to reproduce errors as they happen inside the CI system, but you develop on Mac OS, you might want to run the Behat tests in a Docker container (= a linux environment) as well. We have seen cases where they behave differently, i.e. where they run without race diff --git a/composer.json b/composer.json index b17ad9c3d79..8eb6f5248f6 100644 --- a/composer.json +++ b/composer.json @@ -130,10 +130,6 @@ "../../flow doctrine:migrate --quiet; ../../flow cr:setup", "@test:behat-cli -c Neos.Neos/Tests/Behavior/behat.yml" ], - "test:behavioral:sync": [ - "@putenv CATCHUPTRIGGER_ENABLE_SYNCHRONOUS_OPTION=1", - "@test:behavioral" - ], "test:behavioral:stop-on-failure": [ "@test:behat-cli -vvv --stop-on-failure -c Neos.ContentRepository.BehavioralTests/Tests/Behavior/behat.yml.dist", "@test:behat-cli -vvv --stop-on-failure -c Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/behat.yml.dist", @@ -143,10 +139,6 @@ "../../flow doctrine:migrate --quiet; ../../flow cr:setup", "@test:behat-cli -vvv --stop-on-failure -c Neos.Neos/Tests/Behavior/behat.yml" ], - "test:behavioral:stop-on-failure:sync": [ - "@putenv CATCHUPTRIGGER_ENABLE_SYNCHRONOUS_OPTION=1", - "@test:behavioral:stop-on-failure" - ], "test": [ "@test:unit", "@test:functional", From 95ad9f1bea8f1b353c5c20a2a491c117a4e82a47 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Fri, 17 May 2024 14:24:11 +0200 Subject: [PATCH 16/18] TASK: Correctly communicate `NodeTypeNotFound` nodetype manager behaviour --- .../Classes/NodeType/NodeTypeManager.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php index cec5bd900a5..75cef7fa24f 100644 --- a/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php +++ b/Neos.ContentRepository.Core/Classes/NodeType/NodeTypeManager.php @@ -16,7 +16,6 @@ use Neos\ContentRepository\Core\SharedModel\Exception\NodeConfigurationException; use Neos\ContentRepository\Core\SharedModel\Exception\NodeTypeIsFinalException; -use Neos\ContentRepository\Core\SharedModel\Exception\NodeTypeNotFound; use Neos\ContentRepository\Core\SharedModel\Node\NodeName; use Neos\Utility\Arrays; use Neos\Utility\Exception\PropertyNotAccessibleException; @@ -106,8 +105,6 @@ public function getSubNodeTypes(string|NodeTypeName $superTypeName, bool $includ /** * Returns the specified node type (which could be abstract) - * - * @throws NodeTypeNotFound */ public function getNodeType(string|NodeTypeName $nodeTypeName): ?NodeType { @@ -242,7 +239,6 @@ public function isNodeTypeAllowedAsChildToTetheredNode(NodeTypeName $parentNodeT * @param array $completeNodeTypeConfiguration the full node type configuration for all node types * @throws NodeConfigurationException * @throws NodeTypeIsFinalException - * @throws NodeTypeNotFound */ private function loadNodeType(string $nodeTypeName, array &$completeNodeTypeConfiguration): NodeType { @@ -251,7 +247,8 @@ private function loadNodeType(string $nodeTypeName, array &$completeNodeTypeConf } if (!isset($completeNodeTypeConfiguration[$nodeTypeName])) { - throw new NodeTypeNotFound('Node type "' . $nodeTypeName . '" does not exist', 1316451800); + // only thrown if a programming error occurred. + throw new \RuntimeException('Must not happen, logic error: Node type "' . $nodeTypeName . '" does not exist', 1316451800); } $nodeTypeConfiguration = $completeNodeTypeConfiguration[$nodeTypeName]; From 0df9079d5e90aea82a71c14a105b9c9172e8fcd3 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Fri, 17 May 2024 14:41:29 +0200 Subject: [PATCH 17/18] TASK: Revert using Connection instead of DbalClient in test will be part of https://github.com/neos/neos-development-collection/pull/5005 --- ...ectionIntegrityViolationDetectionTrait.php | 25 +++++++++---------- .../Behavior/Bootstrap/FeatureContext.php | 3 ++- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Bootstrap/ProjectionIntegrityViolationDetectionTrait.php b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Bootstrap/ProjectionIntegrityViolationDetectionTrait.php index 126e0b914f8..873a700ea17 100644 --- a/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Bootstrap/ProjectionIntegrityViolationDetectionTrait.php +++ b/Neos.ContentGraph.DoctrineDbalAdapter/Tests/Behavior/Features/Bootstrap/ProjectionIntegrityViolationDetectionTrait.php @@ -15,7 +15,6 @@ namespace Neos\ContentGraph\DoctrineDbalAdapter\Tests\Behavior\Features\Bootstrap; use Behat\Gherkin\Node\TableNode; -use Doctrine\DBAL\Connection; use Doctrine\DBAL\DBALException; use Doctrine\DBAL\Exception\InvalidArgumentException; use Neos\ContentGraph\DoctrineDbalAdapter\ContentGraphTableNames; @@ -42,7 +41,7 @@ trait ProjectionIntegrityViolationDetectionTrait { use CRTestSuiteRuntimeVariables; - private Connection $dbal; + private DoctrineDbalClient $dbalClient; protected Result $lastIntegrityViolationDetectionResult; @@ -63,7 +62,7 @@ private function tableNames(): ContentGraphTableNames public function setupDbalGraphAdapterIntegrityViolationTrait() { - $this->dbal = $this->getObject(Connection::class); + $this->dbalClient = $this->getObject(DoctrineDbalClient::class); } /** @@ -81,7 +80,7 @@ public function iRemoveTheFollowingSubtreeTag(TableNode $payloadTable): void if (!$subtreeTags->contain($subtreeTagToRemove)) { throw new \RuntimeException(sprintf('Failed to remove subtree tag "%s" because that tag is not set', $subtreeTagToRemove->value), 1708618267); } - $this->dbal->update( + $this->dbalClient->getConnection()->update( $this->tableNames()->hierarchyRelation(), [ 'subtreetags' => json_encode($subtreeTags->without($subtreeTagToRemove), JSON_THROW_ON_ERROR | JSON_FORCE_OBJECT), @@ -98,7 +97,7 @@ public function iAddTheFollowingHierarchyRelation(TableNode $payloadTable): void { $dataset = $this->transformPayloadTableToDataset($payloadTable); $record = $this->transformDatasetToHierarchyRelationRecord($dataset); - $this->dbal->insert( + $this->dbalClient->getConnection()->insert( $this->tableNames()->hierarchyRelation(), $record ); @@ -115,7 +114,7 @@ public function iChangeTheFollowingHierarchyRelationsDimensionSpacePointHash(Tab $record = $this->transformDatasetToHierarchyRelationRecord($dataset); unset($record['position']); - $this->dbal->update( + $this->dbalClient->getConnection()->update( $this->tableNames()->hierarchyRelation(), [ 'dimensionspacepointhash' => $dataset['newDimensionSpacePointHash'] @@ -133,7 +132,7 @@ public function iChangeTheFollowingNodesName(TableNode $payloadTable): void { $dataset = $this->transformPayloadTableToDataset($payloadTable); - $relationAnchorPoint = $this->dbal->executeQuery( + $relationAnchorPoint = $this->dbalClient->getConnection()->executeQuery( 'SELECT n.relationanchorpoint FROM ' . $this->tableNames()->node() . ' n JOIN ' . $this->tableNames()->hierarchyRelation() . ' h ON h.childnodeanchor = n.relationanchorpoint WHERE h.contentstreamid = :contentStreamId @@ -146,7 +145,7 @@ public function iChangeTheFollowingNodesName(TableNode $payloadTable): void ] )->fetchOne(); - $this->dbal->update( + $this->dbalClient->getConnection()->update( $this->tableNames()->node(), [ 'name' => $dataset['newName'] @@ -172,7 +171,7 @@ public function iSetTheFollowingPosition(TableNode $payloadTable): void 'childnodeanchor' => $this->findRelationAnchorPointByDataset($dataset) ]; - $this->dbal->update( + $this->dbalClient->getConnection()->update( $this->tableNames()->hierarchyRelation(), [ 'position' => $dataset['newPosition'] @@ -190,7 +189,7 @@ public function iDetachTheFollowingReferenceRelationFromItsSource(TableNode $pay { $dataset = $this->transformPayloadTableToDataset($payloadTable); - $this->dbal->update( + $this->dbalClient->getConnection()->update( $this->tableNames()->referenceRelation(), [ 'nodeanchorpoint' => 7777777 @@ -208,7 +207,7 @@ public function iSetTheFollowingReferencePosition(TableNode $payloadTable): void { $dataset = $this->transformPayloadTableToDataset($payloadTable); - $this->dbal->update( + $this->dbalClient->getConnection()->update( $this->tableNames()->referenceRelation(), [ 'position' => $dataset['newPosition'] @@ -278,7 +277,7 @@ private function findHierarchyRelationByIds( DimensionSpacePoint $dimensionSpacePoint, NodeAggregateId $nodeAggregateId ): array { - $nodeRecord = $this->dbal->executeQuery( + $nodeRecord = $this->dbalClient->getConnection()->executeQuery( 'SELECT h.* FROM ' . $this->tableNames()->node() . ' n INNER JOIN ' . $this->tableNames()->hierarchyRelation() . ' h @@ -314,7 +313,7 @@ private function transformPayloadTableToDataset(TableNode $payloadTable): array */ public function iRunIntegrityViolationDetection(): void { - $projectionIntegrityViolationDetectionRunner = $this->getContentRepositoryService(new DoctrineDbalProjectionIntegrityViolationDetectionRunnerFactory($this->getObject(DoctrineDbalClient::class))); + $projectionIntegrityViolationDetectionRunner = $this->getContentRepositoryService(new DoctrineDbalProjectionIntegrityViolationDetectionRunnerFactory($this->dbalClient)); $this->lastIntegrityViolationDetectionResult = $projectionIntegrityViolationDetectionRunner->run(); } diff --git a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Bootstrap/FeatureContext.php b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Bootstrap/FeatureContext.php index 682bf3c0d66..4f59e07af74 100644 --- a/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Bootstrap/FeatureContext.php +++ b/Neos.ContentRepository.BehavioralTests/Tests/Behavior/Bootstrap/FeatureContext.php @@ -29,6 +29,7 @@ use Neos\ContentRepository\Core\Factory\ContentRepositoryServiceFactoryInterface; use Neos\ContentRepository\Core\Factory\ContentRepositoryServiceInterface; use Neos\ContentRepository\Core\Feature\NodeModification\Dto\PropertyValuesToWrite; +use Neos\ContentRepository\Core\Infrastructure\DbalClientInterface; use Neos\ContentRepository\Core\SharedModel\ContentRepository\ContentRepositoryId; use Neos\ContentRepository\Core\Tests\Behavior\Fixtures\DayOfWeek; use Neos\ContentRepository\Core\Tests\Behavior\Fixtures\PostalAddress; @@ -59,7 +60,7 @@ public function __construct() { self::bootstrapFlow(); - $this->dbal = $this->getObject(Connection::class); + $this->dbalClient = $this->getObject(DbalClientInterface::class); $this->setUpInterleavingLogger(); $this->contentRepositoryRegistry = $this->getObject(ContentRepositoryRegistry::class); } From f5e39eb15dc6b30654c9b398bb9cfda6e248068c Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 17 May 2024 13:27:54 +0000 Subject: [PATCH 18/18] TASK: Update references [skip ci] --- Neos.Neos/Documentation/References/CommandReference.rst | 2 +- Neos.Neos/Documentation/References/ViewHelpers/FluidAdaptor.rst | 2 +- Neos.Neos/Documentation/References/ViewHelpers/Form.rst | 2 +- Neos.Neos/Documentation/References/ViewHelpers/Media.rst | 2 +- Neos.Neos/Documentation/References/ViewHelpers/Neos.rst | 2 +- Neos.Neos/Documentation/References/ViewHelpers/TYPO3Fluid.rst | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Neos.Neos/Documentation/References/CommandReference.rst b/Neos.Neos/Documentation/References/CommandReference.rst index e0e076200dc..5f746676692 100644 --- a/Neos.Neos/Documentation/References/CommandReference.rst +++ b/Neos.Neos/Documentation/References/CommandReference.rst @@ -19,7 +19,7 @@ commands that may be available, use:: ./flow help -The following reference was automatically generated from code on 2024-05-16 +The following reference was automatically generated from code on 2024-05-17 .. _`Neos Command Reference: NEOS.FLOW`: diff --git a/Neos.Neos/Documentation/References/ViewHelpers/FluidAdaptor.rst b/Neos.Neos/Documentation/References/ViewHelpers/FluidAdaptor.rst index 246a51de16c..c5246956bf2 100644 --- a/Neos.Neos/Documentation/References/ViewHelpers/FluidAdaptor.rst +++ b/Neos.Neos/Documentation/References/ViewHelpers/FluidAdaptor.rst @@ -3,7 +3,7 @@ FluidAdaptor ViewHelper Reference ################################# -This reference was automatically generated from code on 2024-05-16 +This reference was automatically generated from code on 2024-05-17 .. _`FluidAdaptor ViewHelper Reference: f:debug`: diff --git a/Neos.Neos/Documentation/References/ViewHelpers/Form.rst b/Neos.Neos/Documentation/References/ViewHelpers/Form.rst index 578dbdc83eb..6c67214144c 100644 --- a/Neos.Neos/Documentation/References/ViewHelpers/Form.rst +++ b/Neos.Neos/Documentation/References/ViewHelpers/Form.rst @@ -3,7 +3,7 @@ Form ViewHelper Reference ######################### -This reference was automatically generated from code on 2024-05-16 +This reference was automatically generated from code on 2024-05-17 .. _`Form ViewHelper Reference: neos.form:form`: diff --git a/Neos.Neos/Documentation/References/ViewHelpers/Media.rst b/Neos.Neos/Documentation/References/ViewHelpers/Media.rst index 0bdc88a5967..6cf8958df77 100644 --- a/Neos.Neos/Documentation/References/ViewHelpers/Media.rst +++ b/Neos.Neos/Documentation/References/ViewHelpers/Media.rst @@ -3,7 +3,7 @@ Media ViewHelper Reference ########################## -This reference was automatically generated from code on 2024-05-16 +This reference was automatically generated from code on 2024-05-17 .. _`Media ViewHelper Reference: neos.media:fileTypeIcon`: diff --git a/Neos.Neos/Documentation/References/ViewHelpers/Neos.rst b/Neos.Neos/Documentation/References/ViewHelpers/Neos.rst index d64908e8fd8..26d935b0e03 100644 --- a/Neos.Neos/Documentation/References/ViewHelpers/Neos.rst +++ b/Neos.Neos/Documentation/References/ViewHelpers/Neos.rst @@ -3,7 +3,7 @@ Neos ViewHelper Reference ######################### -This reference was automatically generated from code on 2024-05-16 +This reference was automatically generated from code on 2024-05-17 .. _`Neos ViewHelper Reference: neos:backend.authenticationProviderLabel`: diff --git a/Neos.Neos/Documentation/References/ViewHelpers/TYPO3Fluid.rst b/Neos.Neos/Documentation/References/ViewHelpers/TYPO3Fluid.rst index 1a48f4443d5..82290c4f297 100644 --- a/Neos.Neos/Documentation/References/ViewHelpers/TYPO3Fluid.rst +++ b/Neos.Neos/Documentation/References/ViewHelpers/TYPO3Fluid.rst @@ -3,7 +3,7 @@ TYPO3 Fluid ViewHelper Reference ################################ -This reference was automatically generated from code on 2024-05-16 +This reference was automatically generated from code on 2024-05-17 .. _`TYPO3 Fluid ViewHelper Reference: f:alias`: