Update to drupal 8.0.0-rc1. For more information, see https://www.drupal.org/node/2582663

This commit is contained in:
Greg Anderson 2015-10-08 11:40:12 -07:00
parent eb34d130a8
commit f32e58e4b1
8476 changed files with 211648 additions and 170042 deletions

View file

@ -0,0 +1,11 @@
<?php
$connection = Drupal\Core\Database\Database::getConnection();
$connection->insert('config')
->fields(array(
'collection' => '',
'name' => 'views.view.test_token_view',
'data' => serialize(\Drupal\Component\Serialization\Yaml::decode(file_get_contents('core/modules/views/tests/modules/views_test_config/test_views/views.view.test_token_view.yml'))),
))
->execute();

View file

@ -61,10 +61,10 @@ display:
offset: false
offset_label: Offset
tags:
previous: ' previous'
next: 'next '
first: first'
last: 'last »'
previous: ' Previous'
next: 'Next '
first: First'
last: 'Last »'
quantity: 9
style:
type: default
@ -174,7 +174,7 @@ display:
cache_metadata:
contexts:
- language
cacheable: false
max-age: 0
page_1:
display_plugin: page
id: page_1
@ -186,4 +186,4 @@ display:
cache_metadata:
contexts:
- language
cacheable: false
max-age: 0

View file

@ -68,10 +68,10 @@ display:
offset: false
offset_label: Offset
tags:
previous: ' previous'
next: 'next '
first: first'
last: 'last »'
previous: ' Previous'
next: 'Next '
first: First'
last: 'Last »'
quantity: 9
style:
type: default

View file

@ -0,0 +1,213 @@
langcode: en
status: true
dependencies:
module:
- node
- taxonomy
- user
id: test_argument_validator_term
label: test_argument_validator_term
module: views
description: ''
tag: ''
base_table: node_field_data
base_field: nid
core: 8.x
display:
default:
display_plugin: default
id: default
display_title: Master
position: 0
display_options:
access:
type: perm
options:
perm: 'access content'
cache:
type: none
options: { }
query:
type: views_query
options:
disable_sql_rewrite: false
distinct: false
replica: false
query_comment: ''
query_tags: { }
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
pager:
type: full
options:
items_per_page: 10
offset: 0
id: 0
total_pages: null
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
tags:
previous: ' Previous'
next: 'Next '
first: '« First'
last: 'Last »'
quantity: 9
style:
type: default
options:
grouping: { }
row_class: ''
default_row_class: true
uses_fields: false
row:
type: fields
options:
inline: { }
separator: ''
hide_empty: false
default_field_elements: true
fields:
title:
id: title
table: node_field_data
field: title
entity_type: node
entity_field: title
label: ''
alter:
alter_text: false
make_link: false
absolute: false
trim: false
word_boundary: false
ellipsis: false
strip_tags: false
html: false
hide_empty: false
empty_zero: false
settings:
link_to_entity: true
plugin_id: field
relationship: none
group_type: group
admin_label: ''
exclude: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: true
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_alter_empty: true
click_sort_column: value
type: string
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
filters:
status:
value: true
table: node_field_data
field: status
plugin_id: boolean
entity_type: node
entity_field: status
id: status
expose:
operator: ''
group: 1
sorts:
created:
id: created
table: node_field_data
field: created
order: DESC
entity_type: node
entity_field: created
plugin_id: date
relationship: none
group_type: group
admin_label: ''
exposed: false
expose:
label: ''
granularity: second
header: { }
footer: { }
empty: { }
relationships: { }
arguments:
tid:
id: tid
table: taxonomy_index
field: tid
relationship: none
group_type: group
admin_label: ''
default_action: ignore
exception:
value: all
title_enable: false
title: All
title_enable: true
title: '{{ arguments.tid }}'
default_argument_type: fixed
default_argument_options:
argument: ''
default_argument_skip_url: false
summary_options:
base_path: ''
count: true
items_per_page: 25
override: false
summary:
sort_order: asc
number_of_records: 0
format: default_summary
specify_validation: true
validate:
type: 'entity:taxonomy_term'
fail: 'access denied'
validate_options:
operation: view
multiple: 1
bundles: { }
access: false
break_phrase: false
add_table: false
require_value: false
reduce_duplicates: false
plugin_id: taxonomy_index_tid
display_extenders: { }
cache_metadata:
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url
- 'url.query_args.pagers:0'
- 'user.node_grants:view'
cacheable: false

View file

@ -62,10 +62,10 @@ display:
offset: false
offset_label: Offset
tags:
previous: ' previous'
next: 'next '
first: first'
last: 'last »'
previous: ' Previous'
next: 'Next '
first: First'
last: 'Last »'
quantity: 9
style:
type: default

View file

@ -67,7 +67,7 @@ display:
path: test_attachment_ui_feed
page_1:
display_plugin: page
display_title: Page
display_title: <em>Page</em>
display_options:
path: test_attachment_ui
id: page_1

View file

@ -62,10 +62,10 @@ display:
offset: false
offset_label: Offset
tags:
previous: ' previous'
next: 'next '
first: first'
last: 'last »'
previous: ' Previous'
next: 'Next '
first: First'
last: 'Last »'
quantity: 9
style:
type: default

View file

@ -123,6 +123,6 @@ display:
display_options:
path: test-feed-display
display_plugin: page
display_title: Page
display_title: <em>Page</em>
id: page
position: 0

View file

@ -31,7 +31,7 @@ display:
field: entity_entity_test
id: entity_entity_test
table: views
target: '!1'
target: '{{ raw_arguments.id }}'
view_mode: full
plugin_id: entity
entity_block:

View file

@ -2,13 +2,13 @@ langcode: en
status: true
dependencies:
module:
- entity_test
- node
id: test_entity_operations
label: test_entity_operations
module: views
description: ''
tag: ''
base_table: entity_test
base_table: node_field_data
base_field: id
core: 8.x
display:
@ -35,60 +35,29 @@ display:
row:
type: fields
fields:
name:
id: name
table: entity_test
field: name
relationship: none
group_type: group
admin_label: ''
label: ''
title:
id: title
table: node_field_data
field: title
label: Title
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: true
ellipsis: true
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
entity_type: entity_test
entity_field: name
entity_type: node
entity_field: title
type: string
settings:
link_to_entity: true
plugin_id: field
operations:
id: operations
table: entity_test
table: node
field: operations
relationship: none
group_type: group

View file

@ -58,10 +58,10 @@ display:
offset: false
offset_label: Offset
tags:
previous: ' previous'
next: 'next '
first: first'
last: 'last »'
previous: ' Previous'
next: 'Next '
first: First'
last: 'Last »'
quantity: 9
style:
type: default
@ -323,4 +323,4 @@ display:
- entity_test_view_grants
- 'languages:language_content'
- 'languages:language_interface'
cacheable: false
max-age: 0

View file

@ -61,10 +61,10 @@ display:
offset: false
offset_label: Offset
tags:
previous: ' previous'
next: 'next '
first: first'
last: 'last »'
previous: ' Previous'
next: 'Next '
first: First'
last: 'Last »'
quantity: 9
style:
type: default

View file

@ -174,7 +174,7 @@ display:
- 'languages:language_interface'
- url
- 'user.node_grants:view'
cacheable: false
max-age: 0
feed_1:
display_plugin: feed
id: feed_1
@ -198,7 +198,7 @@ display:
- 'languages:language_interface'
- url
- 'user.node_grants:view'
cacheable: false
max-age: 0
page_1:
display_plugin: page
id: page_1
@ -213,4 +213,4 @@ display:
- 'languages:language_interface'
- url
- 'user.node_grants:view'
cacheable: false
max-age: 0

View file

@ -0,0 +1,59 @@
langcode: en
status: true
dependencies: { }
id: test_field_argument_tokens
label: null
module: views
description: ''
tag: ''
base_table: views_test_data
base_field: id
core: '8'
display:
default:
display_options:
access:
type: none
cache:
type: tag
exposed_form:
type: basic
pager:
type: full
query:
type: views_query
fields:
name:
id: name
table: views_test_data
field: name
plugin_id: string
name_1:
id: name_1
table: views_test_data
field: name
plugin_id: string
name_2:
id: name_2
table: views_test_data
field: name
plugin_id: string
job:
id: job
table: views_test_data
field: job
plugin_id: string
arguments:
'null':
id: 'null'
table: views
field: 'null'
plugin_id: 'null'
style:
type: default
row:
type: fields
display_plugin: default
display_title: Defaults
id: default
position: 0

View file

@ -137,4 +137,4 @@ display:
contexts:
- 'languages:language_content'
- 'languages:language_interface'
cacheable: false
max-age: 0

View file

@ -58,6 +58,45 @@ display:
plugin_id: field
relationship: user_id
alter: {}
created:
id: created
table: users_field_data
field: created
relationship: user_id
type: timestamp
settings:
date_format: custom
custom_date_format: 'Y'
timezone: ''
entity_type: user
entity_field: created
plugin_id: field
created_1:
id: created_1
table: users_field_data
field: created
relationship: user_id
type: timestamp
settings:
date_format: custom
custom_date_format: 'H:i:s'
timezone: ''
entity_type: user
entity_field: created
plugin_id: field
created_2:
id: created_2
table: users_field_data
field: created
relationship: user_id
type: timestamp
settings:
date_format: fallback
custom_date_format: ''
timezone: ''
entity_type: user
entity_field: created
plugin_id: field
relationships:
user_id:
table: entity_test

View file

@ -0,0 +1,38 @@
langcode: en
status: true
dependencies: { }
id: test_menu_link
label: ''
module: views
description: ''
tag: ''
base_table: views_test_data
base_field: nid
core: '8'
display:
default:
display_options:
defaults:
fields: false
pager: false
sorts: false
fields:
age:
field: age
id: age
relationship: none
table: views_test_data
plugin_id: numeric
display_plugin: default
display_title: Master
id: default
position: 0
page_1:
display_plugin: page
display_title: 'Test page view'
id: page_1
position: 1
display_options:
display_extenders: { }
path: test-menu-link

View file

@ -60,10 +60,10 @@ display:
offset: false
offset_label: Offset
tags:
previous: ' previous'
next: 'next '
first: first'
last: 'last »'
previous: ' Previous'
next: 'Next '
first: First'
last: 'Last »'
quantity: 9
style:
type: table
@ -500,4 +500,4 @@ display:
- 'languages:language_content'
- 'languages:language_interface'
- 'user.node_grants:view'
cacheable: false
max-age: 0

View file

@ -295,7 +295,7 @@ display:
page:
display_plugin: page
id: page_1
display_title: Page
display_title: <em>Page</em>
position: 1
display_options:
path: test-opml-style

View file

@ -0,0 +1,349 @@
langcode: en
status: true
dependencies:
module:
- node
- user
id: test_token_view
label: test_token_view
module: views
description: ''
tag: ''
base_table: node_field_data
base_field: nid
core: 8.x
display:
default:
display_plugin: default
id: default
display_title: Master
position: 0
display_options:
access:
type: perm
options:
perm: 'access content'
cache:
type: tag
options: { }
query:
type: views_query
options:
disable_sql_rewrite: false
distinct: false
replica: false
query_comment: ''
query_tags: { }
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
pager:
type: full
options:
items_per_page: 10
offset: 0
id: 0
total_pages: null
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
tags:
previous: ' Previous'
next: 'Next '
first: '« First'
last: 'Last »'
quantity: 9
style:
type: grid
options:
grouping: { }
columns: 4
automatic_width: true
alignment: horizontal
col_class_default: true
col_class_custom: '%1-test-class-!1'
row_class_default: true
row_class_custom: '%1-test-class-!1'
row:
type: fields
options:
default_field_elements: true
inline: { }
separator: ''
hide_empty: false
fields:
title:
id: title
table: node_field_data
field: title
relationship: none
group_type: group
admin_label: ''
label: ''
exclude: false
alter:
alter_text: true
text: '%1-custom-text-!1'
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: true
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
entity_type: node
entity_field: title
plugin_id: field
filters:
status:
value: true
table: node_field_data
field: status
plugin_id: boolean
entity_type: node
entity_field: status
id: status
expose:
operator: ''
group: 1
sorts:
created:
id: created
table: node_field_data
field: created
order: DESC
entity_type: node
entity_field: created
plugin_id: date
relationship: none
group_type: group
admin_label: ''
exposed: false
expose:
label: ''
granularity: second
title: 'test_token_view %1 !1'
header:
area_text_custom:
id: area_text_custom
table: views
field: area_text_custom
relationship: none
group_type: group
admin_label: ''
empty: false
tokenize: false
content: '%1-custom-!1'
plugin_id: text_custom
footer:
area:
id: area
table: views
field: area
relationship: none
group_type: group
admin_label: ''
empty: false
tokenize: false
content:
value: '%1-text-!1'
format: basic_html
plugin_id: text
empty:
result:
id: result
table: views
field: result
relationship: none
group_type: group
admin_label: ''
empty: true
content: "Displaying @start - @end of @total\n\n%1-result-!1"
plugin_id: result
title:
id: title
table: views
field: title
relationship: none
group_type: group
admin_label: ''
empty: true
title: '%1-title-!1'
plugin_id: title
entity_node:
id: entity
table: views
field: entity_node
relationship: none
group_type: group
admin_label: ''
empty: true
target: '%1-entity-!1'
plugin_id: entity
relationships: { }
arguments:
nid:
id: nid
table: node_field_data
field: nid
relationship: none
group_type: group
admin_label: ''
default_action: ignore
exception:
value: all
title_enable: true
title: '%1 exception-title !1'
title_enable: true
title: '%1 title !1'
default_argument_type: fixed
default_argument_options:
argument: ''
default_argument_skip_url: false
summary_options:
base_path: ''
count: true
items_per_page: 25
override: false
summary:
sort_order: asc
number_of_records: 0
format: default_summary
specify_validation: false
validate:
type: none
fail: 'not found'
validate_options: { }
break_phrase: false
not: false
entity_type: node
entity_field: nid
plugin_id: numeric
display_extenders: { }
css_class: ''
use_more: true
use_more_always: true
use_more_text: '%1-more-text-!1'
link_url: '%1-custom-url-!1'
link_display: custom_url
cache_metadata:
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url
- url.query_args
- 'user.node_grants:view'
- user.permissions
cacheable: false
block_1:
display_plugin: block
id: block_1
display_title: Block
position: 2
display_options:
display_extenders: { }
cache_metadata:
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url
- url.query_args
- 'user.node_grants:view'
- user.permissions
cacheable: false
page_1:
display_plugin: page
id: page_1
display_title: Page
position: 1
display_options:
display_extenders: { }
path: test-token-view
cache_metadata:
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url
- url.query_args
- 'user.node_grants:view'
- user.permissions
cacheable: false
feed_1:
display_plugin: feed
id: feed_1
display_title: Feed
position: 1
display_options:
defaults:
style: false
display_extenders: { }
style:
type: rss
options:
description: '%1-description-!1'
path: test-token-view.xml
cache_metadata:
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url
- url.query_args
- 'user.node_grants:view'
- user.permissions
cacheable: false

View file

@ -27,4 +27,21 @@ class ArgumentValidatorTest extends ArgumentValidatorPluginBase {
];
}
/**
* {@inheritdoc}
*/
protected function defineOptions() {
$options = parent::defineOptions();
$options['test_value'] = ['default' => ''];
return $options;
}
/**
* {@inheritdoc}
*/
public function validateArgument($arg) {
return $arg == $this->options['test_value'];
}
}

View file

@ -35,7 +35,7 @@ class DisplayTest extends DisplayPluginBase {
/**
* Overrides \Drupal\views\Plugin\views\display\DisplayPluginBase::getType().
*/
protected function getType() {
public function getType() {
return 'test';
}

View file

@ -46,7 +46,7 @@ class FieldTest extends FieldPluginBase {
* Overrides Drupal\views\Plugin\views\field\FieldPluginBase::addSelfTokens().
*/
protected function addSelfTokens(&$tokens, $item) {
$tokens['[test__token]'] = $this->getTestValue();
$tokens['{{ test_token }}'] = $this->getTestValue();
}
/**

View file

@ -110,3 +110,17 @@ function template_preprocess_views_view_mapping_test(&$variables) {
}
}
}
/**
* Test pre_render function.
*
* @param array $element
* A render array
*
* @return array
* The changed render array.
*/
function views_test_data_test_pre_render_function($element) {
$element['#markup'] = 'views_test_data_test_pre_render_function executed';
return $element;
}

View file

@ -28,8 +28,8 @@ class AttachmentTestFormatter extends NumericUnformattedFormatter {
/**
* {@inheritdoc}
*/
public function viewElements(FieldItemListInterface $items) {
$elements = parent::viewElements($items);
public function viewElements(FieldItemListInterface $items, $langcode) {
$elements = parent::viewElements($items, $langcode);
// Add dummy attachments.
$entity_id = $items->getEntity()->id();

View file

@ -97,6 +97,7 @@ class ViewAjaxControllerTest extends UnitTestCase {
$this->getMock('\Drupal\Core\Controller\ControllerResolverInterface'),
$this->getMock('\Drupal\Core\Theme\ThemeManagerInterface'),
$element_info_manager,
$this->getMock('\Drupal\Core\Render\PlaceholderGeneratorInterface'),
$this->getMock('\Drupal\Core\Render\RenderCacheInterface'),
$request_stack,
[

View file

@ -485,7 +485,7 @@ class EntityViewsDataTest extends UnitTestCase {
$base_field_definitions = $this->setupBaseFields(EntityTestMul::baseFieldDefinitions($this->baseEntityType));
$base_field_definitions['type'] = BaseFieldDefinition::create('entity_reference')
->setLabel('entity test type')
->setSettings(array('target_type' => 'entity_test_bundle'))
->setSetting('target_type', 'entity_test_bundle')
->setTranslatable(TRUE);
$base_field_definitions = $this->setupBaseFields($base_field_definitions);
$user_base_field_definitions = [

View file

@ -64,7 +64,7 @@ class RouteSubscriberTest extends UnitTestCase {
* @covers ::routeRebuildFinished
*/
public function testRouteRebuildFinished() {
list($view, $executable, $display_1, $display_2) = $this->setupMocks();
list($display_1, $display_2) = $this->setupMocks();
$display_1->expects($this->once())
->method('collectRoutes')
@ -95,7 +95,7 @@ class RouteSubscriberTest extends UnitTestCase {
$route_event = new RouteBuildEvent($collection, 'views');
list($view, $executable, $display_1, $display_2) = $this->setupMocks();
list($display_1, $display_2) = $this->setupMocks();
// The page_1 display overrides an existing route, so the dynamicRoutes
// should only call the second display.
@ -139,9 +139,8 @@ class RouteSubscriberTest extends UnitTestCase {
/**
* Sets up mocks of Views objects needed for testing.
*
* @return array
* An array of Views mocks, including the executable, the view entity, and
* two display plugins.
* @return array \Drupal\views\Plugin\views\display\DisplayRouterInterface[]|\PHPUnit_Framework_MockObject_MockObject[]
* An array of two mocked view displays
*/
protected function setupMocks() {
$executable = $this->getMockBuilder('Drupal\views\ViewExecutable')
@ -190,7 +189,7 @@ class RouteSubscriberTest extends UnitTestCase {
$this->routeSubscriber->applicableViews[] = array('test_id', 'page_2');
$this->routeSubscriber->applicableViews[] = array('test_id', 'page_3');
return array($executable, $view, $display_1, $display_2);
return array($display_1, $display_2);
}
}

View file

@ -206,7 +206,8 @@ class ViewsBlockTest extends UnitTestCase {
}
namespace {
// @todo replace views_add_contextual_links()
// @todo https://www.drupal.org/node/2571679 replace
// views_add_contextual_links().
if (!function_exists('views_add_contextual_links')) {
function views_add_contextual_links() {
}

View file

@ -130,10 +130,10 @@ class EntityTest extends UnitTestCase {
*/
public function providerTestTokens() {
return [
['!1', 5],
['%2', 6],
['{{ raw_arguments.test1 }}', 5],
['{{ arguments.test2 }}', 6],
['{{ test_render_token }}', 7],
['[test:global_token]', 8],
['{{ test:global_token }}', 8],
];
}

View file

@ -5,9 +5,12 @@
* Contains \Drupal\Tests\views\Unit\Plugin\field\FieldPluginBaseTest.
*/
namespace Drupal\Tests\views\Unit\Plugin\field;
namespace Drupal\Tests\views\Unit\Plugin\field {
use Drupal\Core\GeneratedUrl;
use Drupal\Core\Language\Language;
use Drupal\Core\Render\RendererInterface;
use Drupal\Core\Render\Markup;
use Drupal\Core\Url;
use Drupal\Core\Utility\LinkGenerator;
use Drupal\Core\Utility\LinkGeneratorInterface;
@ -174,6 +177,22 @@ class FieldPluginBaseTest extends UnitTestCase {
\Drupal::getContainer()->set('unrouted_url_assembler', $this->unroutedUrlAssembler);
$this->linkGenerator = new LinkGenerator($this->urlGenerator, $this->getMock('Drupal\Core\Extension\ModuleHandlerInterface'), $this->renderer);
$this->renderer
->method('render')
->willReturnCallback(
// Pretend to do a render.
function (&$elements, $is_root_call = FALSE) {
// Mock the ability to theme links
$link = $this->linkGenerator->generate($elements['#title'], $elements['#url']);
if (isset($elements['#prefix'])) {
$link = $elements['#prefix'] . $link;
}
if (isset($elements['#suffix'])) {
$link = $link . $elements['#suffix'];
}
return Markup::create($link);
}
);
}
/**
@ -208,6 +227,38 @@ class FieldPluginBaseTest extends UnitTestCase {
$this->assertEquals($expected_result, $result);
}
/**
* Test rendering as a link without a path.
*
* @covers ::renderText
*/
public function testRenderTrimmedWithMoreLink() {
$alter = [
'trim' => TRUE,
'max_length' => 7,
'more_link' => TRUE,
// Don't invoke translation.
'ellipsis' => FALSE,
'more_link_text' => 'more link',
];
$this->display->expects($this->any())
->method('getHandlers')
->willReturnMap([
['argument', []],
['field', []],
]);
$this->setUpUrlIntegrationServices();
$field = $this->setupTestField(['alter' => $alter]);
$field->field_alias = 'key';
$row = new ResultRow(['key' => 'a long value']);
$expected_result = 'a long <a href="/%3Cfront%3E" class="views-more-link">more link</a>';
$result = $field->advancedRender($row);
$this->assertEquals($expected_result, $result);
}
/**
* Test rendering of a link with a path and options.
*
@ -229,7 +280,7 @@ class FieldPluginBaseTest extends UnitTestCase {
$row = new ResultRow(['key' => 'value']);
$result = $field->advancedRender($row);
$this->assertEquals($final_html, $result);
$this->assertEquals($final_html, (string) $result);
}
/**
@ -308,8 +359,8 @@ class FieldPluginBaseTest extends UnitTestCase {
$this->urlGenerator->expects($this->once())
->method('generateFromRoute')
->with($expected_url->getRouteName(), $expected_url->getRouteParameters(), $expected_url_options)
->willReturn($url_path);
->with($expected_url->getRouteName(), $expected_url->getRouteParameters(), $expected_url_options, TRUE)
->willReturn((new GeneratedUrl())->setGeneratedUrl($url_path));
$result = $field->advancedRender($row);
$this->assertEquals($final_html, $result);
@ -449,8 +500,8 @@ class FieldPluginBaseTest extends UnitTestCase {
];
$this->renderer->expects($this->once())
->method('render')
->with($build, FALSE)
->method('renderPlain')
->with($build)
->willReturn('base:test-path/123');
$result = $field->advancedRender($row);
@ -497,6 +548,67 @@ class FieldPluginBaseTest extends UnitTestCase {
return $field;
}
/**
* @covers ::getRenderTokens
*/
public function testGetRenderTokensWithoutFieldsAndArguments() {
$field = $this->setupTestField();
$this->display->expects($this->any())
->method('getHandlers')
->willReturnMap([
['argument', []],
['field', []],
]);
$this->assertEquals([], $field->getRenderTokens([]));
}
/**
* @covers ::getRenderTokens
*/
public function testGetRenderTokensWithoutArguments() {
$field = $this->setupTestField(['id' => 'id']);
$field->last_render = 'last rendered output';
$this->display->expects($this->any())
->method('getHandlers')
->willReturnMap([
['argument', []],
['field', ['id' => $field]],
]);
$this->assertEquals(['{{ id }}' => 'last rendered output'], $field->getRenderTokens([]));
}
/**
* @covers ::getRenderTokens
*/
public function testGetRenderTokensWithArguments() {
$field = $this->setupTestField(['id' => 'id']);
$field->view->args = ['argument value'];
$field->view->build_info['substitutions']['{{ arguments.name }}'] = 'argument value';
$argument = $this->getMockBuilder('\Drupal\views\Plugin\views\argument\ArgumentPluginBase')
->disableOriginalConstructor()
->getMock();
$field->last_render = 'last rendered output';
$this->display->expects($this->any())
->method('getHandlers')
->willReturnMap([
['argument', ['name' => $argument]],
['field', ['id' => $field]],
]);
$expected = [
'{{ id }}' => 'last rendered output',
'{{ arguments.name }}' => 'argument value',
'{{ raw_arguments.name }}' => 'argument value',
];
$this->assertEquals($expected, $field->getRenderTokens([]));
}
}
class FieldPluginBaseTestField extends FieldPluginBase {
@ -506,3 +618,12 @@ class FieldPluginBaseTestField extends FieldPluginBase {
}
}
}
// @todo Remove as part of https://www.drupal.org/node/2529170.
namespace {
if (!function_exists('base_path')) {
function base_path() {
return '/';
}
}
}

View file

@ -24,6 +24,13 @@ class EntityOperationsUnitTest extends UnitTestCase {
*/
protected $entityManager;
/**
* The language manager.
*
* @var \Drupal\Core\Language\LanguageManagerInterface|\PHPUnit_Framework_MockObject_MockObject
*/
protected $languageManager;
/**
* The plugin under test.
*
@ -38,13 +45,14 @@ class EntityOperationsUnitTest extends UnitTestCase {
*/
public function setUp() {
$this->entityManager = $this->getMock('\Drupal\Core\Entity\EntityManagerInterface');
$this->languageManager = $this->getMock('\Drupal\Core\Language\LanguageManagerInterface');
$configuration = array();
$plugin_id = $this->randomMachineName();
$plugin_definition = array(
'title' => $this->randomMachineName(),
);
$this->plugin = new EntityOperations($configuration, $plugin_id, $plugin_definition, $this->entityManager);
$this->plugin = new EntityOperations($configuration, $plugin_id, $plugin_definition, $this->entityManager, $this->languageManager);
$redirect_service = $this->getMock('Drupal\Core\Routing\RedirectDestinationInterface');
$redirect_service->expects($this->any())

View file

@ -5,7 +5,7 @@
* Contains \Drupal\Tests\views\Unit\Routing\ViewPageControllerTest.
*/
namespace Drupal\Tests\views\Unit\Routing;
namespace Drupal\Tests\views\Unit\Routing {
use Drupal\Core\Routing\RouteMatch;
use Drupal\Tests\UnitTestCase;
@ -181,3 +181,14 @@ class ViewPageControllerTest extends UnitTestCase {
}
}
}
namespace {
// @todo https://www.drupal.org/node/2571679 replace
// views_add_contextual_links()
if (!function_exists('views_add_contextual_links')) {
function views_add_contextual_links() {
}
}
}

View file

@ -0,0 +1,11 @@
{#
/**
* @file
* Theme override to display all the fields in a views row.
*
* The reason for this template is to override the theme function provided by
* views to allow tests to run against the twig template.
*/
#}
{% include '@views/views-view-field.html.twig' %}
Use posts instead of twigs to protect your llamas from escaping the field.