function testUpdateVariableCode() { $this->varName = 'my_var'; $this->defaultVarCode = "var {$this->varName} = escape(\\'%%" . strtoupper($this->varName) . "_VALUE%%\\')"; // Create a tracker with default variableMethod $doTrackers = OA_Dal::factoryDO('trackers'); $trackerId = DataGenerator::generateOne($doTrackers); $doVariables = OA_Dal::factoryDO('variables'); $doVariables->trackerid = $trackerId; $doVariables->name = $this->varName; $doVariables->variablecode = $this->defaultVarCode; $aVariableIds = DataGenerator::generate($doVariables, 2); // JS $this->assertTrue($this->dalVariables->updateVariableCode($trackerId, DataObjects_Trackers::TRACKER_VARIABLE_METHOD_JS)); $this->assertVariableCode($trackerId, DataObjects_Trackers::TRACKER_VARIABLE_METHOD_JS); // DOM $this->assertTrue($this->dalVariables->updateVariableCode($trackerId, DataObjects_Trackers::TRACKER_VARIABLE_METHOD_DOM)); $this->assertVariableCode($trackerId, DataObjects_Trackers::TRACKER_VARIABLE_METHOD_DOM); // Custom $this->customCode = 'custom'; $doVariables->variablecode = $this->customCode; $doVariables->whereAdd('1=1'); $doVariables->update(DB_DATAOBJECT_WHEREADD_ONLY); $this->assertTrue($this->dalVariables->updateVariableCode($trackerId, DataObjects_Trackers::TRACKER_VARIABLE_METHOD_CUSTOM)); $this->assertVariableCode($trackerId, DataObjects_Trackers::TRACKER_VARIABLE_METHOD_CUSTOM); // Default $this->assertTrue($this->dalVariables->updateVariableCode($trackerId)); $this->assertVariableCode($trackerId); }
function &staticGetApi($createDefaultManager = true) { $oApi =& $GLOBALS['_STATIC']['staticGetApi']; if (empty($oApi)) { $doAccounts = OA_Dal::factoryDO('accounts'); $doAccounts->account_type = OA_ACCOUNT_ADMIN; $adminAccountId = DataGenerator::generateOne($doAccounts); if ($createDefaultManager) { $doAgency = OA_Dal::factoryDO('agency'); $doAgency->name = 'Default Manager'; $agencyId = DataGenerator::generateOne($doAgency); $doAgency = OA_Dal::staticGetDO('agency', $agencyId); $managerAccountId = $doAgency->account_id; } $doUsers = OA_Dal::factoryDO('users'); $doUsers->username = '******' . md5(uniqid('', true)); $doUsers->password = md5('secret'); $doUsers->default_account_id = $createDefaultManager ? $managerAccountId : $adminAccountId; $userId = DataGenerator::generateOne($doUsers); $doAUA = OA_Dal::factoryDO('account_user_assoc'); $doAUA->account_id = $adminAccountId; $doAUA->user_id = $userId; DataGenerator::generateOne($doAUA); $oApi = new Mocked_OA_Api_Xmlrpc($doUsers->username, 'secret'); } return $oApi; }
/** * Tests the timestamps are updated correctly. * * Test 1: Tests the current timestamp is inserted for a new image. * Test 2: Tests the timestamp is updated when an image is updated. * */ function testUpdate() { // Test 1 // Get the start time of the test $start = time(); sleep(1); // Insert an image $doImages = OA_Dal::factoryDO('images'); $doImages->filename = 'foo.jpg'; $doImages->contents = ''; DataGenerator::generateOne($doImages); // Get the image out of the DB $doImages = OA_Dal::staticGetDO('images', 'filename', 'foo.jpg'); // Check the timestamp is > time at start of test and <= current time // Deal with MySQL 4.0 timestamps if (preg_match('/^(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)$/', $doImages->t_stamp, $m)) { $doImages->t_stamp = "{$m[1]}-{$m[2]}-{$m[3]} {$m[4]}:{$m[5]}:{$m[6]}"; } $actual = strtotime($doImages->t_stamp); $this->assertTrue($actual > $start && $actual <= time()); // Test 2 // Update the image $doImages->contents = '1'; sleep(1); $doImages->update(); // Get the image out of the DB $doImages = OA_Dal::staticGetDO('images', 'filename', 'foo.jpg'); $oldTime = $actual; // Deal with MySQL 4.0 timestamps if (preg_match('/^(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)$/', $doImages->t_stamp, $m)) { $doImages->t_stamp = "{$m[1]}-{$m[2]}-{$m[3]} {$m[4]}:{$m[5]}:{$m[6]}"; } $actual = strtotime($doImages->t_stamp); $this->assertTrue($actual > $oldTime && $actual <= time()); }
function testUpdateWhereOne() { $this->initTables(array('campaigns', 'trackers')); $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->campaignname = 'First'; $doCampaigns->views = 10; $campaignId1 = DataGenerator::generateOne($doCampaigns); $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->campaignname = 'Third'; $doCampaigns->views = 30; $campaignId2 = DataGenerator::generateOne($doCampaigns); $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->campaignname = 'Fifth'; $doCampaigns->views = 50; $campaignId3 = DataGenerator::generateOne($doCampaigns); $cUpdated = OA_DB_Sql::updateWhereOne('campaigns', 'campaignid', $campaignId2, array('campaignname' => 'Second', 'views' => 20)); $this->assertEqual(1, $cUpdated); $doCampaigns = OA_Dal::staticGetDO('campaigns', $campaignId2); $this->assertEqual('Second', $doCampaigns->campaignname); $this->assertEqual(20, $doCampaigns->views); $doCampaigns = OA_Dal::staticGetDO('campaigns', $campaignId1); $this->assertEqual('First', $doCampaigns->campaignname); $this->assertEqual('10', $doCampaigns->views); $aConf = $GLOBALS['_MAX']['CONF']; $this->oaTable->dropTable($aConf['table']['prefix'] . 'campaigns'); $this->oaTable->dropTable($aConf['table']['prefix'] . 'trackers'); }
function addAdZoneAssoc($adId, $zoneId, $priority) { $doAd_zone_assoc = OA_Dal::factoryDO('ad_zone_assoc'); $doAd_zone_assoc->ad_id = $adId; $doAd_zone_assoc->zone_id = $zoneId; $doAd_zone_assoc->priority = $priority; DataGenerator::generateOne($doAd_zone_assoc); }
function testDuplicate() { $GLOBALS['strCopyOf'] = 'Copy of '; // create test channel $doChannel = OA_Dal::factoryDO('channel'); $doChannel->acls_updated = '2007-04-03 19:29:54'; $channelId = DataGenerator::generateOne($doChannel, true); // create test acls $doAcls = OA_Dal::factoryDO('acls_channel'); $doAcls->channelid = $channelId; $doAcls->type = 'Client:Ip'; $doAcls->comparison = '=='; $doAcls->data = '127.0.0.1'; $doAcls->executionorder = 1; $doAcls->insert(); $doAcls = OA_Dal::factoryDO('acls_channel'); $doAcls->channelid = $channelId; $doAcls->type = 'Client:Domain'; $doAcls->comparison = '=='; $doAcls->data = 'example.com'; $doAcls->executionorder = 2; $doAcls->insert(); // duplicate $newChannelId = OA_Dal::staticDuplicate('channel', $channelId); // retrieve original and duplicate channel $doChannel = OA_Dal::staticGetDO('channel', $channelId); $doNewChannel = OA_Dal::staticGetDO('channel', $newChannelId); // assert they are not equal including primary keys - name column should not match $this->assertNotEqualDataObjects($this->stripKeys($doChannel), $this->stripKeys($doNewChannel)); // assert they are equal excluding primary keys $doChannel->name = $doNewChannel->name = null; $this->assertEqualDataObjects($this->stripKeys($doChannel), $this->stripKeys($doNewChannel)); // retrieve acls for original and duplicate channel $doAcls = OA_Dal::factoryDO('acls_channel'); $doAcls->channelid = $channelId; $doAcls->orderBy('executionorder'); if ($doAcls->find()) { while ($doAcls->fetch()) { $aAcls[] = clone $doAcls; } } $doNewAcls = OA_Dal::factoryDO('acls_channel'); $doNewAcls->channelid = $newChannelId; $doNewAcls->orderBy('executionorder'); if ($doNewAcls->find()) { while ($doNewAcls->fetch()) { $aNewAcls[] = clone $doNewAcls; } } // iterate through acls ensuring they were properly copied if ($this->assertEqual(count($aAcls), count($aNewAcls))) { for ($x = 0; $x < count($aAcls); $x++) { $this->assertNotEqual($aAcls[$x]->channelid, $aNewAcls[$x]->channelid); $this->assertEqualDataObjects($this->stripKeys($aAcls[$x]), $this->stripKeys($aNewAcls[$x])); } } }
function testDuplicate() { // Insert a tracker with some default data. $doTrackers = OA_Dal::factoryDO('trackers'); $doTrackers->trackername = 'foo'; $doTrackers->clientid = 1; $doTrackers->clickwindow = 3600; $doTrackers->status = 4; $doTrackers->type = 1; $trackerId = DataGenerator::generateOne($doTrackers, true); // Insert a variable for the tracker $doVariables = OA_Dal::factoryDO('variables'); $doVariables->trackerid = $trackerId; $doVariables->name = 'bar'; $variableId = DataGenerator::generateOne($doVariables); // Link the tracker to a campaign $doCampaignTrackers = OA_Dal::factoryDO('campaigns_trackers'); $doCampaignTrackers->campaignid = 1; $doCampaignTrackers->trackerid = $trackerId; $campaignTrackerId = DataGenerator::generateOne($doCampaignTrackers); // Duplicate the tracker $doTrackers = OA_Dal::staticGetDO('trackers', $trackerId); $newTrackerId = $doTrackers->duplicate(); $this->assertNotEmpty($newTrackerId); // Get the two trackers $doNewTrackers = OA_Dal::staticGetDO('trackers', $newTrackerId); $this->assertTrue($doNewTrackers); $doTrackers = OA_Dal::staticGetDO('trackers', $trackerId); $this->assertTrue($doTrackers); // Assert the trackers are not equal, excluding the primary key $this->assertNotEqualDataObjects($this->stripKeys($doTrackers), $this->stripKeys($doNewTrackers)); // Assert the only difference in the trackers is their description $doTrackers->trackername = $doNewTrackers->trackername = null; $this->assertEqualDataObjects($this->stripKeys($doTrackers), $this->stripKeys($doNewTrackers)); // Get the two variables $doNewVariables = OA_Dal::staticGetDO('variables', 'trackerid', $newTrackerId); $this->assertTrue($doNewVariables); $doVariables = OA_Dal::staticGetDO('variables', $variableId); $this->assertTrue($doVariables); // Assert the variables are not equal, excluding the primary key $this->assertNotEqualDataObjects($this->stripKeys($doVariables), $this->stripKeys($doNewVariables)); // Assert the only difference in the variables is the trackers they are attached to $doVariables->trackerid = $doNewVariables->trackerid = null; $this->assertEqualDataObjects($this->stripKeys($doVariables), $this->stripKeys($doNewVariables)); // Get the two campaign tracker links $doNewCampaignTrackers = OA_Dal::staticGetDO('campaigns_trackers', 'trackerid', $newTrackerId); $this->assertTrue($doNewCampaignTrackers); $doCampaignTrackers = OA_Dal::staticGetDO('campaigns_trackers', $campaignTrackerId); $this->assertTrue($doCampaignTrackers); // Assert the campaign trackers are not equal, excluding the primary key $this->assertNotEqualDataObjects($this->stripKeys($doCampaignTrackers), $this->stripKeys($doNewCampaignTrackers)); // Assert the only difference in the campaign trackers is the trackers they are attached to $doCampaignTrackers->trackerid = $doNewCampaignTrackers->trackerid = null; $this->assertEqualDataObjects($this->stripKeys($doCampaignTrackers), $this->stripKeys($doNewCampaignTrackers)); DataGenerator::cleanUp(array('campaigns', 'campaigns_trackers', 'trackers', 'variables')); }
function _insertDataSummaryAdHourly($aData) { $aData['date_time'] = sprintf('%s %02d:00:00', $aData['day'], $aData['hour']); unset($aData['day']); unset($aData['hour']); foreach ($aData as $key => $val) { $this->doDSAH->{$key} = $val; } return DataGenerator::generateOne($this->doDSAH); }
function _testImageServe($timeZone) { OA_setTimeZone($timeZone); $fileName = 'tz_test.gif'; $doImages = OA_Dal::factoryDO('images'); $doImages->filename = $fileName; $doImages->contents = ''; $this->assertTrue(DataGenerator::generateOne($doImages)); $now = time(); $this->assertTrue($timeZone == 'UTC' || date('Z', $now), 'Time zone not correctly set'); // Simulate delivery OA_setTimeZoneUTC(); $aCreative = OA_Dal_Delivery_getCreative($fileName); $this->assertTrue($aCreative); // Serve with no If-Modified-Since header unset($GLOBALS['_HEADERS']); unset($_SERVER['HTTP_IF_MODIFIED_SINCE']); MAX_imageServe($aCreative, $fileName, 'gif'); if ($this->assertEqual(count($GLOBALS['_HEADERS']), 2, 'Mismatching headers with ' . $timeZone)) { $this->assertPattern('/^Last-Modified: /i', $GLOBALS['_HEADERS'][0]); $this->assertPattern('/^Content-Type: /i', $GLOBALS['_HEADERS'][1]); } // 1-day old If-Modified-Since header unset($GLOBALS['_HEADERS']); $_SERVER['HTTP_IF_MODIFIED_SINCE'] = gmdate('D, d M Y H:i:s', $now - 86400) . ' GMT'; MAX_imageServe($aCreative, $fileName, 'gif'); if ($this->assertEqual(count($GLOBALS['_HEADERS']), 2, 'Mismatching headers with ' . $timeZone)) { $this->assertPattern('/^Last-Modified: /i', $GLOBALS['_HEADERS'][0]); $this->assertPattern('/^Content-Type: /i', $GLOBALS['_HEADERS'][1]); } // 1-day future If-Modified-Since header unset($GLOBALS['_HEADERS']); $_SERVER['HTTP_IF_MODIFIED_SINCE'] = gmdate('D, d M Y H:i:s', $now + 86400) . ' GMT'; MAX_imageServe($aCreative, $fileName, 'gif'); if ($this->assertEqual(count($GLOBALS['_HEADERS']), 1, 'Mismatching headers with ' . $timeZone)) { $this->assertPattern('/^HTTP\\/1.0 304/i', $GLOBALS['_HEADERS'][0]); } // 1 minute ago If-Modified-Since header unset($GLOBALS['_HEADERS']); $_SERVER['HTTP_IF_MODIFIED_SINCE'] = gmdate('D, d M Y H:i:s', $now - 60) . ' GMT'; MAX_imageServe($aCreative, $fileName, 'gif'); if ($this->assertEqual(count($GLOBALS['_HEADERS']), 2, 'Mismatching headers with ' . $timeZone)) { $this->assertPattern('/^Last-Modified: /i', $GLOBALS['_HEADERS'][0]); $this->assertPattern('/^Content-Type: /i', $GLOBALS['_HEADERS'][1]); } // 1 minute in future If-Modified-Since header unset($GLOBALS['_HEADERS']); $_SERVER['HTTP_IF_MODIFIED_SINCE'] = gmdate('D, d M Y H:i:s', $now + 60) . ' GMT'; MAX_imageServe($aCreative, $fileName, 'gif'); if ($this->assertEqual(count($GLOBALS['_HEADERS']), 1, 'Mismatching headers with ' . $timeZone)) { $this->assertPattern('/^HTTP\\/1.0 304/i', $GLOBALS['_HEADERS'][0]); } }
function _insertCampaignBanner() { $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->priority = 1; $doCampaigns->status = OA_ENTITY_STATUS_RUNNING; $campaignId = DataGenerator::generateOne($doCampaigns); $doBanners = OA_Dal::factoryDO('banners'); $doBanners->campaignid = $campaignId; $doBanners->status = OA_ENTITY_STATUS_RUNNING; $bannerId = DataGenerator::generateOne($doBanners); return $bannerId; }
function test_DeliveryDB_getAdminTZ() { // Create the admin account $doAccounts = OA_Dal::factoryDO('accounts'); $doAccounts->account_name = 'System Administrator'; $doAccounts->account_type = OA_ACCOUNT_ADMIN; $adminAccountId = DataGenerator::generateOne($doAccounts); $aExpect = array('default' => 'UTC', 'aAccounts' => array(), 'adminAccountId' => 1); $aResult = OA_Dal_Delivery_getAccountTZs(); $this->assertEqual($aResult, $aExpect); $doPreferences = OA_Dal::factoryDO('preferences'); $doPreferences->preference_name = 'timezone'; $preferenceId = $doPreferences->insert(); $doAPA = OA_Dal::factoryDO('account_preference_assoc'); $doAPA->account_id = $adminAccountId; $doAPA->preference_id = $preferenceId; $doAPA->value = ''; $doAPA->insert(); $aResult = OA_Dal_Delivery_getAccountTZs(); $this->assertEqual($aResult, $aExpect); $doAPA = OA_Dal::factoryDO('account_preference_assoc'); $doAPA->account_id = $adminAccountId; $doAPA->preference_id = $preferenceId; $doAPA->value = 'Europe/Rome'; $doAPA->update(); $aExpect = array('default' => 'Europe/Rome', 'aAccounts' => array(), 'adminAccountId' => 1); $aResult = OA_Dal_Delivery_getAccountTZs(); $this->assertEqual($aResult, $aExpect); // Create a couple of manager accounts $doAccounts = OA_Dal::factoryDO('accounts'); $doAccounts->account_name = 'Manager Account 1'; $doAccounts->account_type = OA_ACCOUNT_MANAGER; $managerAccountId1 = DataGenerator::generateOne($doAccounts); $doAPA = OA_Dal::factoryDO('account_preference_assoc'); $doAPA->account_id = $managerAccountId1; $doAPA->preference_id = $preferenceId; $doAPA->value = 'Europe/London'; $doAPA->insert(); $doAccounts = OA_Dal::factoryDO('accounts'); $doAccounts->account_name = 'Manager Account 2'; $doAccounts->account_type = OA_ACCOUNT_MANAGER; $managerAccountId2 = DataGenerator::generateOne($doAccounts); $doAPA = OA_Dal::factoryDO('account_preference_assoc'); $doAPA->account_id = $managerAccountId2; $doAPA->preference_id = $preferenceId; $doAPA->value = 'CEST'; $doAPA->insert(); $aExpect = array('default' => 'Europe/Rome', 'aAccounts' => array($managerAccountId1 => 'Europe/London', $managerAccountId2 => 'CEST'), 'adminAccountId' => 1); $aResult = OA_Dal_Delivery_getAccountTZs(); $this->assertEqual($aResult, $aExpect); }
/** * A method to be run before all tests. */ function setUp() { // Set up the database handler object $this->oDbh =& OA_DB::singleton(); $doCampaigns = OA_Dal::factoryDO('campaigns'); $aIds = DataGenerator::generate($doCampaigns, 2); $this->idCampaign1 = $aIds[0]; $this->idCampaign2 = $aIds[1]; $doBanners = OA_Dal::factoryDO('banners'); $doBanners->campaignid = $this->idCampaign1; $this->idBanner1 = DataGenerator::generateOne($doBanners); $doBanners->campaignid = $this->idCampaign2; $this->idBanner2 = DataGenerator::generateOne($doBanners); }
function testClearIntermediateAndSummaryTables() { $oStartDate = new Date('2006-05-09 13:00:00'); $oEndDate = new Date('2006-05-09 13:59:59'); $aTestDates = array(1 => array('start' => new Date('2006-05-09 13:10:00'), 'end' => new Date('2006-05-09 13:14:59')), 2 => array('start' => new Date('2006-05-09 12:00:00'), 'end' => new Date('2006-05-09 12:59:59')), 3 => array('start' => new Date('2006-05-09 13:55:00'), 'end' => new Date('2006-05-09 12:59:59'))); // Create some test data foreach ($aTestDates as $key => $aDates) { $doIntermediateAdConnection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $doIntermediateAdConnection->tracker_date_time = $aDates['start']->format('%Y-%m-%d %H:%M:%S'); $aIntermediateAdConnectionId[$key] = DataGenerator::generateOne($doIntermediateAdConnection); $doDataIntermediateAdVariableValue = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $doDataIntermediateAdVariableValue->data_intermediate_ad_connection_id = $aIntermediateAdConnectionId[$key]; $aDataIntermediateAdVariableValueId[$key] = DataGenerator::generateOne($doDataIntermediateAdVariableValue); $doDataIntermediateAd = OA_Dal::factoryDO('data_intermediate_ad'); $doDataIntermediateAd->interval_start = $aDates['start']->format('%Y-%m-%d %H:%M:%S'); $doDataIntermediateAd->interval_end = $aDates['end']->format('%Y-%m-%d %H:%M:%S'); $aDataIntermediateAdId[$key] = DataGenerator::generateOne($doDataIntermediateAd); $doDataSummaryAdHourly = OA_Dal::factoryDO('data_summary_ad_hourly'); $doDataSummaryAdHourly->date_time = $aDates['start']->format('%Y-%m-%d %H:00:00'); $aDataSummaryAdHourlyId[$key] = DataGenerator::generateOne($doDataSummaryAdHourly); $doDataSummaryAdZoneAssoc = OA_Dal::factoryDO('data_summary_ad_zone_assoc'); $doDataSummaryAdZoneAssoc->interval_start = $aDates['start']->format('%Y-%m-%d %H:%M:%S'); $doDataSummaryAdZoneAssoc->interval_end = $aDates['end']->format('%Y-%m-%d %H:%M:%S'); $aDataSummaryAdZoneAssocId[$key] = DataGenerator::generateOne($doDataSummaryAdZoneAssoc); } OA_Maintenance_Regenerate::clearIntermediateAndSummaryTables($oStartDate, $oEndDate); // Check if proper rows was deleted foreach ($aIntermediateAdConnectionId as $key => $intermediateAdConnectionId) { $adoIntermediateAdConnection[$key] = OA_Dal::staticGetDO('data_intermediate_ad_connection', $aIntermediateAdConnectionId[$key]); $adoDataIntermediateAdVariableValue[$key] = OA_Dal::staticGetDO('data_intermediate_ad_variable_value', $aDataIntermediateAdVariableValueId[$key]); $adoDataIntermediateAd[$key] = OA_Dal::staticGetDO('data_intermediate_ad', $aDataIntermediateAdId[$key]); $adoDataSummaryAdHourly[$key] = OA_Dal::staticGetDO('data_summary_ad_hourly', $aDataSummaryAdHourlyId[$key]); $adoDataSummaryAdZoneAssoc[$key] = OA_Dal::staticGetDO('data_summary_ad_zone_assoc', $aDataSummaryAdZoneAssocId[$key]); } $this->assertFalse($adoIntermediateAdConnection[1]); $this->assertFalse($adoDataIntermediateAdVariableValue[1]); $this->assertFalse($adoDataIntermediateAd[1]); $this->assertFalse($adoDataSummaryAdHourly[1]); $this->assertFalse($adoDataSummaryAdZoneAssoc[1]); $this->assertNotNull($adoIntermediateAdConnection[2]); $this->assertNotNull($adoDataIntermediateAdVariableValue[2]); $this->assertNotNull($adoDataIntermediateAd[2]); $this->assertNotNull($adoDataSummaryAdHourly[2]); $this->assertNotNull($adoDataSummaryAdZoneAssoc[2]); $this->assertFalse($adoIntermediateAdConnection[3]); $this->assertFalse($adoDataIntermediateAdVariableValue[3]); $this->assertFalse($adoDataIntermediateAd[3]); $this->assertFalse($adoDataSummaryAdHourly[3]); $this->assertFalse($adoDataSummaryAdZoneAssoc[3]); }
/** * Test method _relinkOrDeleteUsers */ function test_relinkOrDeleteUsers() { // Insert an agency $doAgency = OA_Dal::factoryDO('agency'); $agencyId = DataGenerator::generateOne($doAgency); $managerAccountId = DataGenerator::getReferenceId('accounts'); $doAgency = OA_Dal::factoryDO('agency'); $doAgency->get($agencyId); $managerAccountId = $doAgency->account_id; // Create admin account $doAccounts = OA_Dal::factoryDO('accounts'); $doAccounts->account_type = OA_ACCOUNT_ADMIN; $adminAccountId = DataGenerator::generateOne($doAccounts); // Create user linked to admin account // Default account for this user is set to manager account $doUsers = OA_Dal::factoryDO('users'); $doUsers->default_account_id = $managerAccountId; $doUsers->username = '******'; $adminUserID = DataGenerator::generateOne($doUsers); $doAccountsUserAssoc = OA_Dal::factoryDO('account_user_assoc'); $doAccountsUserAssoc->account_id = $adminAccountId; $doAccountsUserAssoc->user_id = $adminUserID; DataGenerator::generateOne($doAccountsUserAssoc); // Create manager user $doUsers = OA_Dal::factoryDO('users'); $doUsers->default_account_id = $managerAccountId; $doUsers->username = '******'; $managerUserID = DataGenerator::generateOne($doUsers); // Now delete Agency $doAgency = OA_Dal::factoryDO('agency'); $doAgency->agencyid = $agencyId; $doAgency->onDeleteCascade = false; // Disable cascade delete $doAgency->delete(); $doAccounts = OA_Dal::factoryDO('accounts'); $doAccounts->get($managerAccountId); // Relink / Delete users here $doAccounts->_relinkOrDeleteUsers(); // Test: admin user exists, linked to admin account $doUsers = OA_Dal::factoryDO('users'); $doUsers->user_id = $adminUserID; $doUsers->find(); $this->assertTrue($doUsers->fetch()); $this->assertEqual($doUsers->default_account_id, $adminAccountId); // Test: manager users is deleted $doUsers = OA_Dal::factoryDO('users'); $doUsers->user_id = $managerUserID; $doUsers->find(); $this->assertFalse($doUsers->fetch()); }
function testStaticGetDO() { // create test record $doBanners = OA_Dal::factoryDO('banners'); $doBanners->acls_updated = '2007-04-03 20:41:33'; $bannerId = DataGenerator::generateOne($doBanners); // Test that we retreived that record from database $doBanners = OA_Dal::staticGetDO('banners', $bannerId); $this->assertIsA($doBanners, 'DataObjects_Banners'); $this->assertEqual($doBanners->bannerid, $bannerId); // Test that false is returned if record doesn't exist $doBanners = OA_Dal::staticGetDO('banners', $id = 123); $this->assertFalse($doBanners); }
/** * A method to generate data for testing. * * @access private */ function _generateTestHistory($idZone, $aDates, $forecast, $actual) { if (is_null($this->dia)) { $this->dia = OA_Dal::factoryDO('data_intermediate_ad'); } $conf = $GLOBALS['_MAX']['CONF']; if (!empty($actual)) { // actual $this->dia->operation_interval = $conf['maintenance']['operationInterval']; $this->dia->operation_interval_id = OX_OperationInterval::convertDateToOperationIntervalID($aDates['start']); $this->dia->interval_start = $aDates['start']->format('%Y-%m-%d %H:%M:%S'); $this->dia->date_time = $aDates['start']->format('%Y-%m-%d %H:%M:%S'); $this->dia->interval_end = $aDates['end']->format('%Y-%m-%d %H:%M:%S'); $this->dia->zone_id = $idZone; $this->dia->ad_id = 1; $this->dia->impressions = $actual; $dia = DataGenerator::generateOne($this->dia); } if (!empty($forecast)) { $MINIMUM_FORECAST_FOR_TEST = 3; if ($forecast <= $MINIMUM_FORECAST_FOR_TEST) { $this->fail('Forecast parameter must be > ' . $MINIMUM_FORECAST_FOR_TEST); } // forecast $aDates = OX_OperationInterval::convertDateToPreviousOperationIntervalStartAndEndDates($aDates['start']); $this->dia->operation_interval = $conf['maintenance']['operationInterval']; $this->dia->operation_interval_id = OX_OperationInterval::convertDateToOperationIntervalID($aDates['start']); $this->dia->interval_start = $aDates['start']->format('%Y-%m-%d %H:%M:%S'); $this->dia->date_time = $aDates['start']->format('%Y-%m-%d %H:%M:%S'); $this->dia->interval_end = $aDates['end']->format('%Y-%m-%d %H:%M:%S'); $this->dia->zone_id = $idZone; $this->dia->ad_id = 1; $this->dia->impressions = $forecast - $MINIMUM_FORECAST_FOR_TEST; $dia = DataGenerator::generateOne($this->dia); // we split the forecast in two rows, one for each Ad $this->dia->operation_interval = $conf['maintenance']['operationInterval']; $this->dia->operation_interval_id = OX_OperationInterval::convertDateToOperationIntervalID($aDates['start']); $this->dia->interval_start = $aDates['start']->format('%Y-%m-%d %H:%M:%S'); $this->dia->date_time = $aDates['start']->format('%Y-%m-%d %H:%M:%S'); $this->dia->interval_end = $aDates['end']->format('%Y-%m-%d %H:%M:%S'); $this->dia->zone_id = $idZone; $this->dia->ad_id = 2; $this->dia->impressions = $MINIMUM_FORECAST_FOR_TEST; $dia = DataGenerator::generateOne($this->dia); } }
public function testLinkCampaign() { // Setup $doCampaigns = OA_Dal::factoryDO('campaigns'); $campaignId = DataGenerator::generateOne($doCampaigns); $doTrackers = OA_Dal::factoryDO('trackers'); $doTrackers->status = MAX_CONNECTION_STATUS_APPROVED; $trackerId = DataGenerator::generateOne($doTrackers); // Link em $result = $this->dalTrackers->linkCampaign($trackerId, $campaignId); $this->assertTrue($result); // Test already linked $result = $this->dalTrackers->linkCampaign($trackerId, $campaignId); $this->assertTrue($result); // Get the new link from the DB. $doCampaignsTrackers = OA_Dal::factoryDO('campaigns_trackers'); $doCampaignsTrackers->trackerid = $trackerId; $doCampaignsTrackers->campaignid = $campaignId; $result = $doCampaignsTrackers->find(true); $this->assertEqual(1, $result); $this->assertEqual($campaignId, $doCampaignsTrackers->campaignid); $this->assertEqual($trackerId, $doCampaignsTrackers->trackerid); $this->assertEqual(MAX_CONNECTION_STATUS_APPROVED, $doCampaignsTrackers->status); // Link with custom status $doTrackers = OA_Dal::factoryDO('trackers'); $doTrackers->status = MAX_CONNECTION_STATUS_APPROVED; $trackerId = DataGenerator::generateOne($doTrackers); $result = $this->dalTrackers->linkCampaign($trackerId, $campaignId, MAX_CONNECTION_STATUS_PENDING); $this->assertTrue($result); $doCampaignsTrackers = OA_Dal::factoryDO('campaigns_trackers'); $doCampaignsTrackers->trackerid = $trackerId; $doCampaignsTrackers->campaignid = $campaignId; $result = $doCampaignsTrackers->find(true); $this->assertEqual(1, $result); $this->assertEqual($campaignId, $doCampaignsTrackers->campaignid); $this->assertEqual($trackerId, $doCampaignsTrackers->trackerid); $this->assertEqual(MAX_CONNECTION_STATUS_PENDING, $doCampaignsTrackers->status); // Link invalid IDs $invalidId = 9999; $result = $this->dalTrackers->linkCampaign($trackerId, $invalidId); $this->assertFalse($result); $result = $this->dalTrackers->linkCampaign($invalidId, $campaignId); $this->assertFalse($result); $result = $this->dalTrackers->linkCampaign($invalidId, $invalidId); $this->assertFalse($result); }
function testBelongsToAccount() { OA_Dal::factoryDO('banners'); // Initialise the class so it can be mocked. Mock::generatePartial('DataObjects_Banners', $mockBanners = 'DataObjects_Banners' . rand(), array('getOwningAccountIds')); $doMockBanners = new $mockBanners($this); $doMockBanners->init(); $clientId = DataGenerator::generateOne('clients', true); $doClients = OA_Dal::staticGetDO('clients', $clientId); $agencyId = $doClients->agencyid; $accountId = $doClients->account_id; $doAgency = OA_Dal::staticGetDO('agency', $agencyId); $managerId = $doAgency->account_id; $dg = new DataGenerator(); $dg->setData('campaigns', array('clientid' => array($clientId))); $doMockBanners->setReturnValue('getOwningAccountIds', array(OA_ACCOUNT_MANAGER => $managerId, OA_ACCOUNT_ADVERTISER => $accountId)); $this->enableAuditing(true); $bannerId = $dg->generateOne($doMockBanners, true); $this->enableAuditing(false); $doAudit = OA_Dal::factoryDO('audit'); $doAudit->context = 'banners'; $doAudit->contextid = $bannerId; $this->assertTrue($doAudit->find(true)); $this->assertTrue($doAudit->belongsToAccount($accountId, false)); // generate different audit on campaign $dg = new DataGenerator(); $doMockBanners = new $mockBanners($this); $doMockBanners->init(); $clientId2 = DataGenerator::generateOne('clients', true); $doClients = OA_Dal::staticGetDO('clients', $clientId2); $agencyId2 = $doClients->agencyid; $accountId2 = $doClients->account_id; $doAgency = OA_Dal::staticGetDO('agency', $agencyId2); $managerId2 = $doAgency->account_id; $dg->setData('campaigns', array('clientid' => array($clientId2))); $doMockBanners->setReturnValue('getOwningAccountIds', array(OA_ACCOUNT_MANAGER => $managerId2, OA_ACCOUNT_ADVERTISER => $accountId2)); $this->enableAuditing(true); $bannerId2 = $dg->generateOne($doMockBanners, true); $this->enableAuditing(false); $doAudit = OA_Dal::factoryDO('audit'); $doAudit->context = 'banners'; $doAudit->contextid = $bannerId2; $this->assertTrue($doAudit->find(true)); $this->assertTrue($doAudit->belongsToAccount($accountId2, false)); $this->assertFalse($doAudit->belongsToAccount($accountId, false)); }
function testAuthenticateUser() { $username = '******'; $password = '******'; $doUsers = OA_Dal::factoryDO('users'); $doUsers->username = $username; $doUsers->password = md5($password); DataGenerator::generateOne($doUsers); $_POST['username'] = $username; $_POST['password'] = $password; $_COOKIE['sessionID'] = $_POST['oa_cookiecheck'] = 'baz'; $ret = $this->oPlugin->authenticateUser(); $this->assertIsA($ret, 'DataObjects_Users'); $this->assertEqual($doUsers->username, $username); $_POST['password'] = $password . rand(); $ret = $this->oPlugin->authenticateUser(); $this->assertFalse($ret); }
function _generateTestData() { $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->campaignname = 'CPM'; $doCampaigns->clicks = 0; $doCampaigns->conversions = 0; $campaignId1 = DataGenerator::generateOne($doCampaigns); $result[$campaignId1] = array('campaignname' => $doCampaigns->campaignname, 'revenue_type' => MAX_FINANCE_CPM); $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->campaignname = 'CPC'; $doCampaigns->clicks = 10; $doCampaigns->conversions = 0; $campaignId2 = DataGenerator::generateOne($doCampaigns); $result[$campaignId2] = array('campaignname' => $doCampaigns->campaignname, 'revenue_type' => MAX_FINANCE_CPC); $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->campaignname = 'CPA'; $doCampaigns->clicks = 0; $doCampaigns->conversions = 10; $campaignId3 = DataGenerator::generateOne($doCampaigns); $result[$campaignId3] = array('campaignname' => $doCampaigns->campaignname, 'revenue_type' => MAX_FINANCE_CPA); // Add another record of each type to make sure that multiple records get tested $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->campaignname = 'CPM'; $doCampaigns->clicks = 0; $doCampaigns->conversions = 0; $campaignId4 = DataGenerator::generateOne($doCampaigns); $result[$campaignId4] = array('campaignname' => $doCampaigns->campaignname, 'revenue_type' => MAX_FINANCE_CPM); $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->campaignname = 'CPC'; $doCampaigns->clicks = 10; $doCampaigns->conversions = 0; $campaignId5 = DataGenerator::generateOne($doCampaigns); $result[$campaignId5] = array('campaignname' => $doCampaigns->campaignname, 'revenue_type' => MAX_FINANCE_CPC); $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->campaignname = 'CPA'; $doCampaigns->clicks = 0; $doCampaigns->conversions = 10; $campaignId6 = DataGenerator::generateOne($doCampaigns); $result[$campaignId6] = array('campaignname' => $doCampaigns->campaignname, 'revenue_type' => MAX_FINANCE_CPA); $oDbh = OA_DB::singleton(); $table = $oDbh->quoteIdentifier($GLOBALS['_MAX']['CONF']['table']['prefix'] . 'campaigns', true); $oDbh->exec('UPDATE ' . $table . ' SET revenue_type = NULL'); return $result; }
function testGetLogoutUrl() { // Insert an agency without a logout url $doAgency = OA_Dal::factoryDO('agency'); $doAgency->logout_url = ''; $agencyId = DataGenerator::generateOne($doAgency); $path = 'serveraddress'; $GLOBALS['_MAX']['CONF']['webpath']['admin'] = $path; $GLOBALS['_MAX']['CONF']['openads']['sslPort'] = 443; $GLOBALS['_MAX']['HTTP'] = 'http://'; $expected = 'http://' . $path . '/index.php'; $this->assertEqual($this->dalAgency->getLogoutUrl($agencyId), $expected); // Insert an agency with a logout url $doAgency = OA_Dal::factoryDO('agency'); $doAgency->logout_url = 'http://example.com'; $agencyId = DataGenerator::generateOne($doAgency); $expected = 'http://example.com'; $this->assertEqual($this->dalAgency->getLogoutUrl($agencyId), $expected); }
/** * A method to test the _prepareTrackerVariables() method. */ function test_prepareTrackerVariables() { // Prepare test data $doTrackers = OA_Dal::factoryDO('trackers'); $trackerId = DataGenerator::generateOne($doTrackers); $doVariables = OA_Dal::factoryDO('variables'); $doVariables->trackerid = $trackerId; $variableId = DataGenerator::generateOne($doVariables); $doAffiliates = OA_Dal::factoryDO('affiliates'); $publisherId = DataGenerator::generateOne($doAffiliates); $doVariablePublisher = OA_Dal::factoryDO('variable_publisher'); $doVariablePublisher->variable_id = $trackerId; $doVariablePublisher->publisher_id = $publisherId; $doVariablePublisher->visible = 1; $variablepublisherId = DataGenerator::generateOne($doVariablePublisher); // Tests with empty connections table $result = $this->oPlugin->_prepareTrackerVariables(array()); $this->assertEqual(count($result), 0); // Tests with one existing tracker in connections table $result = $this->oPlugin->_prepareTrackerVariables(array($trackerId => array())); $this->assertEqual(count($result), 1); }
function testInsert() { $doBanners = OA_Dal::factoryDO('banners'); $doBanners->acls_updated = '2007-04-03 19:28:06'; $bannerId = DataGenerator::generateOne($doBanners, true); $doAdZoneAssoc = OA_Dal::factoryDO('ad_zone_assoc'); $doAdZoneAssoc->ad_id = $bannerId; $doAdZoneAssoc->zone_id = 0; $this->assertTrue($doAdZoneAssoc->find()); $this->assertTrue($doAdZoneAssoc->fetch()); // Test creating a text ad. Ensure it is linked to zone 0 even though // zone 0 is not a text zone. $doBanners = OA_Dal::factoryDO('banners'); $doBanners->acls_updated = '2007-04-03 19:28:06'; $doBanners->contenttype = 'txt'; $doBanners->storagetype = 'txt'; $bannerId = DataGenerator::generateOne($doBanners, true); $doAdZoneAssoc = OA_Dal::factoryDO('ad_zone_assoc'); $doAdZoneAssoc->ad_id = $bannerId; $doAdZoneAssoc->zone_id = 0; $this->assertTrue($doAdZoneAssoc->find()); $this->assertTrue($doAdZoneAssoc->fetch()); }
/** * method for extending OA_Test_Data_DataObject */ function generateTestData() { if (!parent::init()) { return false; } // Disable Auditing while loading the test data: $GLOBALS['_MAX']['CONF']['audit']['enabled'] = false; parent::generateTestData(); for ($hour = 0; $hour < 24; $hour++) { $doDSAH = OA_Dal::factoryDO('data_summary_ad_hourly'); $doDSAH->date_time = sprintf('%s %02d:00:00', substr(OA::getNow(), 0, 10), $hour); $doDSAH->ad_id = $this->aIds['banners'][1]; $doDSAH->creative_id = rand(1, 999); $doDSAH->zone_id = $this->aIds['zones'][1]; $doDSAH->requests = rand(1, 999); $doDSAH->impressions = rand(1, 999); $doDSAH->clicks = rand(1, 999); $doDSAH->conversions = rand(1, 999); $doDSAH->total_basket_value = 0; $this->aIds['DSAH'][] = DataGenerator::generateOne($doDSAH); } return $this->aIds; }
function testDelete() { $doZones = OA_Dal::factoryDO('zones'); $doZones->append = ''; $doZones->chain = ''; DataGenerator::generate($doZones, $numZones1 = 2); // add few reduntant zones // Add our testing zone $zoneId = DataGenerator::generateOne('zones'); // add appending zones $doZones = OA_Dal::factoryDO('zones'); $doZones->appendtype = phpAds_ZoneAppendZone; $doZones->append = 'zone:' . $zoneId; $doZones->chain = ''; $aZoneIdAppends = DataGenerator::generate($doZones, $numZonesAppened = 3); // add chained zones $doZones = OA_Dal::factoryDO('zones'); $doZones->append = ''; $doZones->chain = 'zone:' . $zoneId; $aZoneIdChained = DataGenerator::generate($doZones, $numZonesChained = 3); $doZones = OA_Dal::staticGetDO('zones', $zoneId); $ret = $doZones->delete(); // delete $this->assertTrue($ret); $numAllZones = $numZones1 + $numZonesAppened + $numZonesChained; // check appended zones were cleaned up $doZones = OA_Dal::factoryDO('zones'); $doZones->append = ''; //$doZones->whereAdd("append = ''"); // $countWhat = true $this->assertEqual($doZones->count(), $numAllZones); // check chained zones were cleaned up $doZones = OA_Dal::factoryDO('zones'); $doZones->chain = ''; $this->assertEqual($doZones->count(), $numAllZones); }
/** * A method to test the getLinkedEmailZoneIds() method. * * Note that the banner/zone association in this test is * performed via the Admin_DA class, as a result of the fact * that neither the "zone" or "banner" Entity Service * classes support this functionality at the time of writing. */ function testGetLinkedEmailZoneIds() { $oDataGenerator = new DataGenerator(); $dalZones = OA_Dal::factoryDAL('zones'); // Test with invalid input $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds('foo'); $this->assertTrue(is_array($aResult)); $this->assertTrue(empty($aResult)); // Test with invalid campaign IDs $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds(-1); $this->assertTrue(is_array($aResult)); $this->assertTrue(empty($aResult)); $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds(0); $this->assertTrue(is_array($aResult)); $this->assertTrue(empty($aResult)); $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds(2); $this->assertTrue(is_array($aResult)); $this->assertTrue(empty($aResult)); // Generate an owning manager account $doAgency = OA_Dal::factoryDO('agency'); $managerId = $oDataGenerator->generateOne($doAgency); // Generate an advertiser account within the manager account $doClients = OA_Dal::factoryDO('clients'); $doClients->agencyid = $managerId; $advertiserId = $oDataGenerator->generateOne($doClients); // Generate a website account within the manager account $doAffiliates = OA_Dal::factoryDO('affiliates'); $doAffiliates->agencyid = $managerId; $websiteId = $oDataGenerator->generateOne($doAffiliates); // Generate a campaign, with start and end dates $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->clientid = $advertiserId; $doCampaigns->activate_time = '2009-02-23 00:00:00'; $doCampaigns->expire_time = '2009-02-24 23:59:59'; $campaignId = $oDataGenerator->generateOne($doCampaigns); // Generate a banner in the campaign generated above $doBanners = OA_Dal::factoryDO('banners'); $doBanners->campaignid = $campaignId; $bannerId = $oDataGenerator->generateOne($doBanners); // Test with no linked zones $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds($campaignId); $this->assertTrue(is_array($aResult)); $this->assertTrue(empty($aResult)); // Add two non-email zones, and link the campaign to the zones $doZones = OA_Dal::factoryDO('zones'); $doZones->affiliateid = $websiteId; $doZones->delivery = phpAds_ZoneBanner; $zoneId1 = $oDataGenerator->generateOne($doZones); $result = $dalZones->linkZonesToCampaign(array($zoneId1), $campaignId); $this->assertEqual($result, 1); $doZones = OA_Dal::factoryDO('zones'); $doZones->affiliateid = $websiteId; $doZones->delivery = phpAds_ZonePopup; $zoneId2 = $oDataGenerator->generateOne($doZones); $result = $dalZones->linkZonesToCampaign(array($zoneId2), $campaignId); $this->assertEqual($result, 1); // Test with linked zones that are not email zones $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds($campaignId); $this->assertTrue(is_array($aResult)); $this->assertTrue(empty($aResult)); // Add an email zone, and link the campaign's banner to the zone $doZones = OA_Dal::factoryDO('zones'); $doZones->affiliateid = $websiteId; $doZones->delivery = MAX_ZoneEmail; $zoneId3 = $oDataGenerator->generateOne($doZones); $aParameters = array('zone_id' => $zoneId3, 'ad_id' => $bannerId); $result = Admin_DA::addAdZone($aParameters); $this->assertTrue($result); // Test with linked zones, one of which is an email zone $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds($campaignId); $this->assertTrue(is_array($aResult)); $this->assertTrue(!empty($aResult)); $this->assertEqual(count($aResult), 1); $this->assertEqual($aResult[0], $zoneId3); // Add another email zone, and link the campaign's banner to the zone $doZones = OA_Dal::factoryDO('zones'); $doZones->affiliateid = $websiteId; $doZones->delivery = MAX_ZoneEmail; $zoneId4 = $oDataGenerator->generateOne($doZones); $aParameters = array('zone_id' => $zoneId4, 'ad_id' => $bannerId); $result = Admin_DA::addAdZone($aParameters); $this->assertTrue($result); // Test with linked zones, some of which are email zones $aResult = $this->oDalCampaigns->getLinkedEmailZoneIds($campaignId); $this->assertTrue(is_array($aResult)); $this->assertTrue(!empty($aResult)); $this->assertEqual(count($aResult), 2); $this->assertEqual($aResult[0], $zoneId3); $this->assertEqual($aResult[1], $zoneId4); }
function testUpdateHighWithNoTargetSet() { //test for OX-3635 $expire = '2020-01-01'; $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->name = 'Some test campaign'; $doCampaigns->expire_time = $expire; $doCampaigns->views = -1; $doCampaigns->clicks = -1; $doCampaigns->conversions = -1; $doCampaigns->priority = 5; $doCampaigns->weight = 0; $campaignId = DataGenerator::generateOne($doCampaigns); //get campaign and check if it's inactive (it should be since we have not //set target per day nor limit for high campaign $doCampaigns = OA_Dal::staticGetDO('campaigns', $campaignId); $this->assertEqual($doCampaigns->status, OA_ENTITY_STATUS_INACTIVE); $doCampaigns->views = 1000; $doCampaigns->update(); $doCampaigns = OA_Dal::staticGetDO('campaigns', $campaignId); $this->assertEqual($doCampaigns->status, OA_ENTITY_STATUS_RUNNING); }
function setUp() { $this->agencyId = DataGenerator::generateOne('agency'); }
/** * A method to test the summariseBucketsRawSupplementary() method. */ function testSummariseBucketsRawSupplementary() { $aConf =& $GLOBALS['_MAX']['CONF']; $aConf['maintenance']['operationInterval'] = 60; // Prepare standard test parameters $statisticsTableName = $aConf['table']['prefix'] . 'data_intermediate_ad_variable_value'; $aMigrationDetails = array('method' => 'rawSupplementary', 'masterTable' => $aConf['table']['prefix'] . 'data_intermediate_ad_connection', 'masterTablePrimaryKeys' => array(0 => 'data_intermediate_ad_connection_id'), 'bucketTablePrimaryKeys' => array(0 => 'data_intermediate_ad_connection_id'), 'masterTableKeys' => array(0 => 'server_raw_tracker_impression_id', 1 => 'server_raw_ip'), 'bucketTableKeys' => array(0 => 'server_conv_id', 1 => 'server_ip'), 'masterDateTimeColumn' => 'tracker_date_time', 'bucketTable' => $aConf['table']['prefix'] . 'data_bkt_a_var', 'source' => array(0 => 'tracker_variable_id', 1 => 'value'), 'destination' => array(0 => 'tracker_variable_id', 1 => 'value')); $aDates = array('start' => new Date('2008-08-21 09:00:00'), 'end' => new Date('2008-08-21 09:59:59')); // Prepare the DAL object $oFactory = new OX_Dal_Maintenance_Statistics_Factory(); $oDalMaintenanceStatistics = $oFactory->factory(); // Test 1: Test with an incorrect method name in the mapping array $savedValue = $aMigrationDetails['method']; $aMigrationDetails['method'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with migration map method 'foo' != 'rawSupplementary'."); $aMigrationDetails['method'] = $savedValue; // Test 2: Test with a different number of masterTablePrimaryKeys and bucketTablePrimaryKeys columns $savedValue = $aMigrationDetails['masterTablePrimaryKeys'][0]; unset($aMigrationDetails['masterTablePrimaryKeys'][0]); $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with different number of 'masterTablePrimaryKeys' and 'bucketTablePrimaryKeys' columns."); $aMigrationDetails['masterTablePrimaryKeys'][0] = $savedValue; // Test 3: Test with a different number of masterTableKeys and bucketTableKeys columns $savedValue = $aMigrationDetails['masterTableKeys'][1]; unset($aMigrationDetails['masterTableKeys'][1]); $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with different number of 'masterTableKeys' and 'bucketTableKeys' columns."); $aMigrationDetails['masterTableKeys'][1] = $savedValue; // Test 4: Test with a different number of source and destination columns $savedValue = $aMigrationDetails['destination'][1]; unset($aMigrationDetails['destination'][1]); $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with different number of 'source' and 'destination' columns."); $aMigrationDetails['destination'][1] = $savedValue; // Test 5: Test with date parameters that are not really dates $savedValue = $aDates['start']; $aDates['start'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid start/end date parameters -- not Date objects."); $aDates['start'] = $savedValue; $savedValue = $aDates['end']; $aDates['end'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid start/end date parameters -- not Date objects."); $aDates['end'] = $savedValue; // Test 6: Test with invalid start/end dates $savedValue = $aDates['start']; $aDates['start'] = new Date('2008-08-21 08:00:00'); $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid start/end date parameters -- not operation interval bounds."); $aDates['start'] = $savedValue; $savedValue = $aDates['end']; $aDates['end'] = new Date('2008-08-22 09:59:59'); $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDARGS); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid start/end date parameters -- not operation interval bounds."); $aDates['end'] = $savedValue; // Test 7: Test with an invalid statistics table name $savedValue = $statisticsTableName; $statisticsTableName = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDREQUEST); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid statistics table 'foo'."); $statisticsTableName = $savedValue; // Test 8: Test with an invalid master statistics table name $savedValue = $aMigrationDetails['masterTable']; $aMigrationDetails['masterTable'] = 'foo'; $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDREQUEST); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid master table 'foo'."); $aMigrationDetails['masterTable'] = $savedValue; // Test 9: Test with no data_bkt_a_var table in the database $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertTrue(is_a($result, 'PEAR_Error')); $this->assertEqual($result->code, MAX_ERROR_INVALIDREQUEST); $this->assertEqual($result->message, "OX_Dal_Maintenance_Statistics::summariseBucketsRawSupplementary() called with invalid bucket table '{$aConf['table']['prefix']}data_bkt_a_var'."); // Install the openXDeliveryLog plugin, which will create the // data_bkt_a table required for testing TestEnv::installPluginPackage('openXDeliveryLog', false); // Test 10: Test with all tables present, but no data $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertEqual($result, 0); // Insert a conversion into the data_intermediate_ad_connection table // in the incorrect operation interval $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->server_raw_tracker_impression_id = 1; $oData_intermediate_ad_connection->server_raw_ip = 'localhost'; $oData_intermediate_ad_connection->tracker_id = 2; $oData_intermediate_ad_connection->tracker_date_time = '2008-08-21 08:15:00'; $oData_intermediate_ad_connection->connection_date_time = '2008-08-21 07:15:00'; $oData_intermediate_ad_connection->ad_id = 3; $oData_intermediate_ad_connection->zone_id = 4; $oData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $oData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK; $oData_intermediate_ad_connection->connection_window = 3600; $oData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $oData_intermediate_ad_connection->inside_window = 1; $conversionId = DataGenerator::generateOne($oData_intermediate_ad_connection); // Test 11: Test with data in the incorrect operation interval $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertEqual($result, 0); // Insert two conversions into the data_intermediate_ad_connection table // in the correct operation interval $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->server_raw_tracker_impression_id = 2; $oData_intermediate_ad_connection->server_raw_ip = 'localhost'; $oData_intermediate_ad_connection->tracker_id = 2; $oData_intermediate_ad_connection->tracker_date_time = '2008-08-21 09:15:00'; $oData_intermediate_ad_connection->connection_date_time = '2008-08-21 08:15:00'; $oData_intermediate_ad_connection->ad_id = 3; $oData_intermediate_ad_connection->zone_id = 4; $oData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $oData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK; $oData_intermediate_ad_connection->connection_window = 3600; $oData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $oData_intermediate_ad_connection->inside_window = 1; $conversionId1 = DataGenerator::generateOne($oData_intermediate_ad_connection); $oData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_connection->server_raw_tracker_impression_id = 3; $oData_intermediate_ad_connection->server_raw_ip = 'localhost'; $oData_intermediate_ad_connection->tracker_id = 9; $oData_intermediate_ad_connection->tracker_date_time = '2008-08-21 09:16:00'; $oData_intermediate_ad_connection->connection_date_time = '2008-08-21 08:16:00'; $oData_intermediate_ad_connection->ad_id = 6; $oData_intermediate_ad_connection->zone_id = 7; $oData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1'; $oData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_VIEW; $oData_intermediate_ad_connection->connection_window = 3600; $oData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED; $oData_intermediate_ad_connection->inside_window = 1; $conversionId2 = DataGenerator::generateOne($oData_intermediate_ad_connection); // Test 12: Test with data in the correct operation interval, but // no supplementary data $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertEqual($result, 0); // Add some supplementary data for the conversions above! $oData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var'); $oData_bkt_a_var->server_conv_id = 2; $oData_bkt_a_var->server_ip = 'localhost'; $oData_bkt_a_var->tracker_variable_id = 99; $oData_bkt_a_var->value = 'foo'; DataGenerator::generateOne($oData_bkt_a_var); $oData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var'); $oData_bkt_a_var->server_conv_id = 2; $oData_bkt_a_var->server_ip = 'localhost'; $oData_bkt_a_var->tracker_variable_id = 100; $oData_bkt_a_var->value = '156.99'; DataGenerator::generateOne($oData_bkt_a_var); $oData_bkt_a_var = OA_Dal::factoryDO('data_bkt_a_var'); $oData_bkt_a_var->server_conv_id = 3; $oData_bkt_a_var->server_ip = 'localhost'; $oData_bkt_a_var->tracker_variable_id = 15; $oData_bkt_a_var->value = '123456789'; DataGenerator::generateOne($oData_bkt_a_var); // Test 12: Test with data in the correct operation interval $result = $oDalMaintenanceStatistics->summariseBucketsRawSupplementary($statisticsTableName, $aMigrationDetails, $aDates); $this->assertEqual($result, 3); $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId1; $oData_intermediate_ad_variable_value->find(); $rows = $oData_intermediate_ad_variable_value->getRowCount(); $this->assertEqual($rows, 2); $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId1; $oData_intermediate_ad_variable_value->tracker_variable_id = 99; $oData_intermediate_ad_variable_value->find(); $rows = $oData_intermediate_ad_variable_value->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad_variable_value->fetch(); $this->assertEqual($oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id, $conversionId1); $this->assertEqual($oData_intermediate_ad_variable_value->tracker_variable_id, 99); $this->assertEqual($oData_intermediate_ad_variable_value->value, 'foo'); $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId1; $oData_intermediate_ad_variable_value->tracker_variable_id = 100; $oData_intermediate_ad_variable_value->find(); $rows = $oData_intermediate_ad_variable_value->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad_variable_value->fetch(); $this->assertEqual($oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id, $conversionId1); $this->assertEqual($oData_intermediate_ad_variable_value->tracker_variable_id, 100); $this->assertEqual($oData_intermediate_ad_variable_value->value, '156.99'); $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId2; $oData_intermediate_ad_variable_value->find(); $rows = $oData_intermediate_ad_variable_value->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId2; $oData_intermediate_ad_variable_value->tracker_variable_id = 15; $oData_intermediate_ad_variable_value->find(); $rows = $oData_intermediate_ad_variable_value->getRowCount(); $this->assertEqual($rows, 1); $oData_intermediate_ad_variable_value->fetch(); $this->assertEqual($oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id, $conversionId2); $this->assertEqual($oData_intermediate_ad_variable_value->tracker_variable_id, 15); $this->assertEqual($oData_intermediate_ad_variable_value->value, '123456789'); // Clean up generated data DataGenerator::cleanUp(); // Also clean up the data migrated into the statistics table $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId1; $oData_intermediate_ad_variable_value->find(); $oData_intermediate_ad_variable_value->delete(); $oData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_connection'); $oData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $conversionId2; $oData_intermediate_ad_variable_value->find(); $oData_intermediate_ad_variable_value->delete(); // Uninstall the installed plugin TestEnv::uninstallPluginPackage('openXDeliveryLog', false); // Restore the test environment configuration TestEnv::restoreConfig(); }
function testMoveBannerToCampaign() { // Insert a banner $doBanners = OA_Dal::factoryDO('banners'); $doBanners->acls_updated = '2007-04-03 18:39:45'; $bannerId = DataGenerator::generateOne($doBanners); // Move it $newCampaignId = 99; $this->assertTrue($this->dalBanners->moveBannerToCampaign($bannerId, $newCampaignId)); // Check its campaign ID $doBanners = OA_Dal::staticGetDO('banners', $bannerId); $this->assertEqual($doBanners->campaignid, $newCampaignId); }