1, 'cron_referer' => 0, 'referer' => array( 'example.net' => 0, 'example.com' => 1, ), 'referer_regexp' => 0, 'version' => 1.3, ); // Set options in mock. update_option( 'statify-blacklist', $options13 ); // Execute upgrade. StatifyBlacklist_System::upgrade(); // Retrieve updated options. $options_updated = get_option( 'statify-blacklist' ); // Verify size against default options (no junk left). $this->assertEquals( 5, count( $options_updated ) ); $this->assertEquals( 4, count( $options_updated['referer'] ) ); $this->assertEquals( 4, count( $options_updated['target'] ) ); $this->assertEquals( 2, count( $options_updated['ip'] ) ); $this->assertEquals( 3, count( $options_updated['ua'] ) ); $this->assertEquals( 1.6, $options_updated['version'] ); // Verify that original attributes are unchanged. $this->assertEquals( $options13['active_referer'], $options_updated['referer']['active'] ); $this->assertEquals( $options13['cron_referer'], $options_updated['referer']['cron'] ); $this->assertEquals( $options13['referer'], $options_updated['referer']['blacklist'] ); $this->assertEquals( $options13['referer_regexp'], $options_updated['referer']['regexp'] ); // Verify that new attributes are present in config and filled with default values (disabled, empty). $this->assertEquals( 0, $options_updated['target']['active'] ); $this->assertEquals( 0, $options_updated['target']['cron'] ); $this->assertEquals( 0, $options_updated['target']['regexp'] ); $this->assertEquals( array(), $options_updated['target']['blacklist'] ); $this->assertEquals( 0, $options_updated['ip']['active'] ); $this->assertEquals( array(), $options_updated['ip']['blacklist'] ); $this->assertEquals( 0, $options_updated['ua']['active'] ); $this->assertEquals( 0, $options_updated['ua']['regexp'] ); $this->assertEquals( array(), $options_updated['ua']['blacklist'] ); // Verify that version number has changed to current release. $this->assertEquals( StatifyBlacklist::VERSION_MAIN, $options_updated['version'] ); // Test upgrade of incorrectly stored user agent list in 1.6. $options_updated['version'] = 1.4; $options_updated['ua']['blacklist'] = array( 'user agent 1', 'user agent 2' ); update_option( 'statify-blacklist', $options_updated ); // Execute upgrade. StatifyBlacklist_System::upgrade(); // Retrieve updated options. $options_updated = get_option( 'statify-blacklist' ); $this->assertEquals( array( 'user agent 1' => 0, 'user agent 2' => 1, ), $options_updated['ua']['blacklist'] ); $this->assertEquals( 1.6, $options_updated['version'] ); $this->assertEquals( StatifyBlacklist::VERSION_MAIN, $options_updated['version'] ); } }