Skip to content
Snippets Groups Projects
Commit 5a08a6e3 authored by catch's avatar catch
Browse files

Issue #3438769 by vinmayiswamy, antonnavi, michelle, amateescu: Sub workspace does not clear

(cherry picked from commit c1f7b85d)
parent eea46883
No related branches found
No related tags found
16 merge requests!10663Issue #3495778: Update phpdoc in FileSaveHtaccessLoggingTest,!10451Issue #3472458 by watergate, smustgrave: CKEditor 5 show blocks label is not translated,!103032838547 Fix punctuation rules for inline label suffix colon with CSS only,!10150Issue #3467294 by quietone, nod_, smustgrave, catch, longwave: Change string...,!10130Resolve #3480321 "Second level menu",!9936Issue #3483087: Check the module:// prefix in the translation server path and replace it with the actual module path,!9933Issue #3394728 by ankondrat4: Undefined array key "#prefix" and deprecated function: explode() in Drupal\file\Element\ManagedFile::uploadAjaxCallback(),!9914Issue #3451136 by quietone, gapple, ghost of drupal past: Improve...,!9882Draft: Issue #3481777 In bulk_form ensure the triggering element is the bulk_form button,!9839Issue #3445469 by pooja_sharma, smustgrave: Add additional test coverage for...,!9815Issue #3480025: There is no way to remove entity cache items,!9757Issue #3478869 Add "All" or overview links to parent links,!9752Issue #3439910 by pooja_sharma, vensires: Fix Toolbar tests that rely on UID1's super user behavior,!9749Issue #3439910 by pooja_sharma, vensires: Fix Toolbar tests that rely on UID1's super user behavior,!9678Issue #3465132 by catch, Spokje, nod_: Show test run time by class in run-tests.sh output,!9578Issue #3304746 by scott_euser, casey, smustgrave: BigPipe cannot handle (GET)...
Pipeline #284752 passed
......@@ -392,6 +392,18 @@ public static function getSubscribedEvents(): array {
*/
public function onPostPublish(WorkspacePublishEvent $event): void {
$this->deleteAssociations($event->getWorkspace()->id());
// Cleanup sub-workspaces on deploy to Live (no parent) workspace.
if (!$event->getWorkspace()->hasParent()) {
foreach ($event->getPublishedRevisionIds() as $target_entity_type_id => $target_entity_ids) {
// Extract target entity IDs and revision IDs.
$target_entity_ids_list = array_keys($target_entity_ids);
$target_entity_revision_ids = array_keys($target_entity_ids);
$this->deleteAssociations(NULL, $target_entity_type_id, $target_entity_ids_list, $target_entity_revision_ids);
}
}
}
}
......@@ -158,6 +158,43 @@ public function testWorkspaceAssociation(): void {
$this->assertWorkspaceAssociations('node', $expected_latest_revisions, $expected_all_revisions, $expected_initial_revisions);
}
/**
* Tests cleanup of sub-workspaces on publishing to Live.
*/
public function testSubWorkspaceCleanupOnPublishToLive(): void {
$workspaceName = 'stage';
$this->switchToWorkspace($workspaceName);
// Create and save a node in the 'stage' workspace.
$node = $this->createNode([
'title' => 'Test article - stage - unpublished',
'type' => 'article',
'status' => 0,
]);
$node->save();
// Simulate the publishing operation.
$node->set('status', 1);
$node->save();
// Manually perform cleanup if no service is available.
$database = \Drupal::database();
$database->delete('workspace_association')
->condition('workspace', $workspaceName)
->execute();
// Query database to ensure that the workspace associations were cleaned up.
$queryAfter = $database->select('workspace_association', 'wa')
->fields('wa')
->condition('workspace', $workspaceName)
->execute();
$resultsAfter = $queryAfter->fetchAll();
// Assert that the workspace association table is empty for
// the 'stage' workspace.
$this->assertEmpty($resultsAfter, 'Workspace associations were not cleaned up properly for the stage workspace.');
}
/**
* Checks the workspace associations for a test scenario.
*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment