Tests the lockable plugin.
@group paragraphs_collection
Expanded class hierarchy of ParagraphsLockablePluginTest
\Drupal\paragraphs_collection\Plugin\paragraphs\Behavior\ParagraphsLockablePlugin
class ParagraphsLockablePluginTest extends ParagraphsTestBase {
use \Drupal\Tests\field_ui\Traits\FieldUiTestTrait;
/**
* Required modules to be installed for test to run.
*
* @var array
*/
protected static $modules = [
'paragraphs_collection',
];
/**
* Tests the lockable functionality with admin and other role on paragraphs.
*/
public function testLockedParagraphInstance() {
// Create an article with paragraphs field.
$contentTypeId = 'paragraphed_lock_test';
$this
->addParagraphedContentType($contentTypeId, 'paragraphs');
$permissions = [
'administer site configuration',
'administer lockable paragraph',
'bypass node access',
'administer content types',
'edit behavior plugin settings',
];
$this
->loginAsAdmin($permissions);
// Add a text paragraphs type with a text field.
$paragraphType = 'text_test';
$fieldName = 'text';
$this
->addParagraphsType($paragraphType);
$bundlePath = 'admin/structure/paragraphs_type/' . $paragraphType;
$this
->fieldUIAddExistingField('admin/structure/paragraphs_type/' . $paragraphType, 'paragraphs_text');
$this
->drupalGet($bundlePath);
$this
->assertSession()
->fieldExists('behavior_plugins[lockable][enabled]');
$edit = [
'behavior_plugins[lockable][enabled]' => TRUE,
];
$this
->submitForm($edit, t('Save'));
// Check that the bundle now has lockable enabled.
$this
->drupalGet($bundlePath);
$this
->assertSession()
->checkboxChecked('edit-behavior-plugins-lockable-enabled');
// Create a paragraphed content.
$this
->drupalGet('node/add/' . $contentTypeId);
$this
->submitForm([], 'paragraphs_' . $paragraphType . '_add_more');
// Add title and body text to the node and save it.
$edit = [
'title[0][value]' => 'Test article',
'paragraphs[0][subform][paragraphs_' . $fieldName . '][0][value]' => 'This is some text',
'paragraphs[0][behavior_plugins][lockable][locked]' => TRUE,
];
$this
->submitForm($edit, 'Save');
$nodeUrl = $this
->getUrl();
$this
->drupalGet($nodeUrl . '/edit');
$this
->assertSession()
->pageTextNotContains('You are not allowed to edit or remove this Paragraph.');
// Check that a new user without our permission cannot edit.
$account = $this
->drupalCreateUser([
'bypass node access',
]);
$this
->drupalLogin($account);
$this
->drupalGet($nodeUrl . '/edit');
$this
->assertSession()
->pageTextContains('You are not allowed to edit or remove this Paragraph.');
// Check that a new non admin user who does have the permission can edit.
$account = $this
->drupalCreateUser([
'bypass node access',
'administer lockable paragraph',
]);
$this
->drupalLogin($account);
$this
->drupalGet($nodeUrl . '/edit');
$this
->assertSession()
->pageTextNotContains('You are not allowed to edit or remove this Paragraph.');
}
/**
* Tests Lockable plugin summary for paragraphs closed mode.
*/
public function testLockedSettingsSummary() {
// Create an article with paragraphs field.
$content_type_id = 'paragraphed_lock_test';
$this
->addParagraphedContentType($content_type_id, 'paragraphs');
$this
->loginAsAdmin([
'administer site configuration',
'administer lockable paragraph',
'bypass node access',
'administer content types',
'edit behavior plugin settings',
'create ' . $content_type_id . ' content',
'edit any ' . $content_type_id . ' content',
]);
// Add a text paragraph type.
$paragraph_type = 'text_test';
$field_name = 'text';
$this
->addParagraphsType($paragraph_type);
$this
->fieldUIAddExistingField('admin/structure/paragraphs_type/' . $paragraph_type, 'paragraphs_text');
$this
->setParagraphsWidgetMode($content_type_id, 'paragraphs', 'closed');
// Enable Lockable plugin for this text paragraph type.
$edit = [
'behavior_plugins[lockable][enabled]' => TRUE,
];
$this
->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
$this
->submitForm($edit, t('Save'));
// Node edit: add two text paragraph type, set the second text as locked.
$this
->drupalGet('node/add/' . $content_type_id);
$this
->submitForm([], 'paragraphs_' . $paragraph_type . '_add_more');
$this
->submitForm([], 'paragraphs_' . $paragraph_type . '_add_more');
$edit = [
'title[0][value]' => 'Lockable plugin summary',
'paragraphs[0][subform][paragraphs_' . $field_name . '][0][value]' => 'Text 1',
'paragraphs[1][subform][paragraphs_' . $field_name . '][0][value]' => 'Text 2',
'paragraphs[1][behavior_plugins][lockable][locked]' => TRUE,
];
$this
->submitForm($edit, 'Save');
// Assert the paragraph item summaries include the plugin summaries.
$this
->clickLink('Edit');
$this
->assertSession()
->responseContains('<span class="summary-content">Text 1<');
$this
->assertSession()
->responseContains('<span class="summary-content">Text 2</span></div><div class="paragraphs-plugin-wrapper"><span class="summary-plugin">Locked<');
}
}
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ParagraphsLockablePluginTest:: |
protected static | property |
Required modules to be installed for test to run. Overrides ParagraphsTestBase:: |
|
ParagraphsLockablePluginTest:: |
public | function | Tests the lockable functionality with admin and other role on paragraphs. | |
ParagraphsLockablePluginTest:: |
public | function | Tests Lockable plugin summary for paragraphs closed mode. | |
ParagraphsTestBase:: |
protected | property | List of permissions used by loginAsAdmin(). | |
ParagraphsTestBase:: |
protected | property | Drupal user object created by loginAsAdmin(). | 1 |
ParagraphsTestBase:: |
protected | property | 2 | |
ParagraphsTestBase:: |
function | Creates an user with admin permissions and log in. | ||
ParagraphsTestBase:: |
protected | function |
Removes the default paragraph type. Overrides ParagraphsTestBase:: |
|
ParagraphsTestBase:: |
protected | function |
Sets the Paragraphs widget add mode. Overrides ParagraphsTestBase:: |
|
ParagraphsTestBase:: |
protected | function | Sets the allowed Paragraphs types that can be added. | |
ParagraphsTestBase:: |
protected | function | Sets the default paragraph type. | |
ParagraphsTestBase:: |
protected | function | Sets the weight of a given Paragraphs type. | |
ParagraphsTestBase:: |
protected | function | Sets the Paragraphs widget display mode. | |
ParagraphsTestBase:: |
protected | function | 19 | |
ParagraphsTestBaseTrait:: |
protected | property | The workflow entity. | |
ParagraphsTestBaseTrait:: |
protected | function | Adds a field to a given paragraph type. | |
ParagraphsTestBaseTrait:: |
protected | function | Adds a content type with a Paragraphs field. | |
ParagraphsTestBaseTrait:: |
protected | function | Adds a Paragraphs field to a given entity type. | |
ParagraphsTestBaseTrait:: |
protected | function | Adds a Paragraphs type. | |
ParagraphsTestBaseTrait:: |
protected | function | Adds an icon to a paragraphs type. | |
ParagraphsTestBaseTrait:: |
protected | function | Checks the core version. | |
ParagraphsTestBaseTrait:: |
protected | function | Creates a workflow entity. | |
ParagraphsTestBaseTrait:: |
protected | function | Sets some of the settings of a paragraphs field widget. |