Chris@0: container->get('plugin.manager.block'); Chris@0: $configuration = [ Chris@0: 'label' => 'Custom Display Message', Chris@0: ]; Chris@0: $expected_configuration = [ Chris@0: 'id' => 'test_block_instantiation', Chris@0: 'label' => 'Custom Display Message', Chris@0: 'provider' => 'block_test', Chris@0: 'label_display' => BlockPluginInterface::BLOCK_LABEL_VISIBLE, Chris@0: 'display_message' => 'no message set', Chris@0: ]; Chris@0: // Initial configuration of the block at construction time. Chris@0: /** @var $display_block \Drupal\Core\Block\BlockPluginInterface */ Chris@0: $display_block = $manager->createInstance('test_block_instantiation', $configuration); Chris@0: $this->assertIdentical($display_block->getConfiguration(), $expected_configuration, 'The block was configured correctly.'); Chris@0: Chris@0: // Updating an element of the configuration. Chris@0: $display_block->setConfigurationValue('display_message', 'My custom display message.'); Chris@0: $expected_configuration['display_message'] = 'My custom display message.'; Chris@0: $this->assertIdentical($display_block->getConfiguration(), $expected_configuration, 'The block configuration was updated correctly.'); Chris@0: $definition = $display_block->getPluginDefinition(); Chris@0: Chris@0: $expected_form = [ Chris@0: 'provider' => [ Chris@0: '#type' => 'value', Chris@0: '#value' => 'block_test', Chris@0: ], Chris@0: 'admin_label' => [ Chris@0: '#type' => 'item', Chris@0: '#title' => t('Block description'), Chris@0: '#plain_text' => $definition['admin_label'], Chris@0: ], Chris@0: 'label' => [ Chris@0: '#type' => 'textfield', Chris@0: '#title' => 'Title', Chris@0: '#maxlength' => 255, Chris@0: '#default_value' => 'Custom Display Message', Chris@0: '#required' => TRUE, Chris@0: ], Chris@0: 'label_display' => [ Chris@0: '#type' => 'checkbox', Chris@0: '#title' => 'Display title', Chris@0: '#default_value' => TRUE, Chris@0: '#return_value' => 'visible', Chris@0: ], Chris@0: 'context_mapping' => [], Chris@0: 'display_message' => [ Chris@0: '#type' => 'textfield', Chris@0: '#title' => t('Display message'), Chris@0: '#default_value' => 'My custom display message.', Chris@0: ], Chris@0: ]; Chris@0: $form_state = new FormState(); Chris@0: // Ensure there are no form elements that do not belong to the plugin. Chris@0: $actual_form = $display_block->buildConfigurationForm([], $form_state); Chris@0: // Remove the visibility sections, as that just tests condition plugins. Chris@0: unset($actual_form['visibility'], $actual_form['visibility_tabs']); Chris@0: $this->assertIdentical($this->castSafeStrings($actual_form), $this->castSafeStrings($expected_form), 'Only the expected form elements were present.'); Chris@0: Chris@0: $expected_build = [ Chris@0: '#children' => 'My custom display message.', Chris@0: ]; Chris@0: // Ensure the build array is proper. Chris@0: $this->assertIdentical($display_block->build(), $expected_build, 'The plugin returned the appropriate build array.'); Chris@0: Chris@0: // Ensure the machine name suggestion is correct. In truth, this is actually Chris@0: // testing BlockBase's implementation, not the interface itself. Chris@0: $this->assertIdentical($display_block->getMachineNameSuggestion(), 'displaymessage', 'The plugin returned the expected machine name suggestion.'); Chris@0: } Chris@0: Chris@0: }