3 namespace Drupal\Tests\media\FunctionalJavascript;
6 * Tests the media type creation.
10 class MediaTypeCreationTest extends MediaJavascriptTestBase {
13 * Tests the media type creation form.
15 public function testMediaTypeCreationFormWithDefaultField() {
16 $session = $this->getSession();
17 $page = $session->getPage();
18 $assert_session = $this->assertSession();
20 $label = 'Type with Default Field';
21 $mediaTypeMachineName = str_replace(' ', '_', strtolower($label));
23 $this->drupalGet('admin/structure/media/add');
25 // Fill in a label to the media type.
26 $page->fillField('label', $label);
27 // Wait for machine name generation. Default: waitUntilVisible(), does not
29 $session->wait(5000, "jQuery('.machine-name-value').text() === '{$mediaTypeMachineName}'");
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);
38 $page->pressButton('Save');
40 // Check whether the source field was correctly created.
41 $this->drupalGet("admin/structure/media/manage/{$mediaTypeMachineName}/fields");
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)');
48 // Check that the source field is correctly assigned to media type.
49 $this->drupalGet("admin/structure/media/manage/{$mediaTypeMachineName}");
51 $assert_session->pageTextContains('Test source field is used to store the essential information about the media item.');
55 * Test creation of media type, reusing an existing source field.
57 public function testMediaTypeCreationReuseSourceField() {
58 $session = $this->getSession();
59 $page = $session->getPage();
60 $assert_session = $this->assertSession();
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');
71 $label = 'Type reusing Default Field';
72 $mediaTypeMachineName = str_replace(' ', '_', strtolower($label));
74 $this->drupalGet('admin/structure/media/add');
76 // Fill in a label to the media type.
77 $page->fillField('label', $label);
79 // Wait for machine name generation. Default: waitUntilVisible(), does not
81 $session->wait(5000, "jQuery('.machine-name-value').text() === '{$mediaTypeMachineName}'");
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');
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');