Skip to content

Commit

Permalink
MNT Behat test for versioned badges
Browse files Browse the repository at this point in the history
  • Loading branch information
Sabina Talipova committed Jan 10, 2024
1 parent 4686193 commit 4ea4fc7
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 26 deletions.
29 changes: 4 additions & 25 deletions code/Controllers/CMSMain.php
Original file line number Diff line number Diff line change
Expand Up @@ -1096,10 +1096,11 @@ public function Breadcrumbs($unlinked = false)
if (count($status) > 0) {
$flags = '';
foreach ($status as $flag => $flagData) {
$titleAttrebute = sprintf(' title="%s"', Convert::raw2xml($flagData['title']));
$flags .= sprintf(
'<span class="badge version-status version-status--%s" %s>%s</span>',
'status-' . Convert::raw2xml($flag),
(isset($flagData['title'])) ? sprintf(' title="%s"', Convert::raw2xml($flagData['title'])) : '',
(isset($flagData['title'])) ? $titleAttrebute : '',
Convert::raw2xml($flagData['text'])
);
}
Expand All @@ -1119,31 +1120,9 @@ public function Breadcrumbs($unlinked = false)
return $items;
}

private function getStatusFlag($record)
private function getStatusFlag(SiteTree $record): array
{
$flags = [];
if ($record->isOnLiveOnly()) {
$flags['removedfromdraft'] = [
'text' => _t(__CLASS__.'.ONLIVEONLYSHORT', 'On live only'),
'title' => _t(__CLASS__.'.ONLIVEONLYSHORTHELP', 'Page is published, but has been deleted from draft'),
];
} elseif ($record->isArchived()) {
$flags['archived'] = [
'text' => _t(__CLASS__.'.ARCHIVEDPAGESHORT', 'Archived'),
'title' => _t(__CLASS__.'.ARCHIVEDPAGEHELP', 'Page is removed from draft and live'),
];
} elseif ($record->isOnDraftOnly()) {
$flags['addedtodraft'] = [
'text' => _t(__CLASS__.'.ADDEDTODRAFTSHORT', 'Draft'),
'title' => _t(__CLASS__.'.ADDEDTODRAFTHELP', 'Page has not been published yet')
];
} elseif ($record->isModifiedOnDraft() || $record->stagesDifferRecursive()) {
$flags['modified'] = [
'text' => _t(__CLASS__.'.MODIFIEDONDRAFTSHORT', 'Modified'),
'title' => _t(__CLASS__.'.MODIFIEDONDRAFTHELP', 'Page has unpublished changes'),
];
}

$flags = $record->getStatusFlags();
$this->extend('updateStatusFlags', $flags);

return $flags;
Expand Down
1 change: 0 additions & 1 deletion lang/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ en:
SilverStripe\CMS\Controllers\CMSMain:
ACCESS: "Access to '{title}' section"
ACCESS_HELP: 'Allow viewing of the section containing page tree and content. View and edit permissions can be handled through page specific dropdowns, as well as the separate "Content permissions".'
ADDEDTODRAFTSHORT: 'Draft'
ADDEDTODRAFTHELP: 'Page has not been published yet'
ARCHIVE: Archive
ARCHIVEDPAGE: "Archived page '{title}'"
Expand Down
78 changes: 78 additions & 0 deletions tests/behat/features/page-with-versioned-objects.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
Feature: Publish a page
As a site owner
I want see versioned badge on page with draft and modified versioned child objects

Background:
Given a "Test Page Versioned Object" "My Page" with "URLSegment"="my-page"
And the "Test Page Versioned Object" "My Page" is not published
And the "Versioned parent object" "My Versioned Parent Object" with "TestPageVersionedObject"="1"
And the "Non Versioned parent object" "My Non Versioned Parent Object" with "TestPageVersionedObject"="1"
And the "group" "EDITOR" has permissions "Access to 'Pages' section" and "TEST_DATAOBJECT_EDIT"
And I am logged in as a member of "EDITOR" group

Scenario: I should see versioned badge on page with draft and modified versioned child object
Given I go to "/admin/pages"
And I should see "My Page" in the tree
And I click on "My Page" in the tree
Then I should see "My Page" in the ".breadcrumbs-wrapper" element
And I should see "Draft" in the ".breadcrumbs-wrapper" element
And I click on the "#tab-Root_VersionedParentObjects" element
And I should see "My Versioned Parent Object" in the "#Form_EditForm" element
And I should see "Draft" in the "#Form_EditForm" element
Then I click "My Versioned Parent Object" in the "#Form_EditForm_VersionedParentObjects" element
And I should see "My Versioned Parent Object" in the ".breadcrumbs-wrapper" element
And I should see "Draft" in the ".breadcrumbs-wrapper" element
And I click "My Page" in the ".breadcrumbs-wrapper" element
And I should see "Draft" in the ".breadcrumbs-wrapper" element
Then I click "My Versioned Parent Object" in the "#Form_EditForm_VersionedParentObjects" element
And I press the "Publish" button
And I should not see "Draft" in the ".breadcrumbs-wrapper" element
And I click "My Page" in the ".breadcrumbs-wrapper" element
And I should see "Draft" in the ".breadcrumbs-wrapper" element
Then I click "My Versioned Parent Object" in the "#Form_EditForm_VersionedParentObjects" element
And I fill in "Name" with "My Versioned Parent Object with changes"
And I press the "Save" button
Then I should see "Modified" in the ".breadcrumbs-wrapper" element
And I click "My Page" in the ".breadcrumbs-wrapper" element
And I should see "Draft" in the ".breadcrumbs-wrapper" element
Then I press the "Publish" button
And I should not see "Modified" in the ".breadcrumbs-wrapper" element
And I should not see "Modified" in the "#Form_EditForm" element

Scenario: I should see versioned badge on page with draft and modified versioned grandchild object
Given I go to "/admin/pages"
And I should see "My Page" in the tree
And I click on "My Page" in the tree
Then I should see "My Page" in the ".breadcrumbs-wrapper" element
And I should see "Draft" in the ".breadcrumbs-wrapper" element
And I click on the "#tab-Root_NonVersionedParentObjects" element
Then I click "My Non Versioned Parent Object" in the "#Form_EditForm_NonVersionedParentObjects" element
And I should not see "Draft" in the ".breadcrumbs-wrapper" element
Then I click "Versioned child objects" in the ".ui-tabs-nav" element
And I click "Add Versioned Child Object" in the "#Form_ItemEditForm_VersionedChildObjects" element
And I fill in "Name" with "My Versioned child object"
And I press the "Create" button
And I wait 2 seconds
And I should see "Draft" in the ".breadcrumbs-wrapper" element
Then I click "My Non Versioned Parent Object" in the ".breadcrumbs-wrapper" element
And I should see "Modified" in the ".breadcrumbs-wrapper" element
Then I click "My Page" in the ".breadcrumbs-wrapper" element
And I should see "Draft" in the ".breadcrumbs-wrapper" element
And I should see "My Non Versioned Parent Object" in the "#Form_EditForm" element
And I should see "Modified" in the "#Form_EditForm" element
And I press the "Publish" button
Then I click "My Non Versioned Parent Object" in the "#Form_EditForm" element
Then I click "Versioned child objects" in the ".ui-tabs-nav" element
And I click "My Versioned child object" in the "#Form_ItemEditForm_VersionedChildObjects" element
And I fill in "Name" with "My Versioned child object with changes"
Then I press the "Save" button
And I should see "Modified" in the ".breadcrumbs-wrapper" element
Then I click "My Non Versioned Parent Object" in the ".breadcrumbs-wrapper" element
And I should see "Modified" in the ".breadcrumbs-wrapper" element
And I click "Versioned child objects" in the ".ui-tabs-nav" element
And I should see "Versioned child object with changes" in the "#Form_ItemEditForm_VersionedChildObjects" element
And I should see "Modified" in the "#Form_ItemEditForm_VersionedChildObjects" element
Then I click "My Page" in the ".breadcrumbs-wrapper" element
And I should see "Modified" in the ".breadcrumbs-wrapper" element
And I should see "My Non Versioned Parent Object" in the "#Form_EditForm" element
And I should see "Modified" in the "#Form_EditForm" element

0 comments on commit 4ea4fc7

Please sign in to comment.