From b947cad868e66573ddce2706f9eb0644bc07b0a1 Mon Sep 17 00:00:00 2001 From: Jeremy Felt Date: Wed, 7 Oct 2015 06:14:14 +0000 Subject: [PATCH] Tests: Improve tests for `is_upload_space_available()`. * Move all tests to a new 'multisite/isUploadSpaceAvailable.php' * Store original `blog_upload_space` values before the class is loaded. * Restore these values after each test tear down to avoid pollution. Commit to testing `is_upload_space_available()` itself by always filtering the amount of space used through `pre_get_space_used`. This allows us to sanely test without worrying about the local environment. In the future, we may be able to remove some of these tests as `get_upload_space_available()` tests are built out and reliable. See #34037. git-svn-id: https://develop.svn.wordpress.org/trunk@34899 602fd350-edb4-49c9-b593-d223f7449a82 --- .../multisite/isUploadSpaceAvailable.php | 127 ++++++++++++++++++ tests/phpunit/tests/multisite/site.php | 49 ------- 2 files changed, 127 insertions(+), 49 deletions(-) create mode 100644 tests/phpunit/tests/multisite/isUploadSpaceAvailable.php diff --git a/tests/phpunit/tests/multisite/isUploadSpaceAvailable.php b/tests/phpunit/tests/multisite/isUploadSpaceAvailable.php new file mode 100644 index 0000000000..36be275944 --- /dev/null +++ b/tests/phpunit/tests/multisite/isUploadSpaceAvailable.php @@ -0,0 +1,127 @@ +suppress = $wpdb->suppress_errors(); + + update_site_option( 'upload_space_check_disabled', false ); + } + + public function tearDown() { + global $wpdb; + + /** + * Reset the two `blog_upload_space` options to their original values so + * they can be relied on in other test classes. + */ + update_site_option( 'blog_upload_space', self::$original_site_blog_upload_space ); + update_option( 'blog_upload_space', self::$original_blog_upload_space ); + + $wpdb->suppress_errors( $this->suppress ); + parent::tearDown(); + } + + /** + * A default of 100MB is used when no `blog_upload_space` option + * exists at the site or network level. + */ + public function test_is_upload_space_available_default() { + delete_option( 'blog_upload_space' ); + delete_site_option( 'blog_upload_space' ); + + add_filter( 'pre_get_space_used', array( $this, '_filter_space_used_small' ) ); + $available = is_upload_space_available(); + remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used_small' ) ); + + $this->assertTrue( $available ); + } + + public function test_is_upload_space_available_check_disabled() { + update_site_option( 'blog_upload_space', 10 ); + update_site_option( 'upload_space_check_disabled', true ); + + add_filter( 'pre_get_space_used', array( $this, '_filter_space_used_large' ) ); + $available = is_upload_space_available(); + remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used_large' ) ); + + $this->assertTrue( $available ); + } + + public function test_is_upload_space_available_space_used_is_less_then_allowed() { + update_option( 'blog_upload_space', 350 ); + + add_filter( 'pre_get_space_used', array( $this, '_filter_space_used_small' ) ); + $available = is_upload_space_available(); + remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used_small' ) ); + + $this->assertTrue( $available ); + } + + function test_is_upload_space_available_space_used_is_more_than_allowed() { + update_option( 'blog_upload_space', 350 ); + + add_filter( 'pre_get_space_used', array( $this, '_filter_space_used_large' ) ); + $available = is_upload_space_available(); + remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used_large' ) ); + + $this->assertFalse( $available ); + } + + /** + * More comprehensive testing a 0 condition is handled in the tests + * for `get_space_allowed()`. We cover one scenario here. + */ + function test_is_upload_space_available_upload_space_0_defaults_to_100() { + update_option( 'blog_upload_space', 0 ); + + add_filter( 'pre_get_space_used', array( $this, '_filter_space_used_small' ) ); + $available = is_upload_space_available(); + remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used_small' ) ); + + $this->assertTrue( $available ); + } + + function test_is_upload_space_available_upload_space_negative() { + update_site_option( 'blog_upload_space', -1 ); + + add_filter( 'pre_get_space_used', array( $this, '_filter_space_used_small' ) ); + $available = is_upload_space_available(); + remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used_small' ) ); + + $this->assertFalse( $available ); + } + + function _filter_space_used_large() { + return 10000000; + } + + function _filter_space_used_small() { + return 10; + } +} + +endif; \ No newline at end of file diff --git a/tests/phpunit/tests/multisite/site.php b/tests/phpunit/tests/multisite/site.php index 46f5f92813..c15f502cd4 100644 --- a/tests/phpunit/tests/multisite/site.php +++ b/tests/phpunit/tests/multisite/site.php @@ -1016,55 +1016,6 @@ class Tests_Multisite_Site extends WP_UnitTestCase { $this->assertTrue( upload_is_user_over_quota( false ) ); } - function test_is_upload_space_available_default() { - $this->assertTrue( is_upload_space_available() ); - } - - function test_is_upload_space_available_check_disabled() { - update_site_option( 'upload_space_check_disabled', true ); - $this->assertTrue( is_upload_space_available() ); - } - - function test_is_upload_space_available_space_used_is_less() { - update_site_option( 'upload_space_check_disabled', false ); - update_site_option( 'blog_upload_space', 350 ); - add_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) ); - $available = is_upload_space_available(); - remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) ); - - $this->assertTrue( is_upload_space_available() ); - $this->assertEquals( - $available, - self::$space_used < 350 - ); - } - - function test_is_upload_space_available_space_used_is_more() { - update_site_option( 'upload_space_check_disabled', false ); - update_site_option( 'blog_upload_space', 250 ); - add_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) ); - $available = is_upload_space_available(); - $used = get_space_used(); - remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) ); - - $this->assertEquals( - $available, - $used < 250 - ); - } - - function test_is_upload_space_available_upload_space_0() { - update_site_option( 'upload_space_check_disabled', false ); - update_site_option( 'blog_upload_space', 0 ); - $this->assertTrue( is_upload_space_available() ); - } - - function test_is_upload_space_available_upload_space_negative() { - update_site_option( 'upload_space_check_disabled', false ); - update_site_option( 'blog_upload_space', -1 ); - $this->assertFalse( is_upload_space_available() ); - } - /** * Test the primary purpose of get_blog_post(), to retrieve a post from * another site on the network.