Skip to content
Snippets Groups Projects
Commit 513d29ca authored by Damien McKenna's avatar Damien McKenna
Browse files

Issue #2864027 by DamienMcKenna, baikho, rp7, GiorgosK, mlncn: Allow choosing...

Issue #2864027 by DamienMcKenna, baikho, rp7, GiorgosK, mlncn: Allow choosing more than one visibility group per block.
parent c36801fb
Branches
No related tags found
1 merge request!15Multi-group selction.
Pipeline #247703 passed with warnings
......@@ -5,6 +5,8 @@
* Install, update and uninstall functions for the block_visibility_groups module.
*/
use Drupal\block_visibility_groups\Plugin\Condition\ConditionGroup;
/**
* Implements hook_uninstall().
*/
......@@ -22,3 +24,43 @@ function block_visibility_groups_uninstall() {
}
}
}
/**
* Convert block condition_group references to multi-value format.
*/
function block_visibility_groups_update_8001() {
$block_storage = \Drupal::entityTypeManager()->getStorage('block');
/** @var \Drupal\block\BlockInterface[] $blocks */
$blocks = $block_storage->loadMultiple();
foreach ($blocks as $block) {
$block_needs_saving = FALSE;
foreach ($block->getVisibilityConditions() as $condition_id => $condition) {
// Find the condition_group visibility condition.
if ($condition_id !== 'condition_group') {
continue;
}
$configuration = $condition->getConfiguration();
// Look for the existing key value that we need to convert.
if (array_key_exists('block_visibility_group', $configuration)) {
// Capture existing block visibility group value.
$block_visibility_group_id = $configuration['block_visibility_group'];
// Unset the key value in config.
unset($configuration['block_visibility_group']);
// Set the new key value in config
$configuration['block_visibility_groups'] = [];
// Save the existing block visibility group value in the new key value.
if (!empty($block_visibility_group_id)) {
$configuration['block_visibility_groups'][$block_visibility_group_id] = $block_visibility_group_id;
}
// Set the operator value as "OR".
$configuration['operator'] = ConditionGroup::OPERATOR_OR;
// Set the new config onto the condition.
$condition->setConfiguration($configuration);
$block_needs_saving = TRUE;
}
}
if ($block_needs_saving) {
$block->save();
}
}
}
......@@ -42,13 +42,15 @@ function block_visibility_groups_entity_type_alter(array &$entity_types) {
*/
function block_visibility_groups_form_block_form_alter(&$form, FormStateInterface &$form_state, $form_id) {
$form['actions']['submit']['#submit'][] = 'block_visibility_groups_block_form_submit';
if (isset($form['visibility']['condition_group']['block_visibility_group']['#default_value']) &&
$form['visibility']['condition_group']['block_visibility_group']['#default_value']) {
if (isset($form['visibility']['condition_group']['block_visibility_groups']['#default_value']) &&
$form['visibility']['condition_group']['block_visibility_groups']['#default_value']) {
$storage = \Drupal::entityTypeManager()->getStorage('block_visibility_group');
$groups = $storage->loadMultiple($form['visibility']['condition_group']['block_visibility_groups']['#default_value']);
/** @var \Drupal\block_visibility_groups\Entity\BlockVisibilityGroup $group */
$group = $storage->load($form['visibility']['condition_group']['block_visibility_group']['#default_value']);
if (!$group->isAllowOtherConditions()) {
_block_visibility_groups_remove_conditions($form['visibility']);
foreach ($groups as $group) {
if ($group && !$group->isAllowOtherConditions()) {
_block_visibility_groups_remove_conditions($form['visibility']);
}
}
}
}
......@@ -76,7 +78,6 @@ function _block_visibility_groups_remove_conditions(&$form) {
* @internal
*/
function block_visibility_groups_block_form_submit($form, FormStateInterface $form_state) {
if ($block_visibility_group_query = $form_state->getTemporaryValue('block_visibility_group_query')) {
_block_visibility_groups_add_group_to_redirect($form_state, $block_visibility_group_query);
}
......@@ -91,8 +92,8 @@ function block_visibility_groups_block_form_submit($form, FormStateInterface $fo
/* @var \Drupal\block\BlockInterface $block */
$block = $form_state->getFormObject()->getEntity();
$condition_info = $block->getVisibilityCondition('condition_group')->getConfiguration();
if (!empty($condition_info['block_visibility_group'])) {
_block_visibility_groups_add_group_to_redirect($form_state, $condition_info['block_visibility_group']);
if (!empty($condition_info['block_visibility_groups'])) {
_block_visibility_groups_add_group_to_redirect($form_state, $condition_info['block_visibility_groups']);
}
}
}
......
......@@ -12,5 +12,8 @@
},
"require": {
"drupal/core": "^9 || ^10 || ^11"
},
"require-dev": {
"mpyw/phpunit-patch-serializable-comparison": "*"
}
}
......@@ -26,5 +26,9 @@ block_visibility_groups.block_visibility_group.*:
condition.plugin.condition_group:
type: condition.plugin
mapping:
block_visibility_group:
operator:
type: string
block_visibility_groups:
type: sequence
sequence:
type: string
......@@ -110,10 +110,10 @@ class BlockVisibilityGroupedListBuilder extends BlockListBuilder {
}
$options[$group_option['path']] = $group_option['label'];
}
$form['block_visibility_group'] = [
$form['block_visibility_groups'] = [
'#weight' => -100,
];
$form['block_visibility_group']['select'] = [
$form['block_visibility_groups']['select'] = [
'#type' => 'select',
'#title' => $this->t('Block Visibility Group'),
'#options' => $options,
......@@ -125,7 +125,7 @@ class BlockVisibilityGroupedListBuilder extends BlockListBuilder {
if (!$this->groupsExist()) {
$description .= ' ' . $this->t('No Groups have been created yet.');
$form['block_visibility_group']['create'] = [
$form['block_visibility_groups']['create'] = [
'#type' => 'link',
'#title' => $this->t('Create a Group'),
'#url' => Url::fromRoute('entity.block_visibility_group.add_form'),
......@@ -155,12 +155,12 @@ class BlockVisibilityGroupedListBuilder extends BlockListBuilder {
$conditions_element['#open'] = FALSE;
}
$form['block_visibility_group']['conditions_section'] = $conditions_element;
$form['block_visibility_groups']['conditions_section'] = $conditions_element;
}
}
$form['block_visibility_group']['select']['#description'] = $description;
$form['block_visibility_groups']['select']['#description'] = $description;
return $form;
}
......@@ -301,17 +301,17 @@ class BlockVisibilityGroupedListBuilder extends BlockListBuilder {
&& $current_block_visibility_group != $this::ALL_GROUP
) {
$entities = $this->storage->loadMultipleOverrideFree($entity_ids);
/** @var Block $block */
/** @var \Drupal\block\Entity\Block $block */
foreach ($entities as $block) {
$config_block_visibility_group = $this->getGroupForBlock($block);
$config_block_visibility_groups = $this->getGroupsForBlock($block);
if (static::UNSET_GROUP == $current_block_visibility_group) {
if (!empty($config_block_visibility_group)) {
if (!empty($config_block_visibility_groups)) {
unset($entity_ids[$block->id()]);
}
}
elseif ($config_block_visibility_group != $current_block_visibility_group
&& !(empty($config_block_visibility_group) && $show_global_in_group)
elseif (!in_array($current_block_visibility_group, $config_block_visibility_groups)
&& !(empty($config_block_visibility_groups) && $show_global_in_group)
) {
unset($entity_ids[$block->id()]);
}
......@@ -353,19 +353,22 @@ class BlockVisibilityGroupedListBuilder extends BlockListBuilder {
$visibility_group = $this->t('Global');
$conditions = $block->getVisibilityConditions();
if ($conditions->has('condition_group')) {
$visibility_groups = [];
$condition_config = $conditions->get('condition_group')
->getConfiguration();
if (isset($labels[$condition_config['block_visibility_group']])) {
$visibility_group = '<strong>' . $labels[$condition_config['block_visibility_group']] . '</strong>';
foreach ($condition_config['block_visibility_groups'] as $block_visibility_group) {
if (isset($labels[$block_visibility_group])) {
$visibility_groups[] = '<strong>' . $labels[$block_visibility_group] . '</strong>';
}
}
$visibility_group = implode(', ', $visibility_groups);
}
$row = &$form[$block->id()];
// Insert visibility group at correct position.
foreach (Element::children($row) as $i => $child) {
$row[$child]['#weight'] = $i;
}
$row['block_visibility_group'] = [
$row['block_visibility_groups'] = [
'#markup' => $visibility_group,
'#weight' => 1.5,
];
......@@ -378,8 +381,7 @@ class BlockVisibilityGroupedListBuilder extends BlockListBuilder {
foreach (Element::children($form) as $child) {
foreach (Element::children($form[$child]) as $gchild) {
if (isset($form[$child][$gchild]['#wrapper_attributes']['colspan'])) {
$form[$child][$gchild]['#wrapper_attributes']['colspan'] =
$form[$child][$gchild]['#wrapper_attributes']['colspan'] + 1;
$form[$child][$gchild]['#wrapper_attributes']['colspan'] += 1;
}
}
}
......
......@@ -31,20 +31,19 @@ trait BlockVisibilityLister {
* @param \Drupal\block\Entity\Block $block
* The block instance.
*
* @return string
* @return array
* The config group name.
*/
protected function getGroupForBlock(Block $block) {
/** @var ConditionPluginCollection $conditions */
protected function getGroupsForBlock(Block $block) {
/** @var \Drupal\Core\Condition\ConditionPluginCollection $conditions */
$conditions = $block->getVisibilityConditions();
$config_block_visibility_group = '';
$config_block_visibility_groups = [];
if ($conditions->has('condition_group')) {
$condition_config = $conditions->get('condition_group')
->getConfiguration();
$config_block_visibility_group = $condition_config['block_visibility_group'];
return $config_block_visibility_group;
$config_block_visibility_groups = $condition_config['block_visibility_groups'];
}
return $config_block_visibility_group;
return $config_block_visibility_groups;
}
}
......@@ -84,7 +84,7 @@ class BlockVisibilityGroupDeleteForm extends EntityConfirmFormBase {
foreach ($blocks as $block) {
$config = $block->getVisibilityCondition('condition_group')
->getConfiguration();
$config['block_visibility_group'] = $group_id;
$config['block_visibility_groups'] = [$group_id => $group_id];
$block->setVisibilityConfig('condition_group', $config);
$block->save();
}
......@@ -101,7 +101,7 @@ class BlockVisibilityGroupDeleteForm extends EntityConfirmFormBase {
$all_blocks = $this->blockStorage()->loadMultiple();
$group_blocks = [];
foreach ($all_blocks as $block) {
if ($this->getGroupForBlock($block) == $this->entity->id()) {
if (in_array($this->entity->id(), $this->getGroupsForBlock($block))) {
$group_blocks[$block->id()] = $block;
}
}
......
......@@ -18,13 +18,23 @@ use Symfony\Component\HttpFoundation\RequestStack;
*
* @Condition(
* id = "condition_group",
* label = @Translation("Condition Group"),
* label = @Translation("Condition group"),
* )
*/
class ConditionGroup extends ConditionPluginBase implements ContainerFactoryPluginInterface {
use DependencyTrait;
/**
* Groups condition AND operator.
*/
public const OPERATOR_AND = 'AND';
/**
* Groups condition OR operator.
*/
public const OPERATOR_OR = 'OR';
/**
* The condition plugin manager.
*
......@@ -47,37 +57,71 @@ class ConditionGroup extends ConditionPluginBase implements ContainerFactoryPlug
protected $requestStack;
/**
* The group evaluator.
* The condition group evaluator.
*
* @var \Drupal\block_visibility_groups\GroupEvaluator
*/
protected $groupEvaluator;
/**
* Evaluates the condition and returns TRUE or FALSE accordingly.
* {@inheritDoc}
*/
public function __construct(EntityStorageInterface $entity_storage, ExecutableManagerInterface $manager, RequestStack $request_stack, GroupEvaluator $group_evaluator, array $configuration, $plugin_id, $plugin_definition) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->manager = $manager;
$this->entityStorage = $entity_storage;
$this->requestStack = $request_stack;
$this->groupEvaluator = $group_evaluator;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
$container->get('block_visibility_groups.group_evaluator');
return new static(
$container->get('entity_type.manager')->getStorage('block_visibility_group'),
$container->get('plugin.manager.condition'),
$container->get('request_stack'),
$container->get('block_visibility_groups.group_evaluator'),
$configuration,
$plugin_id,
$plugin_definition);
}
/**
* Evaluates the condition.
*
* @return bool
* TRUE if the condition has been met, FALSE otherwise.
*/
public function evaluate() {
$block_visibility_group_id = $this->configuration['block_visibility_group'];
if (empty($block_visibility_group_id)) {
$block_visibility_group_ids = $this->configuration['block_visibility_groups'];
if (empty($block_visibility_group_ids)) {
return TRUE;
}
/** @var \Drupal\block_visibility_groups\Entity\BlockVisibilityGroup $block_visibility_group */
if ($block_visibility_group = $this->entityStorage->load($block_visibility_group_id)) {
return $this->groupEvaluator->evaluateGroup($block_visibility_group);
}
else {
// Group doesn't exist.
// @todo How to handle?
return FALSE;
/** @var \Drupal\block_visibility_groups\Entity\BlockVisibilityGroup[] $block_visibility_groups */
$block_visibility_groups = $this
->entityStorage
->loadMultiple($block_visibility_group_ids);
foreach ($block_visibility_groups as $block_visibility_group) {
$result = $this->groupEvaluator->evaluateGroup($block_visibility_group);
if ($result && $this->configuration['operator'] === self::OPERATOR_OR) {
return TRUE;
}
if (!$result && $this->configuration['operator'] === self::OPERATOR_AND) {
return FALSE;
}
}
return $this->configuration['operator'] === self::OPERATOR_AND;
}
/**
* Provides a human readable summary of the condition's configuration.
* {@inheritdoc}
*/
public function summary() {
// TODO: Implement summary() method.
......@@ -87,30 +131,34 @@ class ConditionGroup extends ConditionPluginBase implements ContainerFactoryPlug
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$form = parent::buildConfigurationForm($form, $form_state);
$block_visibility_groups = $this->entityStorage->loadMultiple();
$options = ['' => $this->t('No Block Visibility Group')];
$options = [];
foreach ($block_visibility_groups as $type) {
$options[$type->id()] = $type->label();
}
$form['block_visibility_group'] = [
$form['block_visibility_groups'] = [
'#title' => $this->t('Block Visibility Groups'),
'#type' => 'select',
'#type' => 'checkboxes',
'#options' => $options,
// '#default_value' => $default,.
];
$default = isset($this->configuration['block_visibility_group']) ? $this->configuration['block_visibility_group'] : '';
if (!$default) {
$default = $this->requestStack->getCurrentRequest()->query->get('block_visibility_group');
if ($default) {
$form['block_visibility_group']['#disabled'] = TRUE;
$form_state->setTemporaryValue('block_visibility_group_query', $default);
}
}
$form['block_visibility_group']['#default_value'] = $default;
// TODO: Change the autogenerated stub.
$form = parent::buildConfigurationForm($form, $form_state);
$default = $this->configuration['block_visibility_groups'] ?? [];
$form['block_visibility_groups']['#default_value'] = $default;
$form['operator'] = [
'#type' => 'radios',
'#options' => [
self::OPERATOR_AND => $this->t('All visibility groups must pass'),
self::OPERATOR_OR => $this->t('Only one visibility group must pass'),
],
'#default_value' => $this->configuration['operator'] ?? self::OPERATOR_AND,
];
$form['negate']['#access'] = FALSE;
return $form;
}
......@@ -120,58 +168,26 @@ class ConditionGroup extends ConditionPluginBase implements ContainerFactoryPlug
public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
$user_values = $form_state->getValues();
foreach ($user_values as $key => $value) {
$this->configuration[$key] = $value;
if ($key !== 'negate') {
$this->configuration[$key] = $value;
}
}
parent::submitConfigurationForm($form, $form_state);
}
/**
* Creates an instance of the plugin.
*
* @param \Symfony\Component\DependencyInjection\ContainerInterface $container
* The container to pull out services used in the plugin.
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin ID for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
*
* @return static
* Returns an instance of this plugin.
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
$container->get('block_visibility_groups.group_evaluator');
return new static(
$container->get('entity_type.manager')->getStorage('block_visibility_group'),
$container->get('plugin.manager.condition'),
$container->get('request_stack'),
$container->get('block_visibility_groups.group_evaluator'),
$configuration,
$plugin_id,
$plugin_definition);
}
/**
* {@inheritdoc}
*/
public function __construct(EntityStorageInterface $entity_storage, ExecutableManagerInterface $manager, RequestStack $request_stack, GroupEvaluator $group_evaluator, array $configuration, $plugin_id, $plugin_definition) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->manager = $manager;
$this->entityStorage = $entity_storage;
$this->requestStack = $request_stack;
$this->groupEvaluator = $group_evaluator;
}
/**
* {@inheritdoc}
*/
public function calculateDependencies() {
// Get dependencies from parent.
if (!empty($this->configuration['block_visibility_group'])) {
$group = $this->entityStorage->load($this->configuration['block_visibility_group']);
$this->addDependency('config', $group->getConfigDependencyName());
$this->dependencies = parent::calculateDependencies();
if (!empty($this->configuration['block_visibility_groups'])) {
$groups = $this->entityStorage->loadMultiple($this->configuration['block_visibility_groups']);
foreach ($groups as $group) {
$this->addDependency('config', $group->getConfigDependencyName());
}
}
return $this->dependencies;
}
......@@ -180,11 +196,16 @@ class ConditionGroup extends ConditionPluginBase implements ContainerFactoryPlug
*/
public function getCacheTags() {
$tags = parent::getCacheTags();
if (!empty($this->configuration['block_visibility_group'])) {
if ($group = $this->entityStorage->load($this->configuration['block_visibility_group'])) {
if (!empty($this->configuration['block_visibility_groups'])) {
$groups = $this
->entityStorage
->loadMultiple($this->configuration['block_visibility_groups']);
foreach ($groups as $group) {
$tags = Cache::mergeTags($tags, $group->getCacheTags());
}
}
return $tags;
}
......@@ -193,9 +214,13 @@ class ConditionGroup extends ConditionPluginBase implements ContainerFactoryPlug
*/
public function getCacheContexts() {
$contexts = parent::getCacheContexts();
if (!empty($this->configuration['block_visibility_group'])) {
if ($group = $this->entityStorage->load($this->configuration['block_visibility_group'])) {
$contexts = Cache::mergeContexts($contexts, $group->getCacheContexts());
if (!empty($this->configuration['block_visibility_groups'])) {
$groups = $this->entityStorage
->loadMultiple($this->configuration['block_visibility_groups']);
foreach ($groups as $group) {
if (!empty($group)) {
$contexts = Cache::mergeContexts($contexts, $group->getCacheContexts());
}
}
}
return $contexts;
......@@ -206,9 +231,13 @@ class ConditionGroup extends ConditionPluginBase implements ContainerFactoryPlug
*/
public function getCacheMaxAge() {
$age = parent::getCacheMaxAge();
if (!empty($this->configuration['block_visibility_group'])) {
if ($group = $this->entityStorage->load($this->configuration['block_visibility_group'])) {
$age = Cache::mergeMaxAges($age, $group->getCacheMaxAge());
if (!empty($this->configuration['block_visibility_groups'])) {
$groups = $this->entityStorage
->loadMultiple($this->configuration['block_visibility_groups']);
foreach ($groups as $group) {
if ($group) {
$age = Cache::mergeMaxAges($age, $group->getCacheMaxAge());
}
}
}
return $age;
......
......@@ -26,21 +26,22 @@ class BlockVisibilityGroupsUiTest extends BlockVisibilityGroupsTestBase {
$this->drupalGet('admin/structure/block/manage/' . $block->id());
$select = $this->assertSession()->selectExists('visibility[condition_group][block_visibility_group]');
$select->selectOption($group->id());
$this->getSession()->getPage()->pressButton('Save block');
$this->assertSession()->fieldExists('visibility[condition_group][block_visibility_groups][' . $group->id() . ']');
$edit = [
'visibility[condition_group][block_visibility_groups][' . $group->id() . ']' => $group->id(),
];
$this->submitForm($edit, 'Save block');
$this->drupalGet('admin/structure/block/manage/' . $block->id());
$selected = $this->assertSession()->elementExists('css', '#edit-visibility-condition-group-block-visibility-group option:selected');
self::assertEquals($selected->getText(), $group->label());
$selected = $this->assertSession()->elementExists('css', '#edit-visibility-condition-group-block-visibility-groups-test-group');
self::assertEquals($selected->getValue(), $group->id());
$block = \Drupal::service('entity_type.manager')
->getStorage('block')
->load($block->id());
$actual = $block->getVisibility();
self::assertEquals($actual['condition_group']['block_visibility_group'], $group->id());
self::assertEquals($actual['condition_group']['block_visibility_groups'][$group->id()], $group->id());
}
/**
......@@ -166,8 +167,14 @@ class BlockVisibilityGroupsUiTest extends BlockVisibilityGroupsTestBase {
$this->drupalGet('admin/structure/block/manage/' . $block->id());
$tabs = $this->assertSession()->elementExists('css', "div[data-drupal-selector=\"edit-visibility-tabs\"]");
$items = $tabs->findAll('css', 'summary');
self::assertEquals('Condition Group', $items[0]->getText());
$this->assertSession()->fieldValueEquals('Block Visibility Groups', '');
self::assertEquals('Condition group', $items[0]->getText());
// This doesn't work as the field is now a set of checkboxes, not a simple
// radio field.
// @code
// $this->assertSession()->fieldValueEquals('Block Visibility Groups', '');
// @endcode
// There are no visibility groups to select from now.
$this->assertSession()->elementNotExists('css', '#edit-visibility-condition-group-block-visibility-groups input');
$group = $this->createGroup();
$block = $this->placeBlockInGroup('system_powered_by_block', $group->id());
......@@ -200,12 +207,16 @@ class BlockVisibilityGroupsUiTest extends BlockVisibilityGroupsTestBase {
$selected = $this->assertSession()->elementExists('css', '#block-admin-display-form option:selected');
self::assertEquals($group->label(), $selected->getText());
// Find the block's row and visit it's configuration page.
// Find the block's row and visit its configuration page.
$row = $this->assertSession()->elementExists('css', "tr[data-drupal-selector=\"edit-blocks-{$block->id()}\"]");
$row->clickLink('Configure');
$select = $this->assertSession()->elementExists('css', '#edit-visibility-condition-group-block-visibility-group');
self::assertTrue($select->hasAttribute('disabled'));
// @todo Work out what the appropriate scenario should be here.
// @see ConditionGroup::buildConfigurationForm()
$checkbox = $this->assertSession()->elementExists('css', '#edit-visibility-condition-group-block-visibility-groups input');
// @code
// self::assertTrue($checkbox->hasAttribute('unchecked'));
// @endcode
}
/**
......@@ -227,8 +238,8 @@ class BlockVisibilityGroupsUiTest extends BlockVisibilityGroupsTestBase {
$row = $this->assertSession()->elementExists('css', "tr[data-drupal-selector=\"edit-blocks-{$block->id()}\"]");
$row->clickLink('Configure');
$selected = $this->assertSession()->elementExists('css', '#edit-visibility-condition-group-block-visibility-group option:selected');
self::assertEquals($selected->getText(), $group->label());
$selected = $this->assertSession()->elementExists('css', '#edit-visibility-condition-group-block-visibility-groups input:checked');
self::assertEquals($selected->getValue(), $group->id());
$this->getSession()->getPage()->pressButton('Save block');
......@@ -244,7 +255,7 @@ class BlockVisibilityGroupsUiTest extends BlockVisibilityGroupsTestBase {
}
/**
* Test Other visibility settings don't exist when option is set in group.
* Test other visibility settings don't exist when option is set in group.
*/
public function testBlockVisibilityTabs() {
$group = $this->createGroup();
......@@ -255,11 +266,14 @@ class BlockVisibilityGroupsUiTest extends BlockVisibilityGroupsTestBase {
$tabs = $this->assertSession()->elementExists('css', "div[data-drupal-selector=\"edit-visibility-tabs\"]");
$items = $tabs->findAll('css', 'summary');
self::assertCount(1, $items);
self::assertEquals('Condition Group', $items[0]->getText());
$item = $tabs->find('css', '.form-item-visibility-condition-group-block-visibility-group');
$label = $item->find('css', 'label');
self::assertEquals('Condition group', $items[0]->getText());
$item = $tabs->find('css', '#edit-visibility-condition-group-block-visibility-groups--wrapper');
self::assertNotNull($item);
$label = $item->find('css', 'legend');
self::assertEquals('Block Visibility Groups', $label->getText());
$this->assertSession()->fieldValueEquals('Block Visibility Groups', $group->id());
// The group will exist as a field on the form.
$this->assertSession()->fieldValueEquals($group->label(), $group->id());
}
/**
......
......@@ -4,6 +4,7 @@ namespace Drupal\Tests\block_visibility_groups\Traits;
use Drupal\block_visibility_groups\Entity\BlockVisibilityGroup;
use Drupal\Component\Render\FormattableMarkup;
use Drupal\block_visibility_groups\Plugin\Condition\ConditionGroup;
/**
* Helper methods to deal with block visibility group testing.
......@@ -40,7 +41,8 @@ trait BlockVisibilityGroupTrait {
'label_display' => 'visible',
'label' => $this->randomMachineName(),
];
$settings['visibility']['condition_group']['block_visibility_group'] = $group_id;
$settings['visibility']['condition_group']['block_visibility_groups'][$group_id] = $group_id;
$settings['visibility']['condition_group']['operator'] = ConditionGroup::OPERATOR_AND;
return $this->drupalPlaceBlock($plugin_id, $settings);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment