Skip to content
Snippets Groups Projects
Commit b6c9c890 authored by Mikael Meulle's avatar Mikael Meulle
Browse files

Merge branch '3467652-2.0.0-beta2-views-tests' into '2.0.x'

Views tests

See merge request !196
parents 0e3d171c 20167a05
No related branches found
No related tags found
No related merge requests found
Checking pipeline status
Showing
with 1203 additions and 12 deletions
......@@ -28,6 +28,18 @@ class LayoutBuilderFieldFormatterRenderTest extends UiPatternsFunctionalTestBase
'block',
];
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
if ($this->user) {
$this->drupalCreateRole(['configure any layout'], 'custom_role');
$this->user->addRole('custom_role');
$this->user->save();
}
}
/**
* Test the form and the existence of the.
*/
......
<?php
namespace Drupal\Tests\ui_patterns_views\Functional;
use Drupal\Tests\ui_patterns\Functional\UiPatternsFunctionalTestBase;
use Drupal\Tests\ui_patterns\Traits\TestDataTrait;
/**
* Test pattern preview rendering.
*
* @group ui_patterns_layouts
*/
class ViewsRenderTest extends UiPatternsFunctionalTestBase {
use TestDataTrait;
/**
* {@inheritdoc}
*/
protected static $modules = [
'node',
'ui_patterns',
'ui_patterns_test',
'ui_patterns_field_formatters',
'ui_patterns_views',
'views',
'views_ui',
'block',
];
/**
* Test to see if UIP plugins appear.
*/
public function testPlugins(): void {
$this->createTestContentContentType();
$assert_session = $this->assertSession();
$view_test_data = self::loadTestDataFixture(__DIR__ . "/../fixtures/TestDataSet.yml");
// ---
// View Style
// ---
$config_import = $this->loadConfigFixture(__DIR__ . '/../fixtures/views.view.test.yml');
$this->importConfigFixture(
'views.view.test',
$config_import
);
// Check that the Views style plugin appears.
$this->drupalGet('admin/structure/views/nojs/display/test/default/style');
$assert_session->elementTextEquals("css", ".form-item label", "Component (UI Patterns)");
// Configure the style plugin.
$config_import = $this->loadConfigFixture(__DIR__ . '/../fixtures/views.view.test.style.yml');
$ui_patterns_config = &$config_import['display']['page_1']['display_options']["style"]["options"]["ui_patterns"]['ui_patterns'];
$tests = $view_test_data->getTestSets();
foreach ($tests as $test_set_name => $test_set) {
if (!str_starts_with($test_set_name, 'style') || !isset($test_set["assertSession"])) {
continue;
}
$node = $this->createTestContentNode('page', $test_set['entity'] ?? []);
$ui_patterns_config = $this->buildUiPatternsConfig($test_set);
$this->importConfigFixture(
'views.view.test',
$config_import
);
\Drupal::service('router.builder')->rebuild();
$this->drupalGet('test');
$this->assertSessionObject($test_set["assertSession"]);
$node->delete();
}
// ---
// View Rows
// ---
$config_import = $this->loadConfigFixture(__DIR__ . '/../fixtures/views.view.test.yml');
$this->importConfigFixture(
'views.view.test',
$config_import
);
// Check that the View rows style plugin appears.
$this->drupalGet('admin/structure/views/nojs/display/test/default/row');
$assert_session->elementTextEquals("css", ".form-item label", "Component (UI Patterns)");
// Configure the row style plugin.
$config_import = $this->loadConfigFixture(__DIR__ . '/../fixtures/views.view.test.row_style.yml');
$ui_patterns_config = &$config_import['display']['page_1']['display_options']["row"]["options"]["ui_patterns"];
$tests = $view_test_data->getTestSets();
foreach ($tests as $test_set_name => $test_set) {
if (!str_starts_with($test_set_name, 'row_style') || !isset($test_set["assertSession"])) {
continue;
}
$node = $this->createTestContentNode('page', $test_set['entity'] ?? []);
$ui_patterns_config = $this->buildUiPatternsConfig($test_set);
$this->importConfigFixture(
'views.view.test',
$config_import
);
\Drupal::service('router.builder')->rebuild();
$this->drupalGet('test');
$this->assertSessionObject($test_set["assertSession"]);
$node->delete();
}
// ---
// View field
// ---
$config_import = $this->loadConfigFixture(__DIR__ . '/../fixtures/views.view.test.yml');
$this->importConfigFixture(
'views.view.test',
$config_import
);
// Check that field formatter plugin appears.
$this->drupalGet('admin/structure/views/nojs/handler/test/default/field/title');
$text_field_formatter_plugin = "Component per item (UI Patterns)";
$key_field_formatter_plugin = "ui_patterns_component_per_item";
$page = $this->getSession()->getPage();
$nodes = $page->findAll("css", "select[name='options[type]'] option");
$textFound = FALSE;
$valueFound = FALSE;
foreach ($nodes as $node) {
$text = $node->getText();
if ($text === $text_field_formatter_plugin) {
$textFound = TRUE;
}
if ($node->getAttribute("value") === $key_field_formatter_plugin) {
$valueFound = TRUE;
}
}
if (!$textFound || !$valueFound) {
$this->fail(sprintf("Option not found for field formatter: %s / %s", $key_field_formatter_plugin, $text_field_formatter_plugin));
}
// Configure a field, with field formatter plugin.
$config_import = $this->loadConfigFixture(__DIR__ . '/../fixtures/views.view.test.field.yml');
$ui_patterns_config = &$config_import['display']['page_1']['display_options']["fields"]["title"]["settings"]["ui_patterns"];
$tests = $view_test_data->getTestSets();
foreach ($tests as $test_set_name => $test_set) {
if (!str_starts_with($test_set_name, 'field') || !isset($test_set["assertSession"])) {
continue;
}
$node = $this->createTestContentNode('page', $test_set['entity'] ?? []);
$ui_patterns_config = $this->buildUiPatternsConfig($test_set);
$this->importConfigFixture(
'views.view.test',
$config_import
);
\Drupal::service('router.builder')->rebuild();
$this->drupalGet('test');
$this->assertSessionObject($test_set["assertSession"]);
$node->delete();
}
}
}
---
style_1:
component:
component_id: ui_patterns_test:test-wrapper-component
variant_id: null
slots:
wrapper:
sources:
- source:
ui_patterns_views_field: ''
source_id: view_rows
entity:
title:
value: 'title_entity_1'
assertSession:
elementExists:
- ['css', '#ui-patterns-wrapper']
- ['css', '#ui-patterns-wrapper-wrapper']
pageTextContains:
- ['title_entity_1']
style_2:
component:
component_id: ui_patterns_test:test-wrapper-component
variant_id: null
slots:
wrapper:
sources:
- source:
ui_patterns_views_field: 'title'
source_id: view_rows
entity:
title:
value: 'title_entity_2'
assertSession:
elementExists:
- ['css', '#ui-patterns-wrapper']
- ['css', '#ui-patterns-wrapper-wrapper']
pageTextContains:
- ['title_entity_2']
style_3:
component:
component_id: ui_patterns_test:test-component
props:
string:
source_id: view_title
assertSession:
elementTextEquals:
- ['css', '#ui-patterns-props-string', 'custom view title']
row_style_1:
component:
component_id: ui_patterns_test:test-wrapper-component
variant_id: null
slots:
wrapper:
sources:
- source:
ui_patterns_views_field: 'title'
source_id: view_field
entity:
title:
value: 'title_entity_3'
assertSession:
elementExists:
- ['css', '#ui-patterns-wrapper']
- ['css', '#ui-patterns-wrapper-wrapper']
pageTextContains:
- ['title_entity_3']
row_style_2:
component:
component_id: ui_patterns_test:test-component
props:
string:
source_id: view_title
assertSession:
elementTextEquals:
- ['css', '#ui-patterns-props-string', 'custom view title']
field_1:
component:
component_id: ui_patterns_test:test-wrapper-component
variant_id: null
slots:
wrapper:
sources:
- source_id: 'field_property:node:title:value'
entity:
title:
value: 'title_entity_4'
assertSession:
elementExists:
- ['css', '#ui-patterns-wrapper']
- ['css', '#ui-patterns-wrapper-wrapper']
elementTextEquals:
- [ 'css', '#ui-patterns-wrapper-wrapper', 'title_entity_4' ]
uuid: afbf5442-7d05-4ee8-a3cd-a84a1f8370fa
langcode: en
status: true
dependencies:
config:
- node.type.page
module:
- node
- ui_patterns
- ui_patterns_field_formatters
id: test
label: test
module: views
description: ''
tag: ''
base_table: node_field_data
base_field: nid
display:
default:
id: default
display_title: Default
display_plugin: default
position: 0
display_options:
title: ''
fields:
title:
id: title
table: node_field_data
field: title
relationship: none
group_type: group
admin_label: ''
entity_type: node
entity_field: title
plugin_id: field
label: ''
exclude: false
alter:
alter_text: false
text: ''
make_link: false
path: ''
absolute: false
external: false
replace_spaces: false
path_case: none
trim_whitespace: false
alt: ''
rel: ''
link_class: ''
prefix: ''
suffix: ''
target: ''
nl2br: false
max_length: 0
word_boundary: false
ellipsis: false
more_link: false
more_link_text: ''
more_link_path: ''
strip_tags: false
trim: false
preserve_tags: ''
html: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: false
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_empty: false
empty_zero: false
hide_alter_empty: true
click_sort_column: value
type: string
settings:
link_to_entity: false
group_column: value
group_columns: { }
group_rows: true
delta_limit: 0
delta_offset: 0
delta_reversed: false
delta_first_last: false
multi_type: separator
separator: ', '
field_api_classes: false
pager:
type: mini
options:
offset: 0
pagination_heading_level: h4
items_per_page: 10
total_pages: null
id: 0
tags:
next: ››
previous: ‹‹
expose:
items_per_page: false
items_per_page_label: 'Items per page'
items_per_page_options: '5, 10, 25, 50'
items_per_page_options_all: false
items_per_page_options_all_label: '- All -'
offset: false
offset_label: Offset
exposed_form:
type: basic
options:
submit_button: Apply
reset_button: false
reset_button_label: Reset
exposed_sorts_label: 'Sort by'
expose_sort_order: true
sort_asc_label: Asc
sort_desc_label: Desc
access:
type: none
options: { }
cache:
type: tag
options: { }
empty: { }
sorts: { }
arguments: { }
filters:
status:
id: status
table: node_field_data
field: status
entity_type: node
entity_field: status
plugin_id: boolean
value: '1'
group: 1
expose:
operator: ''
type:
id: type
table: node_field_data
field: type
entity_type: node
entity_field: type
plugin_id: bundle
value:
page: page
style:
type: default
options:
grouping: { }
row_class: ''
default_row_class: true
row:
type: fields
options:
default_field_elements: true
inline: { }
separator: ''
hide_empty: false
query:
type: views_query
options:
query_comment: ''
disable_sql_rewrite: false
distinct: false
replica: false
query_tags: { }
relationships: { }
header: { }
footer: { }
display_extenders: { }
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url.query_args
- 'user.node_grants:view'
tags: { }
page_1:
id: page_1
display_title: Page
display_plugin: page
position: 1
display_options:
title: 'custom view title'
fields:
title:
id: title
table: node_field_data
field: title
relationship: none
group_type: group
admin_label: ''
entity_type: node
entity_field: title
plugin_id: field
label: ''
exclude: false
alter:
alter_text: false
text: ''
make_link: false
path: ''
absolute: false
external: false
replace_spaces: false
path_case: none
trim_whitespace: false
alt: ''
rel: ''
link_class: ''
prefix: ''
suffix: ''
target: ''
nl2br: false
max_length: 0
word_boundary: false
ellipsis: false
more_link: false
more_link_text: ''
more_link_path: ''
strip_tags: false
trim: false
preserve_tags: ''
html: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: false
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_empty: false
empty_zero: false
hide_alter_empty: true
click_sort_column: value
type: ui_patterns_component_per_item
settings:
ui_patterns: {}
group_column: value
group_columns: { }
group_rows: true
delta_limit: 0
delta_offset: 0
delta_reversed: false
delta_first_last: false
multi_type: separator
separator: ', '
field_api_classes: false
defaults:
title: false
style: true
row: true
fields: false
display_extenders: { }
path: test
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url.query_args
- 'user.node_grants:view'
tags: { }
uuid: afbf5442-7d05-4ee8-a3cd-a84a1f8370fa
langcode: en
status: true
dependencies:
config:
- node.type.page
module:
- node
- ui_patterns
- ui_patterns_views
id: test
label: test
module: views
description: ''
tag: ''
base_table: node_field_data
base_field: nid
display:
default:
id: default
display_title: Default
display_plugin: default
position: 0
display_options:
fields:
title:
id: title
table: node_field_data
field: title
relationship: none
group_type: group
admin_label: ''
entity_type: node
entity_field: title
plugin_id: field
label: ''
exclude: false
alter:
alter_text: false
text: ''
make_link: false
path: ''
absolute: false
external: false
replace_spaces: false
path_case: none
trim_whitespace: false
alt: ''
rel: ''
link_class: ''
prefix: ''
suffix: ''
target: ''
nl2br: false
max_length: 0
word_boundary: false
ellipsis: false
more_link: false
more_link_text: ''
more_link_path: ''
strip_tags: false
trim: false
preserve_tags: ''
html: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: false
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_empty: false
empty_zero: false
hide_alter_empty: true
click_sort_column: value
type: string
settings:
link_to_entity: false
group_column: value
group_columns: { }
group_rows: true
delta_limit: 0
delta_offset: 0
delta_reversed: false
delta_first_last: false
multi_type: separator
separator: ', '
field_api_classes: false
pager:
type: mini
options:
offset: 0
pagination_heading_level: h4
items_per_page: 10
total_pages: null
id: 0
tags:
next: ››
previous: ‹‹
expose:
items_per_page: false
items_per_page_label: 'Items per page'
items_per_page_options: '5, 10, 25, 50'
items_per_page_options_all: false
items_per_page_options_all_label: '- All -'
offset: false
offset_label: Offset
exposed_form:
type: basic
options:
submit_button: Apply
reset_button: false
reset_button_label: Reset
exposed_sorts_label: 'Sort by'
expose_sort_order: true
sort_asc_label: Asc
sort_desc_label: Desc
access:
type: none
options: { }
cache:
type: tag
options: { }
empty: { }
sorts: { }
arguments: { }
filters:
status:
id: status
table: node_field_data
field: status
entity_type: node
entity_field: status
plugin_id: boolean
value: '1'
group: 1
expose:
operator: ''
type:
id: type
table: node_field_data
field: type
entity_type: node
entity_field: type
plugin_id: bundle
value:
page: page
style:
type: default
options:
grouping: { }
row_class: ''
default_row_class: true
row:
type: fields
options:
default_field_elements: true
inline: { }
separator: ''
hide_empty: false
query:
type: views_query
options:
query_comment: ''
disable_sql_rewrite: false
distinct: false
replica: false
query_tags: { }
relationships: { }
header: { }
footer: { }
display_extenders: { }
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url.query_args
- 'user.node_grants:view'
tags: { }
page_1:
id: page_1
display_title: Page
display_plugin: page
position: 1
display_options:
title: "custom view title"
style:
type: default
options:
grouping: { }
row_class: ''
default_row_class: true
row:
type: ui_patterns
options:
hide_empty: 0
ui_patterns: {}
defaults:
title: false
style: false
row: false
display_extenders: { }
path: test
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url.query_args
- 'user.node_grants:view'
tags: { }
uuid: afbf5442-7d05-4ee8-a3cd-a84a1f8370fa
langcode: en
status: true
dependencies:
config:
- node.type.page
module:
- node
- ui_patterns
- ui_patterns_views
id: test
label: test
module: views
description: ''
tag: ''
base_table: node_field_data
base_field: nid
display:
default:
id: default
display_title: Default
display_plugin: default
position: 0
display_options:
fields:
title:
id: title
table: node_field_data
field: title
relationship: none
group_type: group
admin_label: ''
entity_type: node
entity_field: title
plugin_id: field
label: ''
exclude: false
alter:
alter_text: false
text: ''
make_link: false
path: ''
absolute: false
external: false
replace_spaces: false
path_case: none
trim_whitespace: false
alt: ''
rel: ''
link_class: ''
prefix: ''
suffix: ''
target: ''
nl2br: false
max_length: 0
word_boundary: false
ellipsis: false
more_link: false
more_link_text: ''
more_link_path: ''
strip_tags: false
trim: false
preserve_tags: ''
html: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: false
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_empty: false
empty_zero: false
hide_alter_empty: true
click_sort_column: value
type: string
settings:
link_to_entity: false
group_column: value
group_columns: { }
group_rows: true
delta_limit: 0
delta_offset: 0
delta_reversed: false
delta_first_last: false
multi_type: separator
separator: ', '
field_api_classes: false
pager:
type: mini
options:
offset: 0
pagination_heading_level: h4
items_per_page: 10
total_pages: null
id: 0
tags:
next: ››
previous: ‹‹
expose:
items_per_page: false
items_per_page_label: 'Items per page'
items_per_page_options: '5, 10, 25, 50'
items_per_page_options_all: false
items_per_page_options_all_label: '- All -'
offset: false
offset_label: Offset
exposed_form:
type: basic
options:
submit_button: Apply
reset_button: false
reset_button_label: Reset
exposed_sorts_label: 'Sort by'
expose_sort_order: true
sort_asc_label: Asc
sort_desc_label: Desc
access:
type: none
options: { }
cache:
type: tag
options: { }
empty: { }
sorts: { }
arguments: { }
filters:
status:
id: status
table: node_field_data
field: status
entity_type: node
entity_field: status
plugin_id: boolean
value: '1'
group: 1
expose:
operator: ''
type:
id: type
table: node_field_data
field: type
entity_type: node
entity_field: type
plugin_id: bundle
value:
page: page
style:
type: default
options:
grouping: { }
row_class: ''
default_row_class: true
row:
type: fields
options:
default_field_elements: true
inline: { }
separator: ''
hide_empty: false
query:
type: views_query
options:
query_comment: ''
disable_sql_rewrite: false
distinct: false
replica: false
query_tags: { }
relationships: { }
header: { }
footer: { }
display_extenders: { }
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url.query_args
- 'user.node_grants:view'
tags: { }
page_1:
id: page_1
display_title: Page
display_plugin: page
position: 1
display_options:
title: "custom view title"
style:
type: ui_patterns
options:
ui_patterns:
ui_patterns: {}
row:
type: fields
options:
default_field_elements: true
inline: { }
separator: ''
hide_empty: false
defaults:
title: false
style: false
row: false
display_extenders: { }
path: test
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url.query_args
- 'user.node_grants:view'
tags: { }
uuid: afbf5442-7d05-4ee8-a3cd-a84a1f8370fa
langcode: en
status: true
dependencies:
config:
- node.type.page
module:
- node
id: test
label: test
module: views
description: ''
tag: ''
base_table: node_field_data
base_field: nid
display:
default:
id: default
display_title: Default
display_plugin: default
position: 0
display_options:
fields:
title:
id: title
table: node_field_data
field: title
relationship: none
group_type: group
admin_label: ''
entity_type: node
entity_field: title
plugin_id: field
label: ''
exclude: false
alter:
alter_text: false
text: ''
make_link: false
path: ''
absolute: false
external: false
replace_spaces: false
path_case: none
trim_whitespace: false
alt: ''
rel: ''
link_class: ''
prefix: ''
suffix: ''
target: ''
nl2br: false
max_length: 0
word_boundary: false
ellipsis: false
more_link: false
more_link_text: ''
more_link_path: ''
strip_tags: false
trim: false
preserve_tags: ''
html: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: false
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_empty: false
empty_zero: false
hide_alter_empty: true
click_sort_column: value
type: string
settings:
link_to_entity: false
group_column: value
group_columns: { }
group_rows: true
delta_limit: 0
delta_offset: 0
delta_reversed: false
delta_first_last: false
multi_type: separator
separator: ', '
field_api_classes: false
pager:
type: mini
options:
offset: 0
pagination_heading_level: h4
items_per_page: 10
total_pages: null
id: 0
tags:
next: ››
previous: ‹‹
expose:
items_per_page: false
items_per_page_label: 'Items per page'
items_per_page_options: '5, 10, 25, 50'
items_per_page_options_all: false
items_per_page_options_all_label: '- All -'
offset: false
offset_label: Offset
exposed_form:
type: basic
options:
submit_button: Apply
reset_button: false
reset_button_label: Reset
exposed_sorts_label: 'Sort by'
expose_sort_order: true
sort_asc_label: Asc
sort_desc_label: Desc
access:
type: none
options: { }
cache:
type: tag
options: { }
empty: { }
sorts: { }
arguments: { }
filters:
status:
id: status
table: node_field_data
field: status
entity_type: node
entity_field: status
plugin_id: boolean
value: '1'
group: 1
expose:
operator: ''
type:
id: type
table: node_field_data
field: type
entity_type: node
entity_field: type
plugin_id: bundle
value:
page: page
style:
type: default
options:
grouping: { }
row_class: ''
default_row_class: true
row:
type: fields
options:
default_field_elements: true
inline: { }
separator: ''
hide_empty: false
query:
type: views_query
options:
query_comment: ''
disable_sql_rewrite: false
distinct: false
replica: false
query_tags: { }
relationships: { }
header: { }
footer: { }
display_extenders: { }
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url.query_args
- 'user.node_grants:view'
tags: { }
page_1:
id: page_1
display_title: Page
display_plugin: page
position: 1
display_options:
defaults:
style: true
row: true
display_extenders: { }
path: test
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url.query_args
- 'user.node_grants:view'
tags: { }
......@@ -34,6 +34,13 @@ abstract class UiPatternsFunctionalTestBase extends BrowserTestBase {
'field_ui',
];
/**
* The user.
*
* @var \Drupal\user\Entity\User|false
*/
protected mixed $user = FALSE;
/**
* Config is initialized.
*/
......@@ -44,13 +51,11 @@ abstract class UiPatternsFunctionalTestBase extends BrowserTestBase {
*/
protected function setUp(): void {
parent::setUp();
$user = $this->drupalCreateUser([
'configure any layout',
$this->user = $this->drupalCreateUser([
'administer node display',
], NULL, TRUE);
if ($user) {
$this->drupalLogin($user);
if ($this->user) {
$this->drupalLogin($this->user);
}
}
......
......@@ -138,7 +138,7 @@ trait RunSourcePluginTestTrait {
foreach ($component_configuration[$prop_or_slot] as $prop_or_slot_id => $prop_or_slot_configuration) {
if (isset($expected_outputs[$prop_or_slot][$prop_or_slot_id])) {
// For slots, there is a table of sources for each slot.
$source_to_tests = ($prop_or_slot === "props") ? [$prop_or_slot_configuration] : $prop_or_slot_configuration;
$source_to_tests = ($prop_or_slot === "props") ? [$prop_or_slot_configuration] : $prop_or_slot_configuration["sources"];
$expected_outputs_here = ($prop_or_slot === "props") ? [$expected_outputs[$prop_or_slot][$prop_or_slot_id]] : $expected_outputs[$prop_or_slot][$prop_or_slot_id];
foreach ($source_to_tests as $index => $source_to_test) {
if (!isset($source_to_test["source_id"])) {
......
......@@ -11,6 +11,33 @@ use Drupal\Component\Serialization\Yaml;
*/
trait TestDataTrait {
/**
* Assert session object with the configuration from the test set.
*
* @param array $assert_session_expectations
* The expected actions to run on the session object.
*/
protected function assertSessionObject(array $assert_session_expectations): void {
if (method_exists($this, 'assertSession')) {
$assert_session = $this->assertSession();
foreach ($assert_session_expectations as $method => $list_of_method_arguments) {
if (!method_exists($assert_session, $method)) {
throw new \RuntimeException(sprintf('Method "%s" not found in assert session object.', $method));
}
foreach ($list_of_method_arguments as $method_arguments) {
if (is_array($method_arguments)) {
// @phpstan-ignore-next-line
call_user_func_array([$assert_session, $method], $method_arguments);
}
else {
// @phpstan-ignore-next-line
call_user_func_array([$assert_session, $method], [$method_arguments]);
}
}
}
}
}
/**
* Assert an expected output with the configuration from the test set.
*
......
......@@ -17,10 +17,11 @@ textfield_slot:
component_id: ui_patterns_test:test-component
slots:
slot:
-
source_id: textfield
source:
value: 'test input'
sources:
-
source_id: textfield
source:
value: 'test input'
entity: {}
output:
slots:
......@@ -46,8 +47,9 @@ field_property_default:
component_id: ui_patterns_test:test-component
slots:
slot:
-
source_id: field_property:node:field_text_1:value
sources:
-
source_id: field_property:node:field_text_1:value
entity:
field_text_1:
value: 'value_text_1'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment