View source
<?php
namespace Drupal\Tests\imagefield_tokens\Functional;
use Drupal\Core\Url;
use Drupal\Tests\system\Functional\Cache\AssertPageCacheContextsAndTagsTrait;
use Drupal\Tests\image\Functional\ImageFieldTestBase;
use Drupal\Tests\TestFileCreationTrait;
class ImageFieldTokensFormatterTest extends ImageFieldTestBase {
public static $modules = [
'field_ui',
'image',
'token',
'imagefield_tokens',
];
use AssertPageCacheContextsAndTagsTrait;
use ImageFieldTokensTestingTrait;
use TestFileCreationTrait {
getTestFiles as drupalGetTestFiles;
compareFiles as drupalCompareFiles;
}
protected $strictConfigSchema = FALSE;
public function testImageFieldFormatters() {
$node_storage = $this->container
->get('entity_type.manager')
->getStorage('node');
$field_name = strtolower($this
->randomMachineName());
$field_settings = [
'alt_field_required' => 0,
];
$instance = $this
->createImageFieldTokensField($field_name, 'article', [
'uri_scheme' => 'public',
], $field_settings);
$this
->drupalGet('admin/structure/types/manage/article/display');
$this
->drupalPostForm(NULL, [], "{$field_name}_settings_edit");
$this
->assertSession()
->linkByHrefExists(Url::fromRoute('entity.image_style.collection')
->toString(), 0, 'Link to image styles configuration is found');
$admin_user_roles = $this->adminUser
->getRoles(TRUE);
user_role_change_permissions(reset($admin_user_roles), [
'administer image styles' => FALSE,
]);
$this
->drupalGet('admin/structure/types/manage/article/display');
$this
->drupalPostForm(NULL, [], "{$field_name}_settings_edit");
$this
->assertSession()
->linkByHrefNotExists(Url::fromRoute('entity.image_style.collection')
->toString(), 'Link to image styles configuration is absent when permissions are insufficient');
user_role_change_permissions(reset($admin_user_roles), [
'administer image styles' => TRUE,
]);
$test_image = current($this
->drupalGetTestFiles('image'));
$this
->previewNodeImage($test_image, $field_name, 'article');
$instance
->setSetting('alt_field_required', 1);
$instance
->save();
$alt = '[node:title]';
$nid = $this
->uploadNodeImage($test_image, $field_name, 'article', $alt);
$node_storage
->resetCache([
$nid,
]);
$node = $node_storage
->load($nid);
$display_options = [
'type' => 'imagefield_tokens',
'settings' => [
'image_link' => 'content',
],
];
$formatter_response_result = $node->{$field_name}
->view($display_options);
self::assertEquals($formatter_response_result[0]['#item']->alt, $node
->getTitle(), 'Make sure ALT field has been processed correctly!');
}
}