/**
  * internal function to return an initialised db_upgrade object for testing
  *
  * @param string $timing
  * @return object
  */
 function _newDBUpgradeObject($timing = 'constructive')
 {
     $oDB_Upgrade->initMDB2Schema();
     $oDB_Upgrade->timingStr = $timing;
     $oDB_Upgrade->timingInt = $timing ? 0 : 1;
     $oDB_Upgrade->prefix = $this->prefix;
     $oDB_Upgrade->schema = 'tables_core_326';
     $oDB_Upgrade->versionFrom = 1;
     $oDB_Upgrade->versionTo = 2;
     $oDB_Upgrade->logFile = MAX_PATH . "/var/test.log";
     $oDBAuditor = new OA_DB_UpgradeAuditor();
     $this->assertTrue($oDBAuditor->init($oDB_Upgrade->oSchema->db), 'error initialising upgrade auditor, probable error creating database action table');
     $oDBAuditor->setKeyParams(array('schema_name' => $oDB_Upgrade->schema, 'version' => $oDB_Upgrade->versionTo, 'timing' => $oDB_Upgrade->timingInt));
     $oDB_Upgrade->oAuditor =& $oDBAuditor;
     return $oDB_Upgrade;
 }
 function upgradeToVersion($version)
 {
     Mock::generatePartial('OA_UpgradeLogger', $mockLogger = 'OA_UpgradeLogger' . rand(), array('logOnly', 'logError', 'log'));
     $oLogger = new $mockLogger($this);
     $oLogger->setReturnValue('logOnly', true);
     $oLogger->setReturnValue('logError', true);
     $oLogger->setReturnValue('log', true);
     $this->oDBUpgrader = new OA_DB_Upgrade($oLogger);
     $this->oDBUpgrader->logFile = MAX_PATH . '/var/DB_Upgrade.test.log';
     $this->oDBUpgrader->initMDB2Schema();
     $auditor = new OA_DB_UpgradeAuditor();
     $this->oDBUpgrader->oAuditor =& $auditor;
     $this->assertTrue($auditor->init($this->oDBUpgrader->oSchema->db), 'error initialising upgrade auditor, probable error creating database action table');
     // execute all database upgrade actions for a given schema version
     // constructive first
     $this->oDBUpgrader->init('constructive', 'tables_core', $version);
     $this->oDBUpgrader->doBackups = false;
     $this->assertTrue($this->oDBUpgrader->upgrade(), 'constructive');
     // use same changeset, switch timing only to execute destructive
     $this->oDBUpgrader->init('destructive', 'tables_core', $version, true);
     $this->assertTrue($this->oDBUpgrader->upgrade(), 'destructive');
 }