diff --git a/core/modules/media_entity/tests/fixtures/exif_example.jpeg b/core/modules/media_entity/tests/fixtures/exif_example.jpeg new file mode 100644 index 0000000..2cba9b9 --- /dev/null +++ b/core/modules/media_entity/tests/fixtures/exif_example.jpeg @@ -0,0 +1,50 @@ +JFIFHHExifMM*bv~(i%Drupal EXIF CameraHH02100100NE4` Əhttp://ns.adobe.com/xap/1.0/ + + + + + Drupal EXIF Camera + 72 + 72 + Inch + Centered + Exif Version 2.1 + FlashPix Version 1.0 + Uncalibrated + N + 52, 30, 32.751 + E + 13, 22, 25.5432 + + + + + +C + + +    C   Y HNƋ`:Q&Y9nZl(-p㓟{'h\R@o3uv'N%Wi}cʭ0E-%+[}[/OI^fdp,Ć^_?}:ΞQ]gYh2Z]ՋEgDhf )ɋK0q,LGduV٭N#kOHW+Tס_D;|t!ΪNrvb=%qkMtQ#}vw]vHxzysl_i-vtv¯\.Ыj]]$:o,o>ma_[ +ȔJYԷ+ 콟C!yWK?܋2jU潲˅ˤQX' 6@03PH}jr5fKl\m5 qYqhc i8Ǻ7}Fzetc4 +B/,( %UR:sZy<ٖ.~ɟR`= ^%#?1ZwFh?;3Z#.K֓8#s;qWB/(]iCI =*@/.&{')Mt ZQ5Xn5P𛇤JfKʻ s}%eg"d!?iqIp kůhU衈>=քN6:~J )anjZYp{YgPMR\Q;5vA*>2m YC[~(SHl"ٵk֦%r- ?@Mi7D$lSC`Yt4t77:*8LW~isR7+C(lyԋLW')5UԷzNL4JEEX@=hI¤%p4Ji"$nqՑ@Á5|PT*AB )r)܂>XԬ='l>JSs=¡,|ULJ%! !G\uTgz j34SWƀ`*I@dc" ѧ:5C6Th2iԞ'iS! q(5m͑{fO}yM)Y>tJS] j hKvȓ +"RpVڑFb!Ѵf_sܝf 9¶{CN# <+ШܺEQ4VX'g: !"1A#2Qq 0@a45R$3Pc?QDq}(Oz4*TЎ7ړ +[$^֯BԜ9?ôu:ţ]jrUՆd0RU .%ar ԑ:z`nα eJM#)Dd1` 6OÃUY_v 쿟SumwjOrJ ⧢teN\ 7+4#!w5Cw)~'K{5{t%u$y ]b_J_a)`5Q.,sQ*.< V,$V2ǹ;OM8iM1~ ¤]'GϢr,C3tq6M u(mK(VR0i0,+ mRӪaar6_L[ҏXq0|0_*!5 Oݛʗ&;P>T]Sx=1 +ް)TÉLK >Z]BO/Ʈ($m7~sœFϟ4}i*̖AvK9^bӎiyRFt)EszU\Gp@d:|C !1"AQaq2B #@0RSTbrs$3P? 36S(2wT&kkw~r^Pt7a@$2a,Lˌ:ie #4dD Ǘlk߸oɓ|#nfBU++BBhD&Z}^0 +|Nr]5n / +Juro=U֏J$|PnjqJOخ5XeA{Tc"?ԕѬWU7DZUr?dJm*0ے(OeUv鷘KpG&YNjCvE)WD +i!xQƔn]dja! 90U'! o!T Y/+XS*$mH(AwJ)- БS&0haJkFQNN/Q0*dڽh-8ȴEBwy^ȓߨM'bArGtK!62xD3CJSRxԟl).v$") _Ma]&w\2n)w~9S?Q/6txGL#"^szjV6+Nix\GK&Y҂kw2ᇦՃj5L4f/P6ƧiRGth,S(J x (vjNDzyg_v_[^d _cbe +@Y'L)Lxȥ2ҐG,O}*iE_1Ӡe+Dޛ>3&~f6ML~k8T @"[@-ɥ1Yܸ TbhSJfbm 4}X.N,~MJ6%BV(]w#@Iԓ`Q%޵5b9K1"l +@3%|mZB`yzI}SgJ=0ًz,v4 g]I3 G$I$I$rI$I$*I$I$)Sl$I$Dm%I$Lm%5 so{BjNdrrI$$I$I$AI$I$I$I$I$O*!1AQaq@ 0P?ɘDvҍ;]qV~6XUnjX+yv-Rn^)_K JtA} x֖\.ƄAΞz)J6%7[a-I؁JUf"#zEl!bH7C@+9j u@-lUB:SY qĢ$_ 5*o*Oabj;PÀ-7]=@Dv58]1]37M76MN{U^p|-eאVL wPO:ߍhcC9Q5αu6{W;2U({RAVF +f&+`} #a8ڈA3paDPDUIn#WUb[/sBW"Ѽw4E7 F{kI%t\T],;V+-zik$J!eY|˭,Ɔ=uC33B6H,,̓h-ڇ8ne LYlҏV܋k9kS*qʀ,Ӏǘ LVLbm,c.νP5kEI b3`>?O1a[k + 8D4jz? @KA>_ sȤ`!/3*!1AQaq@ 0P? +n_oB5 xcRNRZ$O/'/=i7q:ڈD"L%<~v^X}eeC†u@Yj'Î^)ǙHʅ3.'e9tyCЏy0KąSTNRFR< m³&gNUybDֳP5ӝB149Nc]: 1_^FVĦtʭRU鹣z4S5}IB +pUȃǖbxGύӒys޼o +1cXaYvlrŇQY<{SI@7Kछ+8s484;E0]+Yy]3پXkСWl"oPd̴sʅԈjE]Rա ÏlFX-k e^bNed&81p,$ RhFdIl~.i7u1$\,Hi&#^ C9+?QX0bRG=*a9CJbiٟ} D#}U+|Ten9.Rol1b528$nMgšɗEtJ0E)u~+SL&!1AQaq @0P?;Y(>*Tʯ $s pF-JJ$4 Z`ZiHM|AD yb0[f)ۿG]W&c^gXTRW @HD)QiϑP1 +0FTv3^1*x4}!meKTUniK GQ&6L~]-d(%᎐qS!rU^qtQv P9@khKKwfD5j;{ޏMGuChV@1Qކa#6 r^~FFǒhbE;K5?YcB2G&ƃgWgPlR 'string', - 'field_file1' => 'file', - 'field_image1' => 'image', + 'field_image' => 'image', + 'field_string_mime' => 'string', + 'field_string_width' => 'string', + 'field_string_model' => 'string', ]; $this->createMediaFields($fields, $bundle_name); // Adjust the allowed extensions on the file field. - $file_field = FieldConfig::load("media.$bundle_name.field_image1"); - $file_field->setSetting('file_extensions', 'png')->save(); + $file_field = FieldConfig::load("media.$bundle_name.field_image"); + $file_field->setSetting('file_extensions', 'png jpeg')->save(); $this->drupalGet("admin/structure/media/manage/$bundle_name"); $this->assertSelectOptions("type_configuration[image][source_field]", - [ - 'field_file1', - 'field_image1', - ], - ['field_string1'] + ['field_image'], + ['field_string_mime', 'field_string_width', 'field_string_model'] ); - $page->selectFieldOption("type_configuration[image][source_field]", 'field_image1'); + $page->selectFieldOption("type_configuration[image][source_field]", 'field_image'); + $page->selectFieldOption("field_mapping[mime]", 'field_string_mime'); + $page->selectFieldOption("field_mapping[width]", 'field_string_width'); + $page->selectFieldOption("field_mapping[model]", 'field_string_model'); $page->pressButton('Save media bundle'); // Hide the media name to test default name generation. @@ -56,17 +57,22 @@ public function testMediaImagePlugin() { // Create a media item. $this->drupalGet("media/add/$bundle_name"); - $page->attachFileToField("files[field_image1_0]", \Drupal::root() . '/core/misc/druplicon.png'); + $page->attachFileToField("files[field_image_0]", \Drupal::root() . '/core/modules/media_entity/tests/fixtures/exif_example.jpeg'); $assert_session->assertWaitOnAjaxRequest(); - $page->fillField('field_image1[0][alt]', 'Druplicon Image Alt Text'); + $page->fillField('field_image[0][alt]', 'EXIF Image Alt Text'); $page->pressButton('Save and publish'); $assert_session->addressEquals('media/1'); - // Make sure the thumbnail shows up. - $assert_session->elementAttributeContains('css', '.image-style-thumbnail', 'src', 'druplicon.png'); - // Load the media and check its default name. + + // Make sure the thumbnail is created from uploaded image. + $assert_session->elementAttributeContains('css', '.image-style-thumbnail', 'src', 'exif_example.jpeg'); + + // Load the media and check that all fields are properly populated. $media = Media::load(1); - $this->assertEquals($media->label(), 'druplicon.png'); + $this->assertEquals('exif_example.jpeg', $media->label()); + $this->assertEquals('Drupal EXIF Camera', $media->get('field_string_model')->value); + $this->assertEquals('200', $media->get('field_string_width')->value); + $this->assertEquals('image/jpeg', $media->get('field_string_mime')->value); } }