Upgraded imagemagick and manually altered pdf to image module to handle changes....
[yaffs-website] / web / modules / contrib / media_entity / tests / src / Functional / CoreMediaUpdatePathTest.php
1 <?php
2
3 namespace Drupal\Tests\media_entity\Functional;
4
5 use Drupal\Core\Config\Entity\Query\QueryFactory;
6 use Drupal\FunctionalTests\Update\UpdatePathTestBase;
7
8 /**
9  * @group media_entity
10  */
11 class CoreMediaUpdatePathTest extends UpdatePathTestBase {
12
13   /**
14    * {@inheritdoc}
15    */
16   protected function setDatabaseDumpFiles() {
17     $this->databaseDumpFiles = [
18       __DIR__ . '/../../fixtures/drupal-8.4.0-media-entity.php.gz',
19     ];
20   }
21
22   /**
23    * {@inheritdoc}
24    */
25   protected function setUp() {
26     parent::setUp();
27
28     // All this can be removed when #2877383 lands.
29     $this->config('system.action.media_delete_action')->delete();
30     $this->config('system.action.media_publish_action')->delete();
31     $this->config('system.action.media_save_action')->delete();
32     $this->config('system.action.media_unpublish_action')->delete();
33
34     $this->config('views.view.media')
35       ->clear('display.default.display_options.fields.media_bulk_form')
36       ->save();
37   }
38
39   public function testUpdatePath() {
40     $icon_base_uri = $this->config('media_entity.settings')->get('icon_base');
41
42     $this->runUpdates();
43     $assert = $this->assertSession();
44
45     // As with all translatable, versionable content entity types, media
46     // entities should have the revision_translation_affected base field.
47     // This may have been created during the update path by system_update_8402,
48     // so we should check for it here.
49     /** @var \Drupal\Core\Entity\EntityFieldManagerInterface $field_manager */
50     $field_manager = $this->container->get('entity_field.manager');
51     $this->assertArrayHasKey('revision_translation_affected', $field_manager->getBaseFieldDefinitions('media'));
52     $field_manager->clearCachedFieldDefinitions();
53
54     $this->drupalLogin($this->rootUser);
55     $this->drupalGet('/admin/modules');
56     $assert->checkboxNotChecked('modules[media_entity_document][enable]');
57     $assert->checkboxNotChecked('modules[media_entity_image][enable]');
58     $assert->checkboxNotChecked('modules[media_entity][enable]');
59     $assert->checkboxChecked('modules[media_entity_generic][enable]');
60     // Media is not currently displayed on the Modules page.
61     $this->assertArrayHasKey('media', $this->config('core.extension')->get('module'));
62
63     $this->drupalGet('/admin/structure/media/manage/file');
64     $assert->statusCodeEquals(200);
65     $assert->fieldValueEquals('source', 'file');
66     $assert->pageTextContains('File field is used to store the essential information');
67
68     $this->drupalGet('/admin/structure/media/manage/image');
69     $assert->statusCodeEquals(200);
70     $assert->fieldValueEquals('source', 'image');
71     $assert->pageTextContains('Image field is used to store the essential information');
72
73     $this->drupalGet('/admin/structure/media/manage/generic');
74     $assert->statusCodeEquals(200);
75     $assert->fieldValueEquals('source', 'generic');
76     $assert->pageTextContains('Generic media field is used to store the essential information');
77
78     $this->assertFrontPageMedia('Image 3', 'main img');
79     $this->assertFrontPageMedia('Generic 1', 'main img[src *= "/media-icons/generic/generic.png"]');
80     $this->assertFrontPageMedia('File 2', 'main img[src *= "/media-icons/generic/document.png"]');
81     $this->assertFrontPageMedia('File 3', 'main img[src *= "/media-icons/generic/document.png"]');
82     $this->assertFrontPageMedia('Image 1', 'main img');
83     $this->assertFrontPageMedia('Generic 3', 'main img[src *= "/media-icons/generic/generic.png"]');
84
85     // Assert that Media Entity's config is migrated.
86     $this->assertTrue($this->config('media_entity.settings')->isNew());
87     $this->assertEquals($icon_base_uri, $this->config('media.settings')->get('icon_base_uri'));
88     $this->assertEmpty(
89       $this->container->get('config.factory')->listAll('media_entity.bundle')
90     );
91
92     $this->activateModule();
93     /** @var \Drupal\Core\Entity\EntityStorageInterface $storage */
94     $storage = $this->container
95       ->get('entity_type.manager')
96       ->getStorage('media_type');
97
98     foreach (['file', 'image', 'generic'] as $type) {
99       $config = $this->config("media.type.$type");
100       $this->assertFalse($config->isNew());
101       $this->assertNull($config->get('type'));
102       $this->assertNull($config->get('type_configuration'));
103       $this->assertInternalType('string', $config->get('source'));
104       $this->assertInternalType('array', $config->get('source_configuration'));
105       $this->assertInternalType('string', $config->get('source_configuration.source_field'));
106
107       // Ensure that the media type can be queried by UUID.
108       $uuid = $config->get('uuid');
109       $this->assertNotEmpty($uuid);
110       $result = $storage->getQuery()->condition('uuid', $uuid)->execute();
111       $this->assertEquals($result[$type], $type);
112     }
113
114     // The UUID map for legacy media bundles should be cleared out.
115     $old_uuid_map = $this->container
116       ->get('keyvalue')
117       ->get(QueryFactory::CONFIG_LOOKUP_PREFIX . 'media_bundle')
118       ->getAll();
119     $this->assertEmpty($old_uuid_map);
120   }
121
122   protected function assertFrontPageMedia($link, $assert_selectors) {
123     $this->drupalGet('<front>');
124     $this->clickLink($link);
125
126     $assert = $this->assertSession();
127     foreach ((array) $assert_selectors as $selector) {
128       $assert->elementExists('css', $selector);
129     }
130   }
131
132   /**
133    * Activates the Media module in PHPUnit's memory space.
134    */
135   protected function activateModule() {
136     $this->container
137       ->get('module_handler')
138       ->addModule('media', 'core/modules/media');
139
140     /** @var \ArrayObject $namespaces */
141     $namespaces = $this->container->get('container.namespaces');
142     $namespaces['Drupal\\media'] = 'core/modules/media/src';
143
144     $this->container
145       ->get('entity_type.manager')
146       ->clearCachedDefinitions();
147   }
148
149 }