コード例 #1
0
 public static function setUpBeforeClass()
 {
     parent::setUpBeforeClass();
     self::$testConfig = TestConfig::createDefaultConfig();
     self::$siteConfig = self::$testConfig->testSite;
     self::$cloneSiteConfig = self::getCloneSiteConfig(self::$siteConfig);
 }
コード例 #2
0
 public static function setUpBeforeClass()
 {
     parent::setUpBeforeClass();
     self::$testConfig = TestConfig::createDefaultConfig();
     self::$wpAutomation = new WpAutomation(self::$testConfig->testSite, self::$testConfig->wpCliVersion);
     self::setUpSite();
     DBAsserter::assertFilesEqualDatabase();
     $yamlDir = self::$wpAutomation->getPluginsDir() . '/versionpress/.versionpress';
     $schemaFile = $yamlDir . '/schema.yml';
     $actionsFile = $yamlDir . '/actions.yml';
     $shortcodeFile = $yamlDir . '/shortcodes.yml';
     /** @var $wp_db_version */
     require self::$wpAutomation->getAbspath() . '/wp-includes/version.php';
     if (!function_exists('get_shortcode_regex')) {
         require_once self::$wpAutomation->getAbspath() . '/wp-includes/shortcodes.php';
     }
     self::$schemaInfo = new DbSchemaInfo([$schemaFile], self::$testConfig->testSite->dbTablePrefix, $wp_db_version);
     $actionsInfoProvider = new ActionsInfoProvider([$actionsFile]);
     $changeInfoFactory = new ChangeInfoFactory(self::$schemaInfo, $actionsInfoProvider);
     $dbHost = self::$testConfig->testSite->dbHost;
     $dbUser = self::$testConfig->testSite->dbUser;
     $dbPassword = self::$testConfig->testSite->dbPassword;
     $dbName = self::$testConfig->testSite->dbName;
     $wpdb = new wpdb($dbUser, $dbPassword, $dbName, $dbHost);
     $wpdb->set_prefix(self::$testConfig->testSite->dbTablePrefix);
     self::$database = new Database($wpdb);
     $shortcodesInfo = new ShortcodesInfo([$shortcodeFile]);
     self::$vpidRepository = new VpidRepository(self::$database, self::$schemaInfo);
     self::$shortcodesReplacer = new ShortcodesReplacer($shortcodesInfo, self::$vpidRepository);
     $vpdbPath = self::$wpAutomation->getVpdbDir();
     self::$tableSchemaRepository = new TableSchemaStorage(self::$database, $vpdbPath . '/.schema');
     self::$storageFactory = new StorageFactory($vpdbPath, self::$schemaInfo, self::$database, [], $changeInfoFactory, self::$tableSchemaRepository);
     self::$urlReplacer = new AbsoluteUrlReplacer(self::$testConfig->testSite->url);
 }
コード例 #3
0
 private static function staticInitialization()
 {
     self::$testConfig = TestConfig::createDefaultConfig();
     self::$wpAutomation = new WpAutomation(self::$testConfig->testSite, self::$testConfig->wpCliVersion);
     $yamlDir = self::$wpAutomation->getPluginsDir() . '/versionpress/.versionpress';
     $schemaFile = $yamlDir . '/schema.yml';
     $shortcodeFile = $yamlDir . '/shortcodes.yml';
     /** @var $wp_db_version */
     require self::$wpAutomation->getAbspath() . '/wp-includes/version.php';
     if (!function_exists('get_shortcode_regex')) {
         require_once self::$wpAutomation->getAbspath() . '/wp-includes/shortcodes.php';
     }
     self::$schemaInfo = new DbSchemaInfo([$schemaFile], self::$testConfig->testSite->dbTablePrefix, $wp_db_version);
     $rawTaxonomies = self::$wpAutomation->runWpCliCommand('taxonomy', 'list', ['format' => 'json', 'fields' => 'name']);
     $taxonomies = array_column(json_decode($rawTaxonomies, true), 'name');
     $dbHost = self::$testConfig->testSite->dbHost;
     $dbUser = self::$testConfig->testSite->dbUser;
     $dbPassword = self::$testConfig->testSite->dbPassword;
     $dbName = self::$testConfig->testSite->dbName;
     $dbPrefix = self::$testConfig->testSite->dbTablePrefix;
     self::$database = new \mysqli($dbHost, $dbUser, $dbPassword, $dbName);
     self::$wpdb = new \wpdb($dbUser, $dbPassword, $dbName, $dbHost);
     self::$wpdb->set_prefix($dbPrefix);
     self::$vp_database = new Database(self::$wpdb);
     $shortcodesInfo = new ShortcodesInfo([$shortcodeFile]);
     self::$vpidRepository = new VpidRepository(self::$vp_database, self::$schemaInfo);
     self::$shortcodesReplacer = new ShortcodesReplacer($shortcodesInfo, self::$vpidRepository);
     $vpdbPath = self::$wpAutomation->getVpdbDir();
     $tableSchemaRepository = new TableSchemaStorage(self::$vp_database, $vpdbPath . '/.schema');
     self::$storageFactory = new StorageFactory($vpdbPath, self::$schemaInfo, self::$vp_database, $taxonomies, null, $tableSchemaRepository);
     require self::$wpAutomation->getPluginsDir() . '/versionpress/.versionpress/hooks.php';
     self::defineGlobalVariables();
 }
コード例 #4
0
 /**
  * @test
  */
 public function runAutomation()
 {
     $testConfig = TestConfig::createDefaultConfig();
     $wpAutomation = new WpAutomation($testConfig->testSite, $testConfig->wpCliVersion);
     $wpAutomation->setUpSite();
     $wpAutomation->copyVersionPressFiles();
     $wpAutomation->activateVersionPress();
     $wpAutomation->runWpCliCommand('vp', 'config', ['VP_PROJECT_ROOT', '.']);
 }
コード例 #5
0
 /**
  * Makes sure some static properties are initialized. Called from constructor and from static methods
  * that might run before it.
  */
 private static function staticInitialization()
 {
     if (self::$staticInitializationDone) {
         return;
     }
     if (!self::$testConfig) {
         self::$testConfig = TestConfig::createDefaultConfig();
         self::$wpAdminPath = self::$testConfig->testSite->wpAdminPath;
     }
     if (!self::$wpAutomation) {
         self::$wpAutomation = new WpAutomation(self::$testConfig->testSite, self::$testConfig->wpCliVersion);
     }
     self::$staticInitializationDone = true;
 }
コード例 #6
0
 private function staticInitialization()
 {
     self::$testConfig = TestConfig::createDefaultConfig();
     $class = get_called_class();
     $workerType = implode('', array_map('ucfirst', explode('-', self::$testConfig->end2endTestType)));
     $workerClass = $class . $workerType . 'Worker';
     if (!class_exists($workerClass)) {
         self::$skipAllBecauseOfMissingWorker = true;
         return;
     }
     $worker = new $workerClass(self::$testConfig);
     $propertyReflection = new \ReflectionProperty($class, 'worker');
     $propertyReflection->setAccessible(true);
     $propertyReflection->setValue(null, $worker);
 }
コード例 #7
0
<?php

use Tracy\Debugger;
use VersionPress\Tests\Selenium\SeleniumTestCase;
use VersionPress\Tests\Utils\TestConfig;
use VersionPress\Tests\Utils\TestRunnerOptions;
require_once __DIR__ . '/../vendor/autoload.php';
Debugger::enable(Debugger::DEVELOPMENT, __DIR__ . '/../log');
TestRunnerOptions::getInstance()->configureInstance(["forceSetup" => ["before-class", "before-suite", "just-vp-files"]]);
TestConfig::$defaultConfigFile = __DIR__ . '/test-config.yml';
PHPUnit_Extensions_Selenium2TestCase::shareSession(true);
if (TestRunnerOptions::getInstance()->forceSetup == "before-suite") {
    echo "Setting up site before suite";
    SeleniumTestCase::setUpSite(true);
    echo "\n";
}
コード例 #8
0
 public function __construct()
 {
     self::$testConfig = TestConfig::createDefaultConfig();
     self::$wpAutomation = new WpAutomation(self::$testConfig->testSite, self::$testConfig->wpCliVersion);
 }
コード例 #9
0
 /**
  * @test
  * @depends cancelDeactivationReturnsToPluginPage
  */
 public function confirmingDeactivationFullyDeactivatesVersionPress()
 {
     $this->byCssSelector('.deactivate a[href*=\'versionpress\']')->click();
     if (WpVersionComparer::compare(TestConfig::createDefaultConfig()->testSite->wpVersion, '4.2-beta1') < 0) {
         $deactivationUrl = 'versionpress/admin/deactivate.php';
     } else {
         $deactivationUrl = 'versionpress%2Fadmin%2Fdeactivate.php';
     }
     $this->assertContains($deactivationUrl, $this->url());
     $this->byCssSelector('#confirm_deactivation')->click();
     $this->assertContains('wp-admin/plugins.php', $this->url());
     $this->assertFileNotExists(self::$wpAutomation->getAbspath() . '/wp-includes/wpdb.php.original');
     $this->assertFileExists(self::$testConfig->testSite->path . '/.git');
 }