View source
<?php
namespace Drupal\Tests\acquia_contenthub\Functional;
use Drupal\Component\Serialization\Json;
use Drupal\file\Entity\File;
use Drupal\Tests\image\Kernel\ImageFieldCreationTrait;
class FileImageTest extends ContentHubTestBase {
use ImageFieldCreationTrait;
protected $image;
protected $adminRole;
protected $adminUserPermissions = [
'access content',
'access administration pages',
'administer site configuration',
'administer content types',
'administer node fields',
'administer nodes',
'administer acquia content hub',
'access administration pages',
];
public static $modules = [
'node',
'acquia_contenthub',
'menu_ui',
'user',
'entity',
'file',
'image',
'field_ui',
'file_entity',
];
public function setUp() : void {
parent::setUp();
$this->adminRole = $this
->createAdminRole('administrator', 'Administrator');
$this->adminUser = $this
->drupalCreateUser($this->adminUserPermissions);
$field_name = 'field_image_test';
$min_resolution = 50;
$max_resolution = 100;
$field_settings = [
'max_resolution' => $max_resolution . 'x' . $max_resolution,
'min_resolution' => $min_resolution . 'x' . $min_resolution,
'alt_field' => 0,
];
$this
->createImageField($field_name, 'article', [], $field_settings, [], [], 'Image test on [site:name]');
}
public function testFileImage() {
$this
->drupalLogin($this->adminUser);
$image_files = $this
->drupalGetTestFiles('image');
$this->image = File::create((array) current($image_files));
$this->image
->save();
$this
->configureContentHubContentTypes('node', [
'article',
]);
$this
->configureContentHubContentTypes('file', [
'image',
]);
$this
->setRoleFor($this->adminRole);
$output = $this
->drupalGetCdf('acquia-contenthub-cdf/file/' . $this->image
->id(), [
'query' => [
'entity_type' => 'file',
'entity_id' => $this->image
->id(),
'include_references' => 'true',
],
]);
$this
->assertResponse(200);
$this
->assertEqual($output['entities']['0']['uuid'], $this->image
->uuid());
$this
->assertEqual($output['entities']['0']['type'], $this->image
->getEntityTypeId());
$this
->assertEqual($output['entities']['0']['attributes']['filename']['value']['en'][0], $this->image
->get('filename')
->getValue()[0]['value']);
$file_url = $this->image
->get('uri')
->getValue()[0]['value'];
$this
->assertEqual($output['entities']['0']['attributes']['url']['value']['en'], file_create_url($file_url));
$entity = $this
->drupalCreateNode([
'type' => 'article',
'title' => 'Title Test',
'field_image_test' => [
[
'target_id' => $this->image
->id(),
],
],
]);
$output = $this
->drupalGetCdf('acquia-contenthub-cdf/node/' . $entity
->id(), [
'query' => [
'include_references' => 'true',
],
]);
$this
->assertResponse(200);
$this
->assertEqual($output['entities']['0']['uuid'], $entity
->uuid());
$this
->assertEqual($output['entities']['0']['attributes']['type']['type'], 'string');
$this
->assertEqual($output['entities']['0']['attributes']['type']['value']['en'], 'article');
$this
->assertEqual($output['entities']['0']['attributes']['title']['value']['en'], $entity
->label());
$this
->assertNotNull($output['entities']['0']['assets'][0]['url']);
$this
->assertNotNull($output['entities']['0']['assets'][0]['replace-token']);
$field_image_test = $output['entities']['0']['attributes']['field_image_test']['value']['en'][0];
$field_image_decoded = Json::decode($field_image_test);
$this
->assertEqual($field_image_decoded['target_uuid'], '[' . $this->image
->uuid() . ']');
$this
->assertEqual($output['entities']['1']['uuid'], $this->image
->uuid());
$this
->assertEqual($output['entities']['1']['type'], $this->image
->getEntityTypeId());
$this
->assertEqual($output['entities']['1']['attributes']['filename']['value']['en'][0], $this->image
->get('filename')
->getValue()[0]['value']);
$this
->assertEqual($output['entities']['1']['attributes']['url']['value']['en'], file_create_url($file_url));
}
}