109 lines
3.2 KiB
PHP
109 lines
3.2 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Class EWWWIO_AGR_Tests
|
||
|
*
|
||
|
* @link https://ewww.io
|
||
|
* @package Ewww_Image_Optimizer
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* AGR (animated GIF resizing) test cases.
|
||
|
*/
|
||
|
class EWWWIO_AGR_Tests extends WP_UnitTestCase {
|
||
|
|
||
|
/**
|
||
|
* The location of the test GIF image.
|
||
|
*
|
||
|
* @var string $test_gif
|
||
|
*/
|
||
|
public static $test_gif = '';
|
||
|
|
||
|
/**
|
||
|
* Downloads test images.
|
||
|
*/
|
||
|
public static function set_up_before_class() {
|
||
|
self::$test_gif = download_url( 'https://ewwwio-test.sfo2.digitaloceanspaces.com/unit-tests/rain.gif' );
|
||
|
|
||
|
ewwwio()->set_defaults();
|
||
|
update_option( 'ewww_image_optimizer_gif_level', 10 );
|
||
|
ewwwio()->local->install_tools();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Initializes the plugin and installs the ewwwio_images table.
|
||
|
*/
|
||
|
function set_up() {
|
||
|
parent::set_up();
|
||
|
remove_filter( 'query', array( $this, '_create_temporary_tables' ) );
|
||
|
ewww_image_optimizer_install_table();
|
||
|
add_filter( 'query', array( $this, '_create_temporary_tables' ) );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Test that GD is active and Imagick is not -- otherwise our tests are bogus.
|
||
|
*/
|
||
|
function test_gd_active() {
|
||
|
$this->assertNotEmpty( \ewwwio()->gd_support() );
|
||
|
$this->assertFalse( \ewwwio()->imagick_support() );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Test local (gifsicle) AGR.
|
||
|
*/
|
||
|
function test_local_agr() {
|
||
|
$upload_gif = self::$test_gif . '.gif';
|
||
|
copy( self::$test_gif, $upload_gif );
|
||
|
$id = $this->factory->attachment->create_upload_object( $upload_gif );
|
||
|
$meta = wp_get_attachment_metadata( $id );
|
||
|
list( $file_path, $upload_path ) = ewww_image_optimizer_attachment_path( $meta, $id );
|
||
|
$thumb_path = trailingslashit( dirname( $file_path ) ) . wp_basename( $meta['sizes']['thumbnail']['file'] );
|
||
|
$this->assertTrue( ewww_image_optimizer_is_animated( $thumb_path ) );
|
||
|
|
||
|
unlink( $upload_gif );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Test API-based AGR.
|
||
|
*/
|
||
|
function test_api_agr() {
|
||
|
$upload_gif = self::$test_gif . '.gif';
|
||
|
copy( self::$test_gif, $upload_gif );
|
||
|
update_option( 'ewww_image_optimizer_cloud_key', 'abc123' );
|
||
|
update_site_option( 'ewww_image_optimizer_cloud_key', 'abc123' );
|
||
|
$id = $this->factory->attachment->create_upload_object( $upload_gif );
|
||
|
$meta = wp_get_attachment_metadata( $id );
|
||
|
list( $file_path, $upload_path ) = ewww_image_optimizer_attachment_path( $meta, $id );
|
||
|
$thumb_path = trailingslashit( dirname( $file_path ) ) . wp_basename( $meta['sizes']['thumbnail']['file'] );
|
||
|
$this->assertTrue( ewww_image_optimizer_is_animated( $thumb_path ) );
|
||
|
|
||
|
update_option( 'ewww_image_optimizer_cloud_key', '' );
|
||
|
update_site_option( 'ewww_image_optimizer_cloud_key', '' );
|
||
|
unlink( $upload_gif );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Cleans up ewwwio_images table.
|
||
|
*/
|
||
|
function tear_down() {
|
||
|
global $wpdb;
|
||
|
remove_filter( 'query', array( $this, '_drop_temporary_tables' ) );
|
||
|
$wpdb->query( "DROP TABLE IF EXISTS $wpdb->ewwwio_images" );
|
||
|
add_filter( 'query', array( $this, '_drop_temporary_tables' ) );
|
||
|
delete_option( 'ewww_image_optimizer_version' );
|
||
|
delete_option( 'ewww_image_optimizer_cloud_key' );
|
||
|
delete_site_option( 'ewww_image_optimizer_version' );
|
||
|
delete_site_option( 'ewww_image_optimizer_cloud_key' );
|
||
|
parent::tear_down();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Cleans up the temp images.
|
||
|
*/
|
||
|
public static function tear_down_after_class() {
|
||
|
if ( ewwwio_is_file( self::$test_gif ) ) {
|
||
|
unlink( self::$test_gif );
|
||
|
}
|
||
|
ewww_image_optimizer_remove_binaries();
|
||
|
}
|
||
|
}
|