1<?php 2 3namespace Drupal\Tests\file\Functional\Formatter; 4 5use Drupal\entity_test\Entity\EntityTest; 6use Drupal\file\Entity\File; 7 8/** 9 * @coversDefaultClass \Drupal\file\Plugin\Field\FieldFormatter\FileAudioFormatter 10 * @group file 11 */ 12class FileAudioFormatterTest extends FileMediaFormatterTestBase { 13 14 /** 15 * {@inheritdoc} 16 */ 17 protected $defaultTheme = 'stark'; 18 19 /** 20 * @covers ::viewElements 21 * 22 * @dataProvider dataProvider 23 */ 24 public function testRender($tag_count, $formatter_settings) { 25 $field_config = $this->createMediaField('file_audio', 'mp3', $formatter_settings); 26 27 file_put_contents('public://file.mp3', str_repeat('t', 10)); 28 $file1 = File::create([ 29 'uri' => 'public://file.mp3', 30 'filename' => 'file.mp3', 31 ]); 32 $file1->save(); 33 34 $file2 = File::create([ 35 'uri' => 'public://file.mp3', 36 'filename' => 'file.mp3', 37 ]); 38 $file2->save(); 39 40 $entity = EntityTest::create([ 41 $field_config->getName() => [ 42 [ 43 'target_id' => $file1->id(), 44 ], 45 [ 46 'target_id' => $file2->id(), 47 ], 48 ], 49 ]); 50 $entity->save(); 51 52 $this->drupalGet($entity->toUrl()); 53 54 $file1_url = $file1->createFileUrl(); 55 $file2_url = $file2->createFileUrl(); 56 57 $assert_session = $this->assertSession(); 58 $assert_session->elementsCount('css', 'audio[controls="controls"]', $tag_count); 59 $assert_session->elementExists('css', "audio > source[src='$file1_url'][type='audio/mpeg']"); 60 $assert_session->elementExists('css', "audio > source[src='$file2_url'][type='audio/mpeg']"); 61 } 62 63} 64