function test_upgradeConfig() { $oPkgMgr = new OX_PluginManager(); $zipFile = $this->aUpload['tmp_name']; // version 2 package should be installed // put the version 3 package in place $this->_switchFiles(3); $this->assertTrue($oPkgMgr->_checkPackageContents($this->packageName . '.xml', $zipFile, true)); $aPlugin = $oPkgMgr->aParse['plugins'][1]; $this->assertEqual($aPlugin['version'], '0.0.3'); // Test 2 : upgrade to version 0.0.3 ; this involves 0 upgrade or schema packages, just a version stamp $oUpgrader = new OX_Plugin_UpgradeComponentGroup($aPlugin, $oPkgMgr); $this->assertTrue($oUpgrader->canUpgrade()); $this->assertEqual($oUpgrader->existing_installation_status, OA_STATUS_CAN_UPGRADE); // decompress the zip file, 2nd param indicates overwrite previous files $oPkgMgr->_unpack($this->aUpload, true); // now that the files are in place, the upgrader can do a schema integrity check $this->assertTrue($oUpgrader->canUpgrade()); $this->assertEqual($oUpgrader->existing_installation_status, OA_STATUS_CAN_UPGRADE); $this->assertEqual(count($oUpgrader->aPackageList), 0); $aConf =& $GLOBALS['_MAX']['CONF'][$aPlugin['name']]; // _upgradeConfig calls _upgradeSettings() and _upgradePreferences // Test 1 Settings // set non-default settings $aConf['setting1'] = 'testval1'; $aConf['setting2'] = 'testval2'; $aConf['setting3'] = 'testval3'; $this->assertTrue($oUpgrader->_upgradeSettings()); // old settings should have original values // new setting should have default value // deprecated setting should no longer exist $aConf =& $GLOBALS['_MAX']['CONF'][$aPlugin['name']]; $this->assertEqual(count($aConf), 3); $this->assertEqual($aConf['setting1'], 'testval1'); $this->assertEqual($aConf['setting2'], 'testval2'); $this->assertFalse(isset($aConf['setting3'])); $this->assertEqual($aConf['setting4'], 'setval4'); // Test 2 Preferences $oDbh = OA_DB::singleton(); $qryPrefs = 'preference_name LIKE ' . $oDbh->quote('%' . $prefix . '%'); $prefix = $aPlugin['name'] . '_'; $doPreferences = OA_Dal::factoryDO('preferences'); $doPreferences->whereAdd($qryPrefs); $doPreferences->find(); while ($doPreferences->fetch()) { $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc'); $doAccount_Preference_Assoc->whereAdd('preference_id = ' . $doPreferences->preference_id); $aPrefsOld[$doPreferences->preference_name] = array('permission' => $doPreferences->account_type, 'id' => $doPreferences->preference_id, 'acct_assoc' => $doAccount_Preference_Assoc->getAll()); } $this->assertEqual(count($aPrefsOld), 2); $this->assertFalse(isset($aPrefsOld[$prefix . 'preference3'])); $this->assertTrue(isset($aPrefsOld[$prefix . 'preference1'])); $this->assertTrue(isset($aPrefsOld[$prefix . 'preference2'])); $this->assertEqual($aPrefsOld[$prefix . 'preference1']['permission'], 'MANAGER'); $this->assertEqual($aPrefsOld[$prefix . 'preference2']['permission'], 'ADMIN'); $this->assertTrue(isset($aPrefsOld[$prefix . 'preference1']['acct_assoc'])); $this->assertTrue(isset($aPrefsOld[$prefix . 'preference2']['acct_assoc'])); $this->assertEqual($aPrefsOld[$prefix . 'preference1']['acct_assoc'][0]['account_id'], '0'); $this->assertEqual($aPrefsOld[$prefix . 'preference2']['acct_assoc'][0]['account_id'], '0'); $this->assertTrue($oUpgrader->_upgradePreferences()); $doPreferences = OA_Dal::factoryDO('preferences'); $doPreferences->whereAdd($qryPrefs); $doPreferences->find(); while ($doPreferences->fetch()) { $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc'); $doAccount_Preference_Assoc->whereAdd('preference_id = ' . $doPreferences->preference_id); $aPrefsNew[$doPreferences->preference_name] = array('permission' => $doPreferences->account_type, 'id' => $doPreferences->preference_id, 'acct_assoc' => $doAccount_Preference_Assoc->getAll()); } $this->assertEqual(count($aPrefsNew), 2); $this->assertFalse(isset($aPrefsNew[$prefix . 'preference2'])); $this->assertTrue(isset($aPrefsNew[$prefix . 'preference1'])); $this->assertTrue(isset($aPrefsNew[$prefix . 'preference3'])); $this->assertEqual($aPrefsNew[$prefix . 'preference1']['permission'], 'MANAGER'); $this->assertEqual($aPrefsNew[$prefix . 'preference3']['permission'], 'ADMIN'); $this->assertTrue(isset($aPrefsNew[$prefix . 'preference1']['acct_assoc'])); $this->assertTrue(isset($aPrefsNew[$prefix . 'preference3']['acct_assoc'])); $this->assertEqual($aPrefsNew[$prefix . 'preference1']['acct_assoc'][0]['account_id'], '0'); $this->assertEqual($aPrefsNew[$prefix . 'preference3']['acct_assoc'][0]['account_id'], '0'); $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc'); $doAccount_Preference_Assoc->preference_id = $aPrefsOld['testPlugin_preference2']['id']; $this->assertFalse($doAccount_Preference_Assoc->find()); $oPkgMgr->uninstallPackage($this->packageName); }