Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
D
drupal
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Custom Issue Tracker
Custom Issue Tracker
Labels
Merge Requests
300
Merge Requests
300
Requirements
Requirements
List
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Analytics
Analytics
Code Review
Insights
Issue
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
project
drupal
Commits
2a43f31f
Commit
2a43f31f
authored
Aug 29, 2016
by
catch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue
#2779807
by jhedstrom: Bring RestExport::buildResponse into line with Feed::buildResponse
parent
4221911a
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
97 additions
and
2 deletions
+97
-2
core/modules/rest/src/Plugin/views/display/RestExport.php
core/modules/rest/src/Plugin/views/display/RestExport.php
+7
-2
core/modules/rest/tests/modules/rest_test_views/rest_test_views.module
...rest/tests/modules/rest_test_views/rest_test_views.module
+21
-0
core/modules/rest/tests/src/Kernel/Views/RestExportTest.php
core/modules/rest/tests/src/Kernel/Views/RestExportTest.php
+69
-0
No files found.
core/modules/rest/src/Plugin/views/display/RestExport.php
View file @
2a43f31f
...
...
@@ -353,12 +353,17 @@ public function collectRoutes(RouteCollection $collection) {
public
static
function
buildResponse
(
$view_id
,
$display_id
,
array
$args
=
[])
{
$build
=
static
::
buildBasicRenderable
(
$view_id
,
$display_id
,
$args
);
// Setup an empty response so headers can be added as needed during views
// rendering and processing.
$response
=
new
CacheableResponse
(
''
,
200
);
$build
[
'#response'
]
=
$response
;
/** @var \Drupal\Core\Render\RendererInterface $renderer */
$renderer
=
\
Drupal
::
service
(
'renderer'
);
$output
=
$renderer
->
renderRoot
(
$build
);
$output
=
(
string
)
$renderer
->
renderRoot
(
$build
);
$response
=
new
CacheableResponse
(
$output
,
200
);
$response
->
setContent
(
$output
);
$cache_metadata
=
CacheableMetadata
::
createFromRenderArray
(
$build
);
$response
->
addCacheableDependency
(
$cache_metadata
);
...
...
core/modules/rest/tests/modules/rest_test_views/rest_test_views.module
0 → 100644
View file @
2a43f31f
<?php
/**
* @file
* Test hook implementations for the REST views test module.
*/
use
Drupal\views\ViewExecutable
;
/**
* Implements hook_views_post_execute().
*/
function
rest_test_views_views_post_execute
(
ViewExecutable
$view
)
{
// Attach a custom header to the test_data_export view.
if
(
$view
->
id
()
===
'test_serializer_display_entity'
)
{
if
(
$value
=
\
Drupal
::
state
()
->
get
(
'rest_test_views_set_header'
,
FALSE
))
{
$view
->
getResponse
()
->
headers
->
set
(
'Custom-Header'
,
$value
);
}
}
}
core/modules/rest/tests/src/Kernel/Views/RestExportTest.php
0 → 100644
View file @
2a43f31f
<?php
namespace
Drupal\Tests\rest\Kernel\Views
;
use
Drupal\rest\Plugin\views\display\RestExport
;
use
Drupal\Tests\views\Kernel\ViewsKernelTestBase
;
use
Drupal\views\Entity\View
;
use
Drupal\views\Tests\ViewTestData
;
/**
* Tests the REST export view display plugin.
*
* @coversDefaultClass \Drupal\rest\Plugin\views\display\RestExport
*
* @group rest
*/
class
RestExportTest
extends
ViewsKernelTestBase
{
/**
* {@inheritdoc}
*/
public
static
$testViews
=
[
'test_serializer_display_entity'
];
/**
* {@inheritdoc}
*/
public
static
$modules
=
[
'rest_test_views'
,
'serialization'
,
'rest'
,
'entity_test'
];
/**
* {@inheritdoc}
*/
protected
function
setUp
(
$import_test_views
=
TRUE
)
{
parent
::
setUp
(
$import_test_views
);
ViewTestData
::
createTestViews
(
get_class
(
$this
),
[
'rest_test_views'
]);
$this
->
installEntitySchema
(
'entity_test'
);
}
/**
* @covers ::buildResponse
*/
public
function
testBuildResponse
()
{
/** @var \Drupal\views\Entity\View $view */
$view
=
View
::
load
(
'test_serializer_display_entity'
);
$display
=
&
$view
->
getDisplay
(
'rest_export_1'
);
$display
[
'display_options'
][
'defaults'
][
'style'
]
=
FALSE
;
$display
[
'display_options'
][
'style'
][
'type'
]
=
'serializer'
;
$display
[
'display_options'
][
'style'
][
'options'
][
'formats'
]
=
[
'json'
,
'xml'
];
$view
->
save
();
// No custom header should be set yet.
$response
=
RestExport
::
buildResponse
(
'test_serializer_display_entity'
,
'rest_export_1'
,
[]);
$this
->
assertFalse
(
$response
->
headers
->
get
(
'Custom-Header'
));
// Clear render cache.
/** @var \Drupal\Core\Cache\MemoryBackend $render_cache */
$render_cache
=
$this
->
container
->
get
(
'cache_factory'
)
->
get
(
'render'
);
$render_cache
->
deleteAll
();
// A custom header should now be added.
// @see rest_test_views_views_post_execute()
$header
=
$this
->
randomString
();
$this
->
container
->
get
(
'state'
)
->
set
(
'rest_test_views_set_header'
,
$header
);
$response
=
RestExport
::
buildResponse
(
'test_serializer_display_entity'
,
'rest_export_1'
,
[]);
$this
->
assertEquals
(
$header
,
$response
->
headers
->
get
(
'Custom-Header'
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment