| 1 file.test | FileUnitTestCase::testImageDimensions() | 
Tests storing image height and width as file metadata.
File
- core/modules/ file/ tests/ file.test, line 2202 
- Tests for file.module.
Class
- FileUnitTestCase
- Tests basic file entity functionality.
Code
function testImageDimensions() {
  // Test hook_file_insert().
  $file = current($this->backdropGetTestFiles('image'));
  /** @var File $image_file */
  $image_file = entity_create('file', (array) $file);
  file_save($image_file);
  $this->assertTrue(isset($image_file->metadata['height']), 'Image height retrieved on file_save() for an image file.');
  $this->assertTrue(isset($image_file->metadata['width']), 'Image width retrieved on file_save() for an image file.');
  $file = current($this->backdropGetTestFiles('text'));
  /** @var File $text_file */
  $text_file = entity_create('file', (array) $file);
  file_save($text_file);
  $this->assertFalse(isset($text_file->metadata['height']), 'No image height retrieved on file_save() for an text file.');
  $this->assertFalse(isset($text_file->metadata['width']), 'No image width retrieved on file_save() for an text file.');
  // Test hook_file_load().
  // Clear the cache and load fresh files objects to test file_load behavior.
  entity_get_controller('file')->resetCache();
  $file = file_load($image_file->fid);
  $this->assertTrue(isset($file->metadata['height']), 'Image dimensions retrieved on file_load() for an image file.');
  $this->assertTrue(isset($file->metadata['width']), 'Image dimensions retrieved on file_load() for an image file.');
  $this->assertEqual($file->metadata['height'], $image_file->metadata['height'], 'Loaded image height is equal to saved image height.');
  $this->assertEqual($file->metadata['width'], $image_file->metadata['width'], 'Loaded image width is equal to saved image width.');
  $file = file_load($text_file->fid);
  $this->assertFalse(isset($file->metadata['height']), 'No image height retrieved on file_load() for an text file.');
  $this->assertFalse(isset($file->metadata['width']), 'No image width retrieved on file_load() for an text file.');
  // Test hook_file_update().
  // Load the first image file and resize it.
  $height = $image_file->metadata['width'] / 2;
  $width = $image_file->metadata['height'] / 2;
  $image = image_load($image_file->uri);
  image_resize($image, $width, $height);
  image_save($image);
  file_save($image_file);
  $this->assertEqual($image_file->metadata['height'], $height, 'Image file height updated by file_save().');
  $this->assertEqual($image_file->metadata['width'], $width, 'Image file width updated by file_save().');
  // Clear the cache and reload the file.
  entity_get_controller('file')->resetCache();
  $file = file_load($image_file->fid);
  $this->assertEqual($file->metadata['height'], $height, 'Updated image height retrieved by file_load().');
  $this->assertEqual($file->metadata['width'], $width, 'Updated image width retrieved by file_load().');
  // Verify that the image dimension metadata is removed on file deletion.
  $this->assertTrue(db_query('SELECT COUNT(*) FROM {file_metadata} WHERE fid = :fid', array(':fid' => $file->fid))->fetchField(), 'Row exists in {file_metadata} before file_delete().');
  file_delete($file->fid);
  $this->assertFalse(db_query('SELECT COUNT(*) FROM {file_metadata} WHERE fid = :fid', array(':fid' => $file->fid))->fetchField(), 'Row deleted in {file_metadata} on file_delete().');
}
