Version 1
[yaffs-website] / web / modules / contrib / video_embed_field / modules / video_embed_media / tests / src / Functional / UpgradePathTest.php
diff --git a/web/modules/contrib/video_embed_field/modules/video_embed_media/tests/src/Functional/UpgradePathTest.php b/web/modules/contrib/video_embed_field/modules/video_embed_media/tests/src/Functional/UpgradePathTest.php
new file mode 100644 (file)
index 0000000..52c4aa3
--- /dev/null
@@ -0,0 +1,96 @@
+<?php
+
+namespace Drupal\Tests\video_embed_media\Functional;
+
+use Drupal\Tests\BrowserTestBase;
+use Drupal\Tests\video_embed_field\Functional\AdminUserTrait;
+
+/**
+ * Test the upgrade path from media_entity_embedded_video.
+ *
+ * @group video_embed_media
+ */
+class UpgradePathTest extends BrowserTestBase {
+
+  use AdminUserTrait;
+
+  /**
+   * Disable strict checking because we are installing MEEV.
+   *
+   * @var bool
+   */
+  protected $strictConfigSchema = FALSE;
+
+  /**
+   * Modules to install.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'video_embed_field',
+    'media_entity_embeddable_video',
+    'media_entity',
+    'field_ui',
+    'node',
+    'image',
+    'text',
+  ];
+
+  /**
+   * Test the upgrade path.
+   */
+  public function testMediaBundleCreation() {
+    $this->drupalLogin($this->createAdminUser());
+
+    // Create a media_entity_embeddable_video bundle and field.
+    $this->drupalGet('admin/structure/media/add');
+    $this->submitForm([
+      'label' => 'embeddable Video Bundle',
+      'id' => 'embeddable_bundle',
+      'type' => 'embeddable_video',
+    ], 'Save media bundle');
+    $this->assertSession()->pageTextContains('The media bundle embeddable Video Bundle has been added.');
+    $this->drupalGet('admin/structure/media/manage/embeddable_bundle/fields/add-field');
+    $this->submitForm([
+      'new_storage_type' => 'string',
+      'label' => 'Video Text Field',
+      'field_name' => 'video_text_field',
+    ], t('Save and continue'));
+    $this->submitForm([], t('Save field settings'));
+    $this->submitForm([], t('Save settings'));
+    $this->drupalGet('admin/structure/media/manage/embeddable_bundle');
+    $this->submitForm(['type_configuration[embeddable_video][source_field]' => 'field_video_text_field'], t('Save media bundle'));
+    $this->drupalGet('media/add/embeddable_bundle');
+    $this->submitForm([
+      'field_video_text_field[0][value]' => 'https://www.youtube.com/watch?v=gnERPdAiuSo',
+      'name[0][value]' => 'Test Media Entity',
+    ], t('Save'));
+
+    // Install video_embed_field.
+    $this->container->get('module_installer')->install(['video_embed_media'], TRUE);
+
+    $this->assertUpgradeComplete();
+
+    // Uninstall the module and ensure everything is still okay.
+    $this->drupalGet('admin/modules/uninstall');
+    $this->submitForm([
+      'uninstall[media_entity_embeddable_video]' => TRUE,
+    ], t('Uninstall'));
+    $this->submitForm([], 'Uninstall');
+
+    $this->assertUpgradeComplete();
+  }
+
+  /**
+   * Assert the upgrade was successful.
+   */
+  protected function assertUpgradeComplete() {
+    // Ensure the new type is selected.
+    $this->drupalGet('admin/structure/media/manage/embeddable_bundle');
+    $this->assertTrue(!empty($this->getSession()->getPage()->find('xpath', '//option[@value="video_embed_field" and @selected="selected"]')), 'The media type was updated.');
+    // Ensure the media entity has updated values.
+    $this->drupalGet('media/1/edit');
+    $this->assertEquals($this->getSession()->getPage()->find('css', 'input[name="field_video_text_field[0][value]"]')->getValue(), 'https://www.youtube.com/watch?v=gnERPdAiuSo', 'Field values were copied.');
+  }
+
+}