Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / media / tests / src / FunctionalJavascript / MediaTypeCreationTest.php
1 <?php
2
3 namespace Drupal\Tests\media\FunctionalJavascript;
4
5 /**
6  * Tests the media type creation.
7  *
8  * @group media
9  */
10 class MediaTypeCreationTest extends MediaJavascriptTestBase {
11
12   /**
13    * Tests the media type creation form.
14    */
15   public function testMediaTypeCreationFormWithDefaultField() {
16     $session = $this->getSession();
17     $page = $session->getPage();
18     $assert_session = $this->assertSession();
19
20     $label = 'Type with Default Field';
21     $mediaTypeMachineName = str_replace(' ', '_', strtolower($label));
22
23     $this->drupalGet('admin/structure/media/add');
24
25     // Fill in a label to the media type.
26     $page->fillField('label', $label);
27     // Wait for machine name generation. Default: waitUntilVisible(), does not
28     // work properly.
29     $session->wait(5000, "jQuery('.machine-name-value').text() === '{$mediaTypeMachineName}'");
30
31     // Select the media source used by our media type.
32     $assert_session->fieldExists('Media source');
33     $assert_session->optionExists('Media source', 'test');
34     $page->selectFieldOption('Media source', 'test');
35     $result = $assert_session->waitForElementVisible('css', 'fieldset[data-drupal-selector="edit-source-configuration"]');
36     $this->assertNotEmpty($result);
37
38     $page->pressButton('Save');
39
40     // Check whether the source field was correctly created.
41     $this->drupalGet("admin/structure/media/manage/{$mediaTypeMachineName}/fields");
42
43     // Check 2nd column of first data row, to be machine name for field name.
44     $assert_session->elementContains('xpath', '(//table[@id="field-overview"]//tr)[2]//td[2]', 'field_media_test');
45     // Check 3rd column of first data row, to be correct field type.
46     $assert_session->elementTextContains('xpath', '(//table[@id="field-overview"]//tr)[2]//td[3]', 'Text (plain)');
47
48     // Check that the source field is correctly assigned to media type.
49     $this->drupalGet("admin/structure/media/manage/{$mediaTypeMachineName}");
50
51     $assert_session->pageTextContains('Test source field is used to store the essential information about the media item.');
52   }
53
54   /**
55    * Test creation of media type, reusing an existing source field.
56    */
57   public function testMediaTypeCreationReuseSourceField() {
58     $session = $this->getSession();
59     $page = $session->getPage();
60     $assert_session = $this->assertSession();
61
62     // Create a new media type, which should create a new field we can reuse.
63     $this->drupalGet('/admin/structure/media/add');
64     $page->fillField('label', 'Pastafazoul');
65     $session->wait(5000, "jQuery('.machine-name-value').text() === 'pastafazoul'");
66     $page->selectFieldOption('Media source', 'test');
67     $result = $assert_session->waitForElementVisible('css', 'fieldset[data-drupal-selector="edit-source-configuration"]');
68     $this->assertNotEmpty($result);
69     $page->pressButton('Save');
70
71     $label = 'Type reusing Default Field';
72     $mediaTypeMachineName = str_replace(' ', '_', strtolower($label));
73
74     $this->drupalGet('admin/structure/media/add');
75
76     // Fill in a label to the media type.
77     $page->fillField('label', $label);
78
79     // Wait for machine name generation. Default: waitUntilVisible(), does not
80     // work properly.
81     $session->wait(5000, "jQuery('.machine-name-value').text() === '{$mediaTypeMachineName}'");
82
83     // Select the media source used by our media type.
84     $assert_session->fieldExists('Media source');
85     $assert_session->optionExists('Media source', 'test');
86     $page->selectFieldOption('Media source', 'test');
87     $result = $assert_session->waitForElementVisible('css', 'fieldset[data-drupal-selector="edit-source-configuration"]');
88     $this->assertNotEmpty($result);
89     // Select the existing field for re-use.
90     $page->selectFieldOption('source_configuration[source_field]', 'field_media_test');
91     $page->pressButton('Save');
92
93     // Check that no new fields were created.
94     $this->drupalGet("admin/structure/media/manage/{$mediaTypeMachineName}/fields");
95     // The reused field should be present...
96     $assert_session->pageTextContains('field_media_test');
97     // ...not a new, unique one.
98     $assert_session->pageTextNotContains('field_media_test_1');
99   }
100
101 }