Commit 4210a02b authored by alexpott's avatar alexpott

Issue #2417625 by geertvd, yannickoo: "Column not found" when adding file relationship

parent 7ff27245
......@@ -23,7 +23,7 @@ function file_field_views_data(FieldStorageConfigInterface $field_storage) {
'id' => 'standard',
'base' => 'file_managed',
'entity type' => 'file',
'base field' => 'target_id',
'base field' => 'fid',
'label' => t('file from !field_name', array('!field_name' => $field_storage->getName())),
);
}
......
<?php
/**
* @file
* Contains \Drupal\file\Tests\Views\RelationshipUserFileDataTest.
*/
namespace Drupal\file\Tests\Views;
use Drupal\views\Tests\ViewTestBase;
use Drupal\views\Views;
use Drupal\views\Tests\ViewTestData;
/**
* Tests file on user relationship handler.
*
* @group file
*/
class RelationshipUserFileDataTest extends ViewTestBase {
/**
* Modules to install.
*
* @var array
*/
public static $modules = array('file', 'file_test_views', 'user');
/**
* Views used by this test.
*
* @var array
*/
public static $testViews = array('test_file_user_file_data');
protected function setUp() {
parent::setUp();
// Create the user profile field and instance.
entity_create('field_storage_config', array(
'entity_type' => 'user',
'field_name' => 'user_file',
'type' => 'file',
'translatable' => '0',
))->save();
entity_create('field_config', array(
'label' => 'User File',
'description' => '',
'field_name' => 'user_file',
'entity_type' => 'user',
'bundle' => 'user',
'required' => 0,
))->save();
ViewTestData::createTestViews(get_class($this), array('file_test_views'));
}
/**
* Tests using the views file relationship.
*/
public function testViewsHandlerRelationshipUserFileData() {
$file = entity_create('file', array(
'fid' => 2,
'uid' => 2,
'filename' => 'image-test.jpg',
'uri' => "public://image-test.jpg",
'filemime' => 'image/jpeg',
'created' => 1,
'changed' => 1,
'status' => FILE_STATUS_PERMANENT,
));
$file->enforceIsNew();
file_put_contents($file->getFileUri(), file_get_contents('core/modules/simpletest/files/image-1.png'));
$file->save();
$account = $this->drupalCreateUser();
$account->user_file->target_id = 2;
$account->save();
$view = Views::getView('test_file_user_file_data');
// Tests \Drupal\taxonomy\Plugin\views\relationship\NodeTermData::calculateDependencies().
$expected = [
'module' => [
'file',
'user',
],
];
$this->assertIdentical($expected, $view->calculateDependencies());
$this->executeView($view);
$expected_result = array(
array(
'file_managed_user__user_file_fid' => '2',
),
);
$column_map = array('file_managed_user__user_file_fid' => 'file_managed_user__user_file_fid');
$this->assertIdenticalResultset($view, $expected_result, $column_map);
}
}
langcode: und
status: true
dependencies:
module:
- file
- user
id: test_file_user_file_data
label: test_file_user_file_data
module: views
description: ''
tag: ''
base_table: users
base_field: uid
core: 8.x
display:
default:
display_plugin: default
id: default
display_title: Master
position: 0
display_options:
access:
type: perm
options:
perm: 'access user profiles'
cache:
type: none
style:
type: table
options:
grouping: { }
row_class: ''
default_row_class: true
override: true
sticky: false
caption: ''
summary: ''
description: ''
columns:
name: name
fid: fid
info:
name:
sortable: false
default_sort_order: asc
align: ''
separator: ''
empty_column: false
responsive: ''
fid:
sortable: false
default_sort_order: asc
align: ''
separator: ''
empty_column: false
responsive: ''
default: '-1'
empty_table: false
row:
type: fields
options:
inline: { }
separator: ''
hide_empty: false
default_field_elements: true
relationships:
user_file_target_id:
id: user_file_target_id
table: user__user_file
field: user_file_target_id
relationship: none
group_type: group
admin_label: 'file from user_file'
required: true
plugin_id: standard
arguments: { }
display_extenders: { }
......@@ -22,7 +22,7 @@ function image_field_views_data(FieldStorageConfigInterface $field_storage) {
$data[$table_name][$field_storage->getName() . '_target_id']['relationship'] = array(
'id' => 'standard',
'base' => 'file_managed',
'base field' => 'target_id',
'base field' => 'fid',
'label' => t('image from !field_name', array('!field_name' => $field_storage->getName())),
);
}
......
<?php
/**
* @file
* Contains \Drupal\image\Tests\Views\RelationshipUserImageDataTest.
*/
namespace Drupal\image\Tests\Views;
use Drupal\views\Tests\ViewTestBase;
use Drupal\views\Views;
use Drupal\views\Tests\ViewTestData;
/**
* Tests image on user relationship handler.
*
* @group image
*/
class RelationshipUserImageDataTest extends ViewTestBase {
/**
* Modules to install.
*
* @var array
*/
public static $modules = array('image', 'image_test_views', 'user');
/**
* Views used by this test.
*
* @var array
*/
public static $testViews = array('test_image_user_image_data');
protected function setUp() {
parent::setUp();
// Create the user profile field and instance.
entity_create('field_storage_config', array(
'entity_type' => 'user',
'field_name' => 'user_picture',
'type' => 'image',
'translatable' => '0',
))->save();
entity_create('field_config', array(
'label' => 'User Picture',
'description' => '',
'field_name' => 'user_picture',
'entity_type' => 'user',
'bundle' => 'user',
'required' => 0,
))->save();
ViewTestData::createTestViews(get_class($this), array('image_test_views'));
}
/**
* Tests using the views image relationship.
*/
public function testViewsHandlerRelationshipUserImageData() {
$file = entity_create('file', array(
'fid' => 2,
'uid' => 2,
'filename' => 'image-test.jpg',
'uri' => "public://image-test.jpg",
'filemime' => 'image/jpeg',
'created' => 1,
'changed' => 1,
'status' => FILE_STATUS_PERMANENT,
));
$file->enforceIsNew();
file_put_contents($file->getFileUri(), file_get_contents('core/modules/simpletest/files/image-1.png'));
$file->save();
$account = $this->drupalCreateUser();
$account->user_picture->target_id = 2;
$account->save();
$view = Views::getView('test_image_user_image_data');
// Tests \Drupal\taxonomy\Plugin\views\relationship\NodeTermData::calculateDependencies().
$expected = [
'module' => [
'file',
'user',
],
];
$this->assertIdentical($expected, $view->calculateDependencies());
$this->executeView($view);
$expected_result = array(
array(
'file_managed_user__user_picture_fid' => '2',
),
);
$column_map = array('file_managed_user__user_picture_fid' => 'file_managed_user__user_picture_fid');
$this->assertIdenticalResultset($view, $expected_result, $column_map);
}
}
name: 'Image test views'
type: module
description: 'Provides default views for views image tests.'
package: Testing
version: VERSION
core: 8.x
dependencies:
- image
- views
langcode: und
status: true
dependencies:
module:
- file
- user
id: test_image_user_image_data
label: test_image_user_image_data
module: views
description: ''
tag: ''
base_table: users
base_field: uid
core: 8.x
display:
default:
display_plugin: default
id: default
display_title: Master
position: 0
display_options:
access:
type: perm
options:
perm: 'access user profiles'
cache:
type: none
style:
type: table
options:
grouping: { }
row_class: ''
default_row_class: true
override: true
sticky: false
caption: ''
summary: ''
description: ''
columns:
name: name
fid: fid
info:
name:
sortable: false
default_sort_order: asc
align: ''
separator: ''
empty_column: false
responsive: ''
fid:
sortable: false
default_sort_order: asc
align: ''
separator: ''
empty_column: false
responsive: ''
default: '-1'
empty_table: false
row:
type: fields
options:
inline: { }
separator: ''
hide_empty: false
default_field_elements: true
relationships:
user_picture_target_id:
id: user_picture_target_id
table: user__user_picture
field: user_picture_target_id
relationship: none
group_type: group
admin_label: 'image from user_picture'
required: true
plugin_id: standard
arguments: { }
display_extenders: { }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment