Skip to content
Snippets Groups Projects
Commit dc8a9b0b authored by Antonio De Marco's avatar Antonio De Marco
Browse files

Issue #118: Fix field group template suggestions and add tests.

parent 9036f8fd
No related branches found
No related tags found
No related merge requests found
<?php
namespace Drupal\Tests\ui_patterns_field_group\FunctionalJavascript;
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
/**
* Test Field Group pattern rendering.
*
* @group ui_patterns_field_group
*/
class FieldGroupRenderTest extends WebDriverTestBase {
/**
* Disable schema validation when running tests.
* @todo: Fix this by providing actual schema validation.
*
* @var bool
*/
protected $strictConfigSchema = FALSE;
/**
* {@inheritdoc}
*/
protected static $modules = [
'node',
'field',
'field_group',
'field_ui',
'text',
'ui_patterns_field_group_test',
];
/**
* Test that pattern field group settings are correctly saved.
*/
public function testFieldGroupRendering() {
$assert_session = $this->assertSession();
// Enable debug, rebuild the service container, and clear all caches.
$parameters = $this->container->getParameter('twig.config');
$parameters['debug'] = TRUE;
$this->setContainerParameter('twig.config', $parameters);
$this->rebuildContainer();
$this->resetAll();
$user = $this->drupalCreateUser([], null, true);
$this->drupalLogin($user);
$node = $this->drupalCreateNode([
'title' => 'Test article',
'field_text' => 'Test text field',
'type' => 'article',
]);
$this->drupalGet($node->toUrl());
// Assert correct variant suggestions.
$suggestions = [
'pattern-metadata--variant-first--field-group--group-pattern-group--node--article--default.html.twig',
'pattern-metadata--variant-first--field-group--group-pattern-group--node--default.html.twig',
'pattern-metadata--variant-first--field-group--group-pattern-group--node--article.html.twig',
'pattern-metadata--variant-first--field-group--group-pattern-group--node.html.twig',
'pattern-metadata--variant-first--field-group--group-pattern-group.html.twig',
'pattern-metadata--variant-first--field-group.html.twig',
'pattern-metadata--field-group--group-pattern-group--node--article--default.html.twig',
'pattern-metadata--field-group--group-pattern-group--node--default.html.twig',
'pattern-metadata--field-group--group-pattern-group--node--article.html.twig',
'pattern-metadata--field-group--group-pattern-group--node.html.twig',
'pattern-metadata--field-group--group-pattern-group.html.twig',
'pattern-metadata--field-group.html.twig',
'pattern-metadata--variant-first.html.twig',
'pattern-metadata.html.twig',
];
foreach ($suggestions as $suggestion) {
$assert_session->responseContains($suggestion);
}
// Test field content is rendered in field group pattern.
$assert_session->pageTextContains('Field 1: Text Test text field');
}
}
......@@ -64,7 +64,7 @@ class FieldGroupSettingsTest extends WebDriverTestBase {
/**
* Test that pattern field group settings are correctly saved.
*/
public function testFieldTemplateSettings() {
public function testFieldGroupSettings() {
$page = $this->getSession()->getPage();
$assert_session = $this->assertSession();
......
......@@ -59,18 +59,20 @@ function ui_patterns_field_group_ui_patterns_suggestions_alter(array &$suggestio
$bundle = $context->getProperty('bundle');
$view_mode = $context->getProperty('view_mode');
$suggestions[] = $hook . '__field_group';
$suggestions[] = $hook . '__field_group__' . $group_name;
$suggestions[] = $hook . '__field_group__' . $group_name . '__' . $entity_type;
$suggestions[] = $hook . '__field_group__' . $group_name . '__' . $entity_type . '__' . $bundle;
$suggestions[] = $hook . '__field_group__' . $group_name . '__' . $entity_type . '__' . $view_mode;
$suggestions[] = $hook . '__field_group__' . $group_name . '__' . $entity_type . '__' . $bundle . '__' . $view_mode;
if ('' !== $variant) {
$suggestions[] = $hook . '__' . $variant . '__field_group__' . $group_name;
$suggestions[] = $hook . '__' . $variant . '__field_group__' . $group_name . '__' . $entity_type;
$suggestions[] = $hook . '__' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $bundle;
$suggestions[] = $hook . '__' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $view_mode;
$suggestions[] = $hook . '__' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $bundle . '__' . $view_mode;
if (!empty($variant)) {
$suggestions[] = $hook . '__variant_' . $variant . '__field_group';
$suggestions[] = $hook . '__variant_' . $variant . '__field_group__' . $group_name;
$suggestions[] = $hook . '__variant_' . $variant . '__field_group__' . $group_name . '__' . $entity_type;
$suggestions[] = $hook . '__variant_' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $bundle;
$suggestions[] = $hook . '__variant_' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $view_mode;
$suggestions[] = $hook . '__variant_' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $bundle . '__' . $view_mode;
}
}
}
......@@ -95,12 +97,12 @@ function ui_patterns_field_group_ui_patterns_destination_suggestions_alter(array
$suggestions[] = $hook . '__field_group__' . $group_name . '__' . $entity_type . '__' . $view_mode . '__' . $pattern . '__' . $field;
$suggestions[] = $hook . '__field_group__' . $group_name . '__' . $entity_type . '__' . $bundle . '__' . $view_mode . '__' . $pattern . '__' . $field;
if ('' !== $variant) {
$suggestions[] = $hook . '__' . $variant . '__field_group__' . $group_name . '__' . $pattern . '__' . $field;
$suggestions[] = $hook . '__' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $pattern . '__' . $field;
$suggestions[] = $hook . '__' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $bundle . '__' . $pattern . '__' . $field;
$suggestions[] = $hook . '__' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $view_mode . '__' . $pattern . '__' . $field;
$suggestions[] = $hook . '__' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $bundle . '__' . $view_mode . '__' . $pattern . '__' . $field;
if (!empty($variant)) {
$suggestions[] = $hook . '__variant_' . $variant . '__field_group__' . $group_name . '__' . $pattern . '__' . $field;
$suggestions[] = $hook . '__variant_' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $pattern . '__' . $field;
$suggestions[] = $hook . '__variant_' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $bundle . '__' . $pattern . '__' . $field;
$suggestions[] = $hook . '__variant_' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $view_mode . '__' . $pattern . '__' . $field;
$suggestions[] = $hook . '__variant_' . $variant . '__field_group__' . $group_name . '__' . $entity_type . '__' . $bundle . '__' . $view_mode . '__' . $pattern . '__' . $field;
}
}
}
@api
Feature: Field group module integration
In order to be able tu use patterns as field groups templates
As a developer
I want to be able to make sure the ui_patterns_field_group module works properly.
@javascript @restoreContentTypes
Scenario: I can create a content type and a content using the Patterns plugin.
Given I am logged in as a user with the "administrator" role
# Create a content type
When I visit "/admin/structure/types"
And I click "Add content type"
And I fill in "Name" with "Content type test"
And I wait "2" seconds
And I press the "Save and manage fields" button
Then I should see "The content type Content type test has been added."
# Add a button field to the content type
When I click "Add field"
And I select "Link" from "Add a new field"
And I wait "2" seconds
And I fill in "Label" with "My Primary button"
And I wait "2" seconds
And I press the "Save and continue" button
Then I should see "These settings apply to the My Primary Button field everywhere it is used. These settings impact the way that data is stored in the database and cannot be changed once data has been created."
When I press the "Save field settings" button
Then I should see "Updated field My Primary Button field settings."
# Configure the layout of the content type
When I visit "/admin/structure/types/manage/content_type_test/display"
And I select "One column layout" from "Select a layout"
And I wait "2" seconds
And I press the "Save" button
Then I should see "Your settings have been saved."
# Configure the button of the content type
When I visit "/admin/structure/types/manage/content_type_test/display"
And I press "field_my_primary_button_plugin_settings_edit"
And I wait "2" seconds
And I select "Pattern" from "Choose a Field Template"
And I wait "2" seconds
And I select "Button" from "patterns-select"
And I wait "2" seconds
And I select "Primary" from "Variant"
And I select "Label" from "fields[field_my_primary_button][settings_edit_form][third_party_settings][ds][ft][settings][pattern_mapping][button][settings][ds_field_template:field_my_primary_button__title][destination]"
And I select "URL" from "fields[field_my_primary_button][settings_edit_form][third_party_settings][ds][ft][settings][pattern_mapping][button][settings][ds_field_template:field_my_primary_button__uri][destination]"
And I press the "Update" button
And I wait "2" seconds
And I press the "Save" button
Then I should see "Your settings have been saved."
# Create a content
When I visit "/node/add/content_type_test"
And I fill in "Title" with "My test content"
And I fill in "URL" with "<front>"
And I fill in "Link text" with "Go Home"
And I press the "Save" button
Then I should see "Content type test My test content has been created."
And I should see "Running: ui_patterns_test_theme_preprocess_pattern_button"
And the ".btn.btn-primary" element should contain "Go home"
......@@ -61,6 +61,6 @@ function ui_patterns_theme_suggestions_alter(array &$suggestions, array $variabl
*/
function ui_patterns_ui_patterns_suggestions_alter(array &$suggestions, array $variables, PatternContext $context) {
if (!empty($variables['variant'])) {
$suggestions[] = $variables['theme_hook_original'] . '__' . $variables['variant'];
$suggestions[] = $variables['theme_hook_original'] . '__variant_' . $variables['variant'];
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment