WordPress.org

Make WordPress Core

Ticket #22985: media_tests.patch

File media_tests.patch, 2.9 KB (added by bananastalktome, 5 years ago)
  • tests/ajax/MediaEdit.php

     
     1<?php
     2/**
     3 * Admin ajax functions to be tested
     4 */
     5require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
     6
     7/**
     8 * Testing ajax media editing
     9 *
     10 * @package    WordPress
     11 * @subpackage UnitTests
     12 * @since      3.5.0
     13 * @group      ajax
     14 */
     15class Tests_Ajax_MediaEdit extends WP_Ajax_UnitTestCase {
     16
     17        /**
     18         * List of media thumbnail ids
     19         * @var array
     20         */
     21        protected $_ids = array();
     22       
     23        /**
     24         * Set up the test fixture.
     25         */
     26        public function setUp() {
     27                parent::setUp();
     28        }
     29
     30        /**
     31         * Tear down the test fixture.
     32         */
     33        public function tearDown() {
     34                // Cleanup
     35                foreach ($this->_ids as $id){
     36                        wp_delete_attachment($id, true);
     37                }
     38
     39                $uploads = wp_upload_dir();
     40                foreach ( scandir( $uploads['basedir'] ) as $file )
     41                        _rmdir( $uploads['basedir'] . '/' . $file );
     42               
     43                parent::tearDown();
     44        }
     45       
     46        /**
     47         * Function snagged from ./tests/post/attachments.php
     48         */
     49        function _make_attachment($upload, $parent_post_id = -1) {
     50                $type = '';
     51                if ( !empty($upload['type']) ) {
     52                        $type = $upload['type'];
     53                } else {
     54                        $mime = wp_check_filetype( $upload['file'] );
     55                        if ($mime)
     56                                $type = $mime['type'];
     57                }
     58
     59                $attachment = array(
     60                        'post_title' => basename( $upload['file'] ),
     61                        'post_content' => '',
     62                        'post_type' => 'attachment',
     63                        'post_parent' => $parent_post_id,
     64                        'post_mime_type' => $type,
     65                        'guid' => $upload[ 'url' ],
     66                );
     67
     68                // Save the data
     69                $id = wp_insert_attachment( $attachment, $upload[ 'file' ], $parent_post_id );
     70                wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $upload['file'] ) );
     71                return $this->_ids[] = $id;
     72        }
     73
     74        /**
     75         * @ticket 22985
     76         */
     77        public function testCropImageThumbnail() {
     78                include_once( ABSPATH . 'wp-admin/includes/image-edit.php' );
     79
     80                $filename = DIR_TESTDATA . '/images/canola.jpg';
     81                $contents = file_get_contents($filename);
     82
     83                $upload = wp_upload_bits(basename($filename), null, $contents);
     84                $id = $this->_make_attachment($upload);
     85               
     86                $_REQUEST['action'] = 'image-editor';
     87                $_REQUEST['context'] = 'edit-attachment';
     88                $_REQUEST['postid'] = $id;
     89                $_REQUEST['target'] = 'thumbnail';
     90                $_REQUEST['do'] = 'save';
     91                $_REQUEST['history'] = '[{"c":{"x":5,"y":8,"w":289,"h":322}}]';
     92               
     93                $media_meta = wp_get_attachment_metadata($id);
     94                $this->assertArrayHasKey('sizes', $media_meta, 'attachment should have size data');
     95                $this->assertArrayHasKey('medium', $media_meta['sizes'], 'attachment should have data for medium size');
     96                $ret = wp_save_image($id);
     97               
     98                $media_meta = wp_get_attachment_metadata($id);
     99                $this->assertArrayHasKey('sizes', $media_meta, 'cropped attachment should have size data');
     100                $this->assertArrayHasKey('medium', $media_meta['sizes'], 'cropped attachment should have data for medium size');
     101        }
     102}