You are here

public function FileMetadataExifTest::testTiffExifSaveToFile in File metadata manager 8.2

Same name and namespace in other branches
  1. 8 file_mdm_exif/tests/src/Kernel/FileMetadataExifTest.php \Drupal\Tests\file_mdm_exif\Kernel\FileMetadataExifTest::testTiffExifSaveToFile()

Test writing metadata to TIFF file.

File

file_mdm_exif/tests/src/Kernel/FileMetadataExifTest.php, line 340

Class

FileMetadataExifTest
Tests that File Metadata EXIF plugin works properly.

Namespace

Drupal\Tests\file_mdm_exif\Kernel

Code

public function testTiffExifSaveToFile() {
  $fmdm = $this->container
    ->get('file_metadata_manager');

  // Copy test file to public://.
  $this->fileSystem
    ->copy(drupal_get_path('module', 'file_mdm') . '/tests/files/sample-1.tiff', 'public://', FileSystemInterface::EXISTS_REPLACE);
  $file_uri = 'public://sample-1.tiff';
  $file_metadata = $fmdm
    ->uri($file_uri);

  // Check values via exif_read_data before operations.
  $data = @exif_read_data($file_uri);
  $this
    ->assertEquals(1, $data['Orientation']);
  $this
    ->assertEquals(2, $data['PhotometricInterpretation']);
  $this
    ->assertEquals([
    8,
    8,
    8,
    8,
  ], $data['BitsPerSample']);

  // Change tags from IFD0.
  $this
    ->assertEquals(15, $this
    ->countMetadataKeys($file_metadata, 'exif'));
  $this
    ->assertEquals(1, $file_metadata
    ->getMetadata('exif', 'orientation')['value']);
  $data['Orientation'] = 4;
  $this
    ->assertTrue($file_metadata
    ->setMetadata('exif', 'orientation', $data['Orientation']));
  $this
    ->assertEquals($data['Orientation'], $file_metadata
    ->getMetadata('exif', 'orientation')['value']);
  $this
    ->assertEquals(2, $file_metadata
    ->getMetadata('exif', 'PhotometricInterpretation')['value']);
  $data['PhotometricInterpretation'] = 4;
  $this
    ->assertTrue($file_metadata
    ->setMetadata('exif', 'PhotometricInterpretation', $data['PhotometricInterpretation']));
  $this
    ->assertEquals($data['PhotometricInterpretation'], $file_metadata
    ->getMetadata('exif', 'PhotometricInterpretation')['value']);
  $this
    ->assertEquals([
    8,
    8,
    8,
    8,
  ], $file_metadata
    ->getMetadata('exif', 'BitsPerSample')['value']);
  $data['BitsPerSample'] = [
    7,
    6,
    5,
    4,
  ];
  $bps_tag = $this->container
    ->get('file_mdm_exif.tag_mapper')
    ->resolveKeyToIfdAndTag('BitsPerSample');
  $bps = new PelEntryShort($bps_tag['tag'], $data['BitsPerSample']);
  $this
    ->assertTrue($file_metadata
    ->setMetadata('exif', 'BitsPerSample', $bps));
  $this
    ->assertEquals($data['BitsPerSample'], $file_metadata
    ->getMetadata('exif', 'BitsPerSample')['value']);

  // Save metadata to file.
  $this
    ->assertTrue($file_metadata
    ->saveMetadataToFile('exif'));

  // Check results via exif_read_data.
  $data_reloaded = @exif_read_data($file_uri);
  $this
    ->assertEquals(4, $data_reloaded['Orientation']);
  $this
    ->assertEquals(4, $data_reloaded['PhotometricInterpretation']);
  $this
    ->assertEquals([
    7,
    6,
    5,
    4,
  ], $data_reloaded['BitsPerSample']);
}