Media: add a new image size, medium_large. Bumps db version to add new options.

Adds unit tests.

Props DH-Shredder, joemcgill, azaozz.
Fixes #34196.


git-svn-id: https://develop.svn.wordpress.org/trunk@35479 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Scott Taylor
2015-10-31 20:49:26 +00:00
parent d944108b13
commit bd7bf83886
10 changed files with 79 additions and 15 deletions

View File

@@ -724,6 +724,8 @@ EOF;
return array( 150, 150 );
case 'medium':
return array( 300, 225 );
case 'medium_large':
return array( 768, 576 );
case 'large':
return array( 1024, 768 );
case 'full':
@@ -742,11 +744,12 @@ EOF;
$uploads_dir_url = 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/';
$expected = $uploads_dir_url . $year_month . '/' . $image_meta['sizes']['medium']['file'] . ' ' . $image_meta['sizes']['medium']['width'] . 'w, ' .
$uploads_dir_url . $year_month . '/' . $image_meta['sizes']['medium_large']['file'] . ' ' . $image_meta['sizes']['medium_large']['width'] . 'w, ' .
$uploads_dir_url . $year_month . '/' . $image_meta['sizes']['large']['file'] . ' ' . $image_meta['sizes']['large']['width'] . 'w, ' .
$uploads_dir_url . $image_meta['file'] . ' ' . $image_meta['width'] . 'w';
// Set up test cases for all expected size names and a random one.
$sizes = array( 'medium', 'large', 'full', 'yoav' );
$sizes = array( 'medium', 'medium_large', 'large', 'full', 'yoav' );
foreach ( $sizes as $size ) {
$image_url = wp_get_attachment_image_url( self::$large_id, $size );
@@ -773,11 +776,12 @@ EOF;
$uploads_dir_url = 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/';
$expected = $uploads_dir_url . $image_meta['sizes']['medium']['file'] . ' ' . $image_meta['sizes']['medium']['width'] . 'w, ' .
$uploads_dir_url . $image_meta['sizes']['medium_large']['file'] . ' ' . $image_meta['sizes']['medium_large']['width'] . 'w, ' .
$uploads_dir_url . $image_meta['sizes']['large']['file'] . ' ' . $image_meta['sizes']['large']['width'] . 'w, ' .
$uploads_dir_url . $image_meta['file'] . ' ' . $image_meta['width'] . 'w';
// Set up test cases for all expected size names and a random one.
$sizes = array( 'medium', 'large', 'full', 'yoav' );
$sizes = array( 'medium', 'medium_large', 'large', 'full', 'yoav' );
foreach ( $sizes as $size ) {
$size_array = $this->_get_image_size_array_from_name( $size );
@@ -806,6 +810,7 @@ EOF;
$filename_base = basename( $image_meta['file'], '.png' );
$image_meta['file'] = str_replace( $filename_base, $filename_base . '-' . $hash, $image_meta['file'] );
$image_meta['sizes']['medium']['file'] = str_replace( $filename_base, $filename_base . '-' . $hash, $image_meta['sizes']['medium']['file'] );
$image_meta['sizes']['medium_large']['file'] = str_replace( $filename_base, $filename_base . '-' . $hash, $image_meta['sizes']['medium_large']['file'] );
$image_meta['sizes']['large']['file'] = str_replace( $filename_base, $filename_base . '-' . $hash, $image_meta['sizes']['large']['file'] );
// Calculate a srcset array.
@@ -856,6 +861,8 @@ EOF;
$expected = 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/' . $year_month = date('Y/m') . '/'
. $image_meta['sizes']['medium']['file'] . ' ' . $image_meta['sizes']['medium']['width'] . 'w, ';
$expected .= 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/' . $year_month = date('Y/m') . '/'
. $image_meta['sizes']['medium_large']['file'] . ' ' . $image_meta['sizes']['medium_large']['width'] . 'w, ';
$expected .= 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/' . $year_month = date('Y/m') . '/'
. $image_meta['sizes']['large']['file'] . ' ' . $image_meta['sizes']['large']['width'] . 'w, ';
$expected .= 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/' . $image_meta['file'] . ' ' . $image_meta['width'] .'w';
@@ -883,7 +890,7 @@ EOF;
*/
function test_wp_get_attachment_image_sizes() {
// Test sizes against the default WP sizes.
$intermediates = array( 'thumbnail', 'medium', 'large' );
$intermediates = array('thumbnail', 'medium', 'medium_large', 'large');
$image_meta = wp_get_attachment_metadata( self::$large_id );
foreach( $intermediates as $int_size ) {

View File

@@ -35,13 +35,19 @@ class Tests_Post_Attachments extends WP_UnitTestCase {
// intermediate copies should not exist
$this->assertFalse( image_get_intermediate_size($id, 'thumbnail') );
$this->assertFalse( image_get_intermediate_size($id, 'medium') );
$this->assertFalse( image_get_intermediate_size($id, 'medium_large') );
// medium and full size will both point to the original
// medium, medium_large, and full size will both point to the original
$downsize = image_downsize($id, 'medium');
$this->assertEquals( basename( $upload['file'] ), basename($downsize[0]) );
$this->assertEquals( 50, $downsize[1] );
$this->assertEquals( 50, $downsize[2] );
$downsize = image_downsize($id, 'medium_large');
$this->assertEquals( basename( $upload['file'] ), basename($downsize[0]) );
$this->assertEquals( 50, $downsize[1] );
$this->assertEquals( 50, $downsize[2] );
$downsize = image_downsize($id, 'full');
$this->assertEquals( basename( $upload['file'] ), basename($downsize[0]) );
$this->assertEquals( 50, $downsize[1] );
@@ -72,6 +78,7 @@ class Tests_Post_Attachments extends WP_UnitTestCase {
$this->assertTrue( is_file($uploads['basedir'] . DIRECTORY_SEPARATOR . $thumb['path']) );
$this->assertFalse( image_get_intermediate_size($id, 'medium') );
$this->assertFalse( image_get_intermediate_size($id, 'medium_large') );
// the thumb url should point to the thumbnail intermediate
$this->assertEquals( $thumb['url'], wp_get_attachment_thumb_url($id) );
@@ -82,12 +89,17 @@ class Tests_Post_Attachments extends WP_UnitTestCase {
$this->assertEquals( 150, $downsize[1] );
$this->assertEquals( 150, $downsize[2] );
// medium and full will both point to the original
// medium, medium_large, and full will both point to the original
$downsize = image_downsize($id, 'medium');
$this->assertEquals( 'a2-small.jpg', basename($downsize[0]) );
$this->assertEquals( 400, $downsize[1] );
$this->assertEquals( 300, $downsize[2] );
$downsize = image_downsize($id, 'medium_large');
$this->assertEquals( 'a2-small.jpg', basename($downsize[0]) );
$this->assertEquals( 400, $downsize[1] );
$this->assertEquals( 300, $downsize[2] );
$downsize = image_downsize($id, 'full');
$this->assertEquals( 'a2-small.jpg', basename($downsize[0]) );
$this->assertEquals( 400, $downsize[1] );
@@ -95,13 +107,16 @@ class Tests_Post_Attachments extends WP_UnitTestCase {
}
function test_insert_image_medium() {
function test_insert_image_medium_sizes() {
if ( !function_exists( 'imagejpeg' ) )
$this->markTestSkipped( 'jpeg support unavailable' );
update_option('medium_size_w', 400);
update_option('medium_size_h', 0);
update_option('medium_large_size_w', 600);
update_option('medium_large_size_h', 0);
$filename = ( DIR_TESTDATA.'/images/2007-06-17DSC_4173.JPG' );
$contents = file_get_contents($filename);
@@ -120,6 +135,10 @@ class Tests_Post_Attachments extends WP_UnitTestCase {
$this->assertEquals( '2007-06-17DSC_4173-400x602.jpg', $medium['file'] );
$this->assertTrue( is_file($uploads['basedir'] . DIRECTORY_SEPARATOR . $medium['path']) );
$medium_large = image_get_intermediate_size($id, 'medium_large');
$this->assertEquals( '2007-06-17DSC_4173-600x904.jpg', $medium_large['file'] );
$this->assertTrue( is_file($uploads['basedir'] . DIRECTORY_SEPARATOR . $medium_large['path']) );
// the thumb url should point to the thumbnail intermediate
$this->assertEquals( $thumb['url'], wp_get_attachment_thumb_url($id) );
@@ -134,6 +153,11 @@ class Tests_Post_Attachments extends WP_UnitTestCase {
$this->assertEquals( 400, $downsize[1] );
$this->assertEquals( 602, $downsize[2] );
$downsize = image_downsize($id, 'medium_large');
$this->assertEquals( '2007-06-17DSC_4173-600x904.jpg', basename($downsize[0]) );
$this->assertEquals( 600, $downsize[1] );
$this->assertEquals( 904, $downsize[2] );
$downsize = image_downsize($id, 'full');
$this->assertEquals( '2007-06-17DSC_4173.jpg', basename($downsize[0]) );
$this->assertEquals( 680, $downsize[1] );
@@ -148,6 +172,9 @@ class Tests_Post_Attachments extends WP_UnitTestCase {
update_option('medium_size_w', 400);
update_option('medium_size_h', 0);
update_option('medium_large_size_w', 600);
update_option('medium_large_size_h', 0);
$filename = ( DIR_TESTDATA.'/images/2007-06-17DSC_4173.JPG' );
$contents = file_get_contents($filename);
@@ -166,6 +193,10 @@ class Tests_Post_Attachments extends WP_UnitTestCase {
$this->assertEquals( '2007-06-17DSC_4173-400x602.jpg', $medium['file'] );
$this->assertTrue( is_file($uploads['basedir'] . DIRECTORY_SEPARATOR . $medium['path']) );
$medium_large = image_get_intermediate_size($id, 'medium_large');
$this->assertEquals( '2007-06-17DSC_4173-600x904.jpg', $medium_large['file'] );
$this->assertTrue( is_file($uploads['basedir'] . DIRECTORY_SEPARATOR . $medium_large['path']) );
$meta = wp_get_attachment_metadata($id);
$original = $meta['file'];
$this->assertTrue( is_file($uploads['basedir'] . DIRECTORY_SEPARATOR . $original) );
@@ -175,6 +206,7 @@ class Tests_Post_Attachments extends WP_UnitTestCase {
$this->assertFalse( is_file($thumb['path']) );
$this->assertFalse( is_file($medium['path']) );
$this->assertFalse( is_file($medium_large['path']) );
$this->assertFalse( is_file($original) );
}