Exemple #1
0
 public function data()
 {
     if ($this->method !== "POST") {
         return array("error" => "Sorry, this endpoint only accepts POST requests. Please see the help documentation.");
     }
     // validate the incoming JSON data to ensure its valid
     $error = Utils::validateJSON($this->rawRequest);
     if ($error) {
         return array("error" => ErrorCodes::API_INVALID_JSON, "error_details" => $error);
     }
     $json = @json_decode($this->rawRequest);
     // validate the JSON contains the appropriate settings for the Code
     $errors = $this->validateCoreSettings($json);
     if ($errors) {
         return $errors;
     }
     $errors = $this->validateDataTypeSettings($json);
     if ($errors) {
         return $errors;
     }
     $errors = $this->validateExportTypeSettings($json);
     if ($errors) {
         return $errors;
     }
     // okay! Now we generate whatever data was requested
     $gen = new DataGenerator(Constants::GEN_ENVIRONMENT_API, $json);
     $response = $gen->generate();
     if ($response["success"]) {
         return $response;
     }
 }
 function test_genericHtml_class()
 {
     // test the class implementation
     $oComponent =& OX_Component::factory('bannerTypeHtml', 'demoBannerTypeHtml', 'demoHtml');
     // common extension methods
     $this->_assertClass($oComponent, 'bannerTypeHtml', 'demoBannerTypeHtml', 'demoHtml');
     // plugin-specific methods
     $this->assertTrue(method_exists($oComponent, '_buildHtmlTemplate'), $sender . ' missing method _buildHtmlTemplate');
     $this->assertTrue(method_exists($oComponent, 'exportData'), $sender . ' missing method exportData');
     // generate test data
     $doBanners = OA_Dal::factoryDO('banners');
     $oDG = new DataGenerator();
     $oDG->setData('banners', array('ext_bannertype' => array($oComponent->getComponentIdentifier())));
     $aIds = $oDG->generate($doBanners, 5, false);
     $aFields = $aVariables = array();
     // test the processForm method
     // this method joins the banners and banners_demo tables
     // by creating a banners_demo record where
     // banners_demo.banners_demo_id = banners.bannerid
     foreach ($aIds as $i => $bannerId) {
         $aFields['description'] = 'description_' . $bannerId;
         $this->assertTrue($oComponent->processForm(true, $bannerId, $aFields, $aVariables));
         $doBannersDemo = OA_Dal::factoryDO('banners_demo');
         $doBannersDemo->banners_demo_id = $bannerId;
         $this->assertTrue($doBannersDemo->find(true));
         $this->assertEqual($doBannersDemo->banners_demo_desc, $aFields['description']);
     }
     // test the exportData method
     $aTables = $oComponent->exportData();
     $this->assertIsA($aTables, 'array');
     $this->assertEqual(count($aTables), 2);
     $prefix = $GLOBALS['_MAX']['CONF']['table']['prefix'];
     $pattern = '/' . $prefix . 'z_' . $oComponent->component . '[\\d]{8}_[\\d]{6}' . $prefix . 'banners/';
     $this->assertPattern($pattern, $aTables[0]);
     $pattern = '/' . $prefix . 'z_' . $oComponent->component . '[\\d]{8}_[\\d]{6}' . $prefix . 'banners_demo/';
     $this->assertPattern($pattern, $aTables[1]);
     $oDbh = OA_DB::singleton();
     $query = "SELECT * FROM " . $oDbh->quoteIdentifier($aTables[0]);
     $aResult = $oDbh->queryAll($query, null, MDB2_FETCHMODE_ASSOC);
     foreach ($aResult as $i => $aFrom) {
         $this->assertEqual($aFrom['bannerid'], $aIds[$i]);
     }
     $query = "SELECT * FROM " . $oDbh->quoteIdentifier($aTables[1]);
     $aResult = $oDbh->queryAll($query, null, MDB2_FETCHMODE_ASSOC);
     foreach ($aResult as $i => $aFrom) {
         $this->assertEqual($aFrom['banners_demo_id'], $aIds[$i]);
     }
 }
 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 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');
 }
 /**
  * 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 &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;
 }
 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 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 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 testGetChannelsAndAffiliates()
 {
     // Insert 2 channels
     $aData = array('acls_updated' => array('2007-04-04 17:27:33'));
     $dg = new DataGenerator();
     $dg->setData('channel', $aData);
     $aChannelId = $dg->generate('channel', 2, true);
     // Check the correct number of rows returned
     $expectedRows = 2;
     $rsChannel = $this->dalChannel->getChannelsAndAffiliates();
     $rsChannel->find();
     $actualRows = $rsChannel->getRowCount();
     $this->assertEqual($actualRows, $expectedRows);
     // Check each row has the correct number of fields
     $rsChannel->fetch();
     $aChannel = $rsChannel->export();
     $this->assertEqual(count($aChannel), 4);
 }
 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 testGetAclsByDataValueType()
 {
     $type = 'Site:Channel';
     $bannerId = 1;
     $channelId = 1;
     // Test it returns empty set if no data exists
     $rsChannel = $this->dalAcls->getAclsByDataValueType($bannerId, $type);
     $rsChannel->reset();
     $this->assertEqual($rsChannel->getRowCount(), 0);
     // Generate acls, two of them with the same $bannerId
     $data = array('bannerid' => array($bannerId, $bannerId, 3), 'data' => array("{$channelId},2,3", '4,5,6', "{$channelId}"), 'executionorder' => array(1, 2, 3));
     $dg = new DataGenerator();
     $dg->setData('acls', $data);
     // Add test data
     $doAcls = OA_Dal::factoryDO('acls');
     $doAcls->type = $type;
     $dg->generate($doAcls, 3, true);
     // Test that $bannerId is in two sets
     $rsChannel = $this->dalAcls->getAclsByDataValueType($channelId, $type);
     $rsChannel->reset();
     $this->assertEqual($rsChannel->getRowCount(), 2);
 }
 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);
 }
 /**
  * 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 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]);
 }
 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);
 }
 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 testUpdate()
 {
     // Insert an agency
     $doAgency = OA_Dal::factoryDO('agency');
     $agencyId = $doAgency->insert();
     // Update the agency
     $doAgency = OA_Dal::staticGetDO('agency', $agencyId);
     $doAgency->name = 'bar';
     $doAgency->contact = 'baz';
     $doAgency->email = 'quux';
     $doAgency->update();
     $doAgencyResult = OA_Dal::staticGetDO('agency', $agencyId);
     $this->assertTrue($doAgencyResult->getRowCount(), 1);
     $this->assertEqual($doAgencyResult->name, 'bar');
     $this->assertEqual($doAgencyResult->contact, 'baz');
     $this->assertEqual($doAgencyResult->email, 'quux');
     DataGenerator::cleanUp(array('agency'));
 }
 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);
 }
 /**
  * A method to test the getAllDeliveryLimitationsByTypeId() method.
  *
  * Requirements:
  * Test 1:  Test for ad limitations with no data, and ensure null returned
  * Test 2:  Test for channel limitations with no data, and ensure null returned
  * Test 3:  Test with an ad limitation for an ad, but with a different ad id, and
  *          ensure null returned
  * Test 4:  Test with an ad limitation, but with a channel id, and ensure null
  *          returned
  * Test 5:  Test with an ad limitation, but with a bad $type, and ensure null
  *          returned
  * Test 6:  Test with an ad limitation, and ensure values returned
  * Test 7:  Test with a channel limitation, but with an ad id, and ensure null
  *          returned
  * Test 8:  Test with a channel limitation, but with a different channel id, and
  *          ensure null returned
  * Test 9:  Test with a channel limitation, but with a bad $type, and ensure null
  *          returned
  * Test 10: Test with a channel limitation, and ensure values returned
  */
 function testGetAllDeliveryLimitationsByTypeId()
 {
     $aConf = $GLOBALS['_MAX']['CONF'];
     $oDbh =& OA_DB::singleton();
     $oDalMaintenanceCommon = new OA_Dal_Maintenance_Common();
     // Test 1
     $aResult = $oDalMaintenanceCommon->getAllDeliveryLimitationsByTypeId(1, 'ad');
     $this->assertNull($aResult);
     // Test 2
     $aResult = $oDalMaintenanceCommon->getAllDeliveryLimitationsByTypeId(1, 'channel');
     $this->assertNull($aResult);
     $table = $aConf['table']['prefix'] . $aConf['table']['acls'];
     $query = "\n            INSERT INTO\n                " . $oDbh->quoteIdentifier($table, true) . "\n                (\n                    bannerid,\n                    logical,\n                    type,\n                    comparison,\n                    data,\n                    executionorder\n                )\n            VALUES\n                (?, ?, ?, ?, ?, ?)";
     $aTypes = array('integer', 'text', 'text', 'text', 'text', 'integer');
     $st = $oDbh->prepare($query, $aTypes, MDB2_PREPARE_MANIP);
     $aData = array(3, 'and', 'Time:Date', '!=', '2005-05-25', 0);
     $rows = $st->execute($aData);
     $aData = array(3, 'and', 'Geo:Country', '==', 'GB', 1);
     $rows = $st->execute($aData);
     // Test 3
     $aResult = $oDalMaintenanceCommon->getAllDeliveryLimitationsByTypeId(1, 'ad');
     $this->assertNull($aResult);
     // Test 4
     $aResult = $oDalMaintenanceCommon->getAllDeliveryLimitationsByTypeId(1, 'channel');
     $this->assertNull($aResult);
     // Test 5
     $aResult = $oDalMaintenanceCommon->getAllDeliveryLimitationsByTypeId(3, 'foo');
     $this->assertNull($aResult);
     // Test 6
     $aResult = $oDalMaintenanceCommon->getAllDeliveryLimitationsByTypeId(3, 'ad');
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual(count($aResult[0]), 6);
     $this->assertEqual($aResult[0]['ad_id'], 3);
     $this->assertEqual($aResult[0]['logical'], 'and');
     $this->assertEqual($aResult[0]['type'], 'Time:Date');
     $this->assertEqual($aResult[0]['comparison'], '!=');
     $this->assertEqual($aResult[0]['data'], '2005-05-25');
     $this->assertEqual($aResult[0]['executionorder'], 0);
     $this->assertEqual(count($aResult[1]), 6);
     $this->assertEqual($aResult[1]['ad_id'], 3);
     $this->assertEqual($aResult[1]['logical'], 'and');
     $this->assertEqual($aResult[1]['type'], 'Geo:Country');
     $this->assertEqual($aResult[1]['comparison'], '==');
     $this->assertEqual($aResult[1]['data'], 'GB');
     $this->assertEqual($aResult[1]['executionorder'], 1);
     $aCleanupTables = array($aConf['table']['acls']);
     foreach ($aCleanupTables as $table) {
         $query = "DELETE FROM {$aConf['table']['prefix']}{$table}";
         $oDbh->exec($query);
     }
     DataGenerator::resetSequence($aCleanupTables);
     TestEnv::restoreEnv();
     $table = $aConf['table']['prefix'] . $aConf['table']['acls_channel'];
     $query = "\n            INSERT INTO\n                " . $oDbh->quoteIdentifier($table, true) . "\n                (\n                    channelid,\n                    logical,\n                    type,\n                    comparison,\n                    data,\n                    executionorder\n                )\n            VALUES\n                (?, ?, ?, ?, ?, ?)";
     $aTypes = array('integer', 'text', 'text', 'text', 'text', 'integer');
     $st = $oDbh->prepare($query, $aTypes, MDB2_PREPARE_MANIP);
     $aData = array(3, 'and', 'Time:Date', '!=', '2005-05-25', 0);
     $rows = $st->execute($aData);
     $aData = array(3, 'and', 'Geo:Country', '==', 'GB', 1);
     $rows = $st->execute($aData);
     // Test 7
     $aResult = $oDalMaintenanceCommon->getAllDeliveryLimitationsByTypeId(1, 'ad');
     $this->assertNull($aResult);
     // Test 8
     $aResult = $oDalMaintenanceCommon->getAllDeliveryLimitationsByTypeId(1, 'channel');
     $this->assertNull($aResult);
     // Test 9
     $aResult = $oDalMaintenanceCommon->getAllDeliveryLimitationsByTypeId(3, 'foo');
     $this->assertNull($aResult);
     // Test 10
     $aResult = $oDalMaintenanceCommon->getAllDeliveryLimitationsByTypeId(3, 'channel');
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual(count($aResult[0]), 6);
     $this->assertEqual($aResult[0]['ad_id'], 3);
     $this->assertEqual($aResult[0]['logical'], 'and');
     $this->assertEqual($aResult[0]['type'], 'Time:Date');
     $this->assertEqual($aResult[0]['comparison'], '!=');
     $this->assertEqual($aResult[0]['data'], '2005-05-25');
     $this->assertEqual($aResult[0]['executionorder'], 0);
     $this->assertEqual(count($aResult[1]), 6);
     $this->assertEqual($aResult[1]['ad_id'], 3);
     $this->assertEqual($aResult[1]['logical'], 'and');
     $this->assertEqual($aResult[1]['type'], 'Geo:Country');
     $this->assertEqual($aResult[1]['comparison'], '==');
     $this->assertEqual($aResult[1]['data'], 'GB');
     $this->assertEqual($aResult[1]['executionorder'], 1);
     $aCleanupTables = array($aConf['table']['acls_channel']);
     foreach ($aCleanupTables as $table) {
         $query = "DELETE FROM {$aConf['table']['prefix']}{$table}";
         $oDbh->exec($query);
     }
     DataGenerator::resetSequence($aCleanupTables);
 }
 function tearDown()
 {
     DataGenerator::cleanUp();
 }
 /**
  * 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();
 }