Skip to content

Commit

Permalink
Merge pull request #4685 from neos/90/feature/nodemigration
Browse files Browse the repository at this point in the history
FEATURE: NodeMigration with target workspace
  • Loading branch information
kitsunet authored Jun 25, 2024
2 parents 0f2a323 + 4a0c715 commit f7e93b0
Show file tree
Hide file tree
Showing 22 changed files with 354 additions and 303 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ Feature: Add Dimension Specialization
Given I change the content dimensions in content repository "default" to:
| Identifier | Values | Generalizations |
| language | mul, de, ch | ch->de->mul |
When I run the following node migration for workspace "live", creating content streams "migration-cs":
When I run the following node migration for workspace "live", creating target workspace "migration-workspace" on contentStreamId "migration-cs", without publishing on success:
"""yaml
migration:
-
Expand All @@ -71,7 +71,7 @@ Feature: Add Dimension Specialization
# the original content stream has not been touched
When I am in workspace "live"
And I am in dimension space point {"language": "de"}
Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node cs-identifier;sir-david-nodenborough;{"language": "de"}
Then I expect a node identified by cs-identifier;sir-david-nodenborough;{"language":"de"} to exist in the content graph
And I expect this node to be of type "Neos.ContentRepository.Testing:Document"
And I expect this node to have the following properties:
| Key | Value |
Expand All @@ -81,14 +81,14 @@ Feature: Add Dimension Specialization


# now, we find the node underneath both DimensionSpacePoints
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"}
When I am in workspace "migration-workspace" and dimension space point {"language": "de"}
Then I expect a node identified by migration-cs;sir-david-nodenborough;{"language":"de"} to exist in the content graph
And I expect this node to have the following properties:
| Key | Value |
| text | "hello" |
When I am in content stream "migration-cs" and dimension space point {"language": "ch"}
When I am in workspace "migration-workspace" and dimension space point {"language": "ch"}
# shine through added
Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node migration-cs;sir-david-nodenborough;{"language": "de"}
Then I expect a node identified by migration-cs;sir-david-nodenborough;{"language":"de"} to exist in the content graph
And I expect this node to be of type "Neos.ContentRepository.Testing:Document"
And I expect this node to have the following properties:
| Key | Value |
Expand All @@ -101,27 +101,27 @@ Feature: Add Dimension Specialization
# finally, we MODIFY the node and ensure that the modification is visible in both DSPs (as otherwise the shine through would not have worked
# as expected)
# migration-cs is the actual name of the temporary workspace
And I am in workspace "migration-cs"
And I am in workspace "migration-workspace"
And the command SetNodeProperties is executed with payload:
| Key | Value |
| nodeAggregateId | "sir-david-nodenborough" |
| originDimensionSpacePoint | {"language": "de"} |
| propertyValues | {"text": "changed"} |
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"}
When I am in workspace "migration-workspace" and dimension space point {"language": "de"}
Then I expect a node identified by migration-cs;sir-david-nodenborough;{"language":"de"} to exist in the content graph
And I expect this node to have the following properties:
| Key | Value |
| text | "changed" |
When I am in content stream "migration-cs" and dimension space point {"language": "ch"}
When I am in workspace "migration-workspace" and dimension space point {"language": "ch"}
# ch shines through to the DE node
Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node migration-cs;sir-david-nodenborough;{"language": "de"}
Then I expect a node identified by migration-cs;sir-david-nodenborough;{"language":"de"} to exist in the content graph
And I expect this node to have the following properties:
| Key | Value |
| text | "changed" |

# the original content stream was untouched
When I am in workspace "live" and dimension space point {"language": "de"}
Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node cs-identifier;sir-david-nodenborough;{"language": "de"}
Then I expect a node identified by cs-identifier;sir-david-nodenborough;{"language":"de"} to exist in the content graph
And I expect this node to have the following properties:
| Key | Value |
| text | "hello" |
Expand All @@ -143,15 +143,15 @@ Feature: Add Dimension Specialization
When I am in workspace "live" and dimension space point {"language": "de"}
Then I expect node aggregate identifier "sir-david-nodenborough" to lead to no node
When VisibilityConstraints are set to "withoutRestrictions"
Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node cs-identifier;sir-david-nodenborough;{"language": "de"}
Then I expect a node identified by cs-identifier;sir-david-nodenborough;{"language":"de"} to exist in the content graph
When VisibilityConstraints are set to "frontend"

# we change the dimension configuration
When I change the content dimensions in content repository "default" to:
| Identifier | Values | Generalizations |
| language | mul, de, ch | ch->de->mul |

When I run the following node migration for workspace "live", creating content streams "migration-cs":
When I run the following node migration for workspace "live", creating target workspace "migration-workspace" on contentStreamId "migration-cs", without publishing on success:
"""yaml
migration:
-
Expand All @@ -164,17 +164,17 @@ Feature: Add Dimension Specialization
"""

# the original content stream has not been touched
When I am in content stream "cs-identifier" and dimension space point {"language": "de"}
When I am in workspace "migration-workspace" and dimension space point {"language": "de"}
Then I expect node aggregate identifier "sir-david-nodenborough" to lead to no node
When VisibilityConstraints are set to "withoutRestrictions"
Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node cs-identifier;sir-david-nodenborough;{"language": "de"}
Then I expect a node identified by cs-identifier;sir-david-nodenborough;{"language":"de"} to exist in the content graph
When VisibilityConstraints are set to "frontend"

# The visibility edges were modified
When I am in content stream "migration-cs" and dimension space point {"language": "ch"}
When I am in workspace "migration-workspace" and dimension space point {"language": "ch"}
Then I expect node aggregate identifier "sir-david-nodenborough" to lead to no node
When VisibilityConstraints are set to "withoutRestrictions"
Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node migration-cs;sir-david-nodenborough;{"language": "de"}
Then I expect a node identified by cs-identifier;sir-david-nodenborough;{"language":"de"} to exist in the content graph
When VisibilityConstraints are set to "frontend"

When I run integrity violation detection
Expand All @@ -194,7 +194,7 @@ Feature: Add Dimension Specialization
| sourceOrigin | {"language":"de"} |
| targetOrigin | {"language":"en"} |

When I run the following node migration for workspace "live", creating content streams "migration-cs" and exceptions are caught:
When I run the following node migration for workspace "live", creating target workspace "migration-workspace" on contentStreamId "migration-cs" and exceptions are caught:
"""yaml
migration:
-
Expand All @@ -208,7 +208,7 @@ Feature: Add Dimension Specialization
Then the last command should have thrown an exception of type "DimensionSpacePointAlreadyExists"

Scenario: Error case - the target dimension is not configured
When I run the following node migration for workspace "live", creating content streams "migration-cs" and exceptions are caught:
When I run the following node migration for workspace "live", creating target workspace "migration-workspace" on contentStreamId "migration-cs" and exceptions are caught:
"""yaml
migration:
-
Expand All @@ -227,7 +227,7 @@ Feature: Add Dimension Specialization
| Identifier | Values | Generalizations |
| language | mul, de, foo | de->mul |

When I run the following node migration for workspace "live", creating content streams "migration-cs" and exceptions are caught:
When I run the following node migration for workspace "live", creating target workspace "migration-workspace" on contentStreamId "migration-cs" and exceptions are caught:
"""yaml
migration:
-
Expand All @@ -246,7 +246,7 @@ Feature: Add Dimension Specialization
| Identifier | Values | Generalizations |
| language | mul, de, foo | de->mul, foo->mul |

When I run the following node migration for workspace "live", creating content streams "migration-cs" and exceptions are caught:
When I run the following node migration for workspace "live", creating target workspace "migration-workspace" on contentStreamId "migration-cs" and exceptions are caught:
"""yaml
migration:
-
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Feature: Add New Property


Scenario: Fixed newValue
When I run the following node migration for workspace "live", creating content streams "migration-cs":
When I run the following node migration for workspace "live", creating target workspace "migration-workspace" on contentStreamId "migration-cs", without publishing on success:
"""yaml
migration:
-
Expand All @@ -72,17 +72,17 @@ Feature: Add New Property
"""
# the original content stream has not been touched
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;{}
Then I expect a node identified by cs-identifier;sir-david-nodenborough;{} to exist in the content graph
And I expect this node to have the following properties:
| Key | Value |
| text | "Original text" |

When I am in content stream "migration-cs" and dimension space point {}
Then I expect node aggregate identifier "sir-david-nodenborough" to lead to node migration-cs;sir-david-nodenborough;{}
When I am in workspace "migration-workspace" and dimension space point {}
Then I expect a node identified by migration-cs;sir-david-nodenborough;{} to exist in the content graph
And I expect this node to have the following properties:
| Key | Value |
| text | "Original text" |
Then I expect node aggregate identifier "other" to lead to node migration-cs;other;{}
Then I expect a node identified by migration-cs;other;{} to exist in the content graph
And I expect this node to have the following properties:
| Key | Value |
| text | "fixed value" |
Expand Down
Loading

0 comments on commit f7e93b0

Please sign in to comment.