X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fentity_browser%2Ftests%2Fsrc%2FFunctionalJavascript%2FImageFieldTest.php;h=a08781a4859a5335a1f40efb777baf0d2c1178cf;hp=07dbe075337f1b2a8775b3a49f2c3358f6ad604a;hb=eba34333e3c89f208d2f72fa91351ad019a71583;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae diff --git a/web/modules/contrib/entity_browser/tests/src/FunctionalJavascript/ImageFieldTest.php b/web/modules/contrib/entity_browser/tests/src/FunctionalJavascript/ImageFieldTest.php index 07dbe0753..a08781a48 100644 --- a/web/modules/contrib/entity_browser/tests/src/FunctionalJavascript/ImageFieldTest.php +++ b/web/modules/contrib/entity_browser/tests/src/FunctionalJavascript/ImageFieldTest.php @@ -43,11 +43,13 @@ class ImageFieldTest extends EntityBrowserJavascriptTestBase { 'label' => 'Images', 'settings' => [ 'file_extensions' => 'jpg', + 'file_directory' => 'entity-browser-test', + 'max_resolution' => '40x40', 'title_field' => TRUE, ], ])->save(); - file_unmanaged_copy(\Drupal::root() . '/core/misc/druplicon.png', 'public://example.jpg'); + file_unmanaged_copy(\Drupal::root() . '/core/modules/simpletest/files/image-test.jpg', 'public://example.jpg'); $this->image = File::create([ 'uri' => 'public://example.jpg', ]); @@ -85,6 +87,17 @@ class ImageFieldTest extends EntityBrowserJavascriptTestBase { ->load('test_entity_browser_iframe_view'); $browser->setDisplay('iframe'); $browser->getDisplay()->setConfiguration($display_config); + $browser->addWidget([ + // These settings should get overridden by our field settings. + 'settings' => [ + 'upload_location' => 'public://', + 'extensions' => 'png', + ], + 'weight' => 1, + 'label' => 'Upload images', + 'id' => 'upload', + ]); + $browser->setWidgetSelector('tabs'); $browser->save(); $account = $this->drupalCreateUser([ @@ -100,7 +113,6 @@ class ImageFieldTest extends EntityBrowserJavascriptTestBase { * Tests basic usage for an image field. */ public function testImageFieldUsage() { - $this->drupalGet('node/add/article'); $this->assertSession()->linkExists('Select images'); $this->getSession()->getPage()->clickLink('Select images'); @@ -139,4 +151,46 @@ class ImageFieldTest extends EntityBrowserJavascriptTestBase { $this->assertSession()->linkExists('Select entities'); } + /** + * Tests that settings are passed from the image field to the upload widget. + */ + public function testImageFieldSettings() { + $root = \Drupal::root(); + $file_wrong_type = $root . '/core/misc/druplicon.png'; + $file_too_big = $root . '/core/modules/simpletest/files/image-2.jpg'; + $file_just_right = $root . '/core/modules/simpletest/files/image-test.jpg'; + $this->drupalGet('node/add/article'); + $this->assertSession()->linkExists('Select images'); + $this->getSession()->getPage()->clickLink('Select images'); + $this->getSession()->switchToIFrame('entity_browser_iframe_test_entity_browser_iframe_view'); + // Switch to the image tab. + $this->clickLink('Upload images'); + // Attempt to upload an invalid image type. The upload widget is configured + // to allow png but the field widget is configured to allow jpg, so we + // expect the field to override the widget. + $this->getSession()->getPage()->attachFileToField('files[upload][]', $file_wrong_type); + $this->waitForAjaxToFinish(); + $this->assertSession()->pageTextContains('Only files with the following extensions are allowed: jpg'); + $this->assertSession()->pageTextContains('The specified file druplicon.png could not be uploaded'); + // Upload an image bigger than the field widget's configured max size. + $this->getSession()->getPage()->attachFileToField('files[upload][]', $file_too_big); + $this->waitForAjaxToFinish(); + $this->assertSession()->pageTextContains('The image was resized to fit within the maximum allowed dimensions of 40x40 pixels.'); + // Upload an image that passes validation and finish the upload. + $this->getSession()->getPage()->attachFileToField('files[upload][]', $file_just_right); + $this->waitForAjaxToFinish(); + $this->getSession()->getPage()->pressButton('Select files'); + $this->getSession()->getPage()->pressButton('Use selected'); + $this->assertSession()->pageTextContains('image-test.jpg'); + // Check that the file has uploaded to the correct sub-directory. + $this->getSession()->switchToIFrame(); + $this->waitForAjaxToFinish(); + $entity_id = $this->getSession()->evaluateScript('jQuery("#edit-field-image-wrapper [data-entity-id]").data("entity-id")'); + $this->assertStringStartsWith('file:', $entity_id); + /** @var \Drupal\file\Entity\File $file */ + $fid = explode(':', $entity_id)[1]; + $file = File::load($fid); + $this->assertContains('entity-browser-test', $file->getFileUri()); + } + }