function tearDown()
 {
     DataGenerator::cleanUp();
     $this->oDeliveryCacheCommon->invalidateAll();
     // Restore cache storage plugin settings
     $this->aConf['delivery']['cacheStoragePlugin'] = $this->currentCacheStorageSettings;
 }
 /**
  * A method to test the getEcpmAgenciesIds method.
  */
 function testGetEcpmAgenciesIds()
 {
     $this->_generateTestData();
     $da = new OA_Dal_Maintenance_Priority();
     $ret = $da->getEcpmAgenciesIds();
     $this->assertEqual($this->aExpectedData, $ret);
     DataGenerator::cleanUp();
 }
 function test_runScript()
 {
     $aExpectation = $this->_generateTestData();
     $oUpgrade = new OA_Upgrade();
     $oUpgrade->initDatabaseConnection();
     $this->assertTrue($oUpgrade->runScript('postscript_openads_upgrade_2.7.11-dev.php'));
     $this->_assertTestData($aExpectation);
     DataGenerator::cleanUp();
 }
 /**
  * A method to test the getCampaignsInfoByAgencyId method.
  */
 function testGetCampaignsInfoByAgencyIdAndPriority()
 {
     list($agencyId1, $agencyId2) = $this->_generateAgencyCampaigns($priority = 4, 1);
     $da = new OA_Dal_Maintenance_Priority();
     // Test 1 getCampaignsInfoByAgencyId method.
     $ret = $da->getCampaignsInfoByAgencyIdAndPriority($agencyId1, $priority);
     $this->checkTestResults($ret, $this->firsCampaignId, $this->firsAdId);
     // Test 2 getCampaignsInfoByAgencyId method.
     $ret = $da->getCampaignsInfoByAgencyIdAndPriority($agencyId2, $priority);
     $this->checkTestResults($ret, $this->secondCampaignId, $this->secondAdId);
     DataGenerator::cleanUp();
 }
 /**
  * Method to test the getAgencyEcpmContractCampaignsDeliveriesToDate method.
  *
  * Requirements:
  * Test 1: Test correct results are returned with no data.
  * Test 2: Test correct results are returned with single data entry.
  * Test 3: Test correct results are returned with multiple data entries.
  */
 function testGetAgencyEcpmContractCampaignsDeliveriesToDate()
 {
     $priority = 7;
     $oMaxDalMaintenance = new OA_Dal_Maintenance_Priority();
     list($agencyId1, $agencyId2) = $this->_commonTest($oMaxDalMaintenance, $priority);
     // Check that there are no results for agency 1 (when checking ecpm deliveries)
     $result = $oMaxDalMaintenance->getAgencyEcpmContractCampaignsDeliveriesToDate($agencyId1, $priority);
     $this->assertTrue(is_array($result));
     $this->assertEqual(count($result), 0);
     // Check that results for agency 2 are the same (when checking ecpm deliveries)
     $result = $oMaxDalMaintenance->getAgencyEcpmContractCampaignsDeliveriesToDate($agencyId2, $priority);
     $this->_testResult($result);
     DataGenerator::cleanUp();
 }
 /**
  * A method to test the getCampaigns method.
  */
 function testGetCampaigns()
 {
     /**
      * @TODO Locate where clean up doesn't happen before this test, and fix!
      */
     TestEnv::restoreEnv();
     $da = new OA_Dal_Maintenance_Priority();
     $this->_generateStatsOne();
     // Test 1 getCampaigns method.
     $ret = $da->getCampaigns();
     $this->assertTrue(is_array($ret));
     $this->assertTrue(count($ret) == 5);
     $campaign = $ret[0];
     $this->assertIsA($campaign, 'OX_Maintenance_Priority_Campaign');
     $this->assertEqual($campaign->id, 1);
     $this->assertEqual($campaign->impressionTargetTotal, 0);
     $this->assertEqual($campaign->clickTargetTotal, 400);
     $this->assertEqual($campaign->conversionTargetTotal, 0);
     $this->assertEqual($campaign->impressionTargetDaily, 0);
     $this->assertEqual($campaign->clickTargetDaily, 0);
     $this->assertEqual($campaign->conversionTargetDaily, 0);
     $this->assertEqual($campaign->priority, 3);
     // Test 2 getCampaignData method.
     $campaign = $da->getCampaignData(1);
     $this->assertTrue(is_array($campaign));
     $this->assertTrue(count($campaign) == 5);
     $this->assertTrue(array_key_exists('advertiser_id', $campaign));
     $this->assertTrue(array_key_exists('placement_id', $campaign));
     $this->assertTrue(array_key_exists('name', $campaign));
     $this->assertTrue(array_key_exists('status', $campaign));
     $this->assertTrue(array_key_exists('num_children', $campaign));
     // Test 3 getCampaignStats method.
     $ret = $da->getCampaignStats(1);
     $this->assertTrue(is_array($ret));
     $this->assertTrue(count($ret) == 9);
     $this->assertTrue(array_key_exists('advertiser_id', $ret));
     $this->assertTrue(array_key_exists('placement_id', $ret));
     $this->assertTrue(array_key_exists('name', $ret));
     $this->assertTrue(array_key_exists('status', $ret));
     $this->assertTrue(array_key_exists('num_children', $ret));
     $this->assertTrue(array_key_exists('sum_requests', $ret));
     $this->assertTrue(array_key_exists('sum_views', $ret));
     $this->assertTrue(array_key_exists('sum_clicks', $ret));
     $this->assertTrue(array_key_exists('sum_conversions', $ret));
     DataGenerator::cleanUp();
 }
 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'));
 }
 /**
  * Method to test the updateEcpmPriorities method.
  */
 function testUpdateEcpmPriorities()
 {
     $conf = $GLOBALS['_MAX']['CONF'];
     $oDal = new OA_Dal_Maintenance_Priority();
     // set up ad_zone_assoc records
     $this->addAdZoneAssoc($adId1 = 1, $zoneId1 = 1, 0.1);
     $this->addAdZoneAssoc($adId1 = 1, $zoneId2 = 2, 0.2);
     $this->addAdZoneAssoc($adId2 = 2, $zoneId3 = 3, 0.3);
     $this->addAdZoneAssoc($adId4 = 4, $zoneId4 = 4, $priority44 = 0.4);
     $aData = array($adId1 => array($zoneId1 => $priority11 = 0.11, $zoneId2 => $priority12 = 0.12), $adId2 => array($zoneId3 => $priority23 = 0.23));
     $ret = $oDal->updateEcpmPriorities($aData);
     $this->assertTrue($ret);
     $this->checkPriority($adId1, $zoneId1, $priority11);
     $this->checkPriority($adId1, $zoneId2, $priority12);
     $this->checkPriority($adId2, $zoneId3, $priority23);
     // Check that this priority didn't change
     $this->checkPriority($adId4, $zoneId4, $priority44);
     DataGenerator::cleanUp();
 }
 function testInsert()
 {
     $numTrackers = 2;
     $clientId = 7;
     // Prepare test data
     $doChannel = OA_Dal::factoryDO('channel');
     $doChannel->acls_updated = '2007-04-03 19:29:54';
     $channelId = DataGenerator::generateOne($doChannel, true);
     // Test non empty connection wondows
     $GLOBALS['_MAX']['CONF']['logging']['defaultImpressionConnectionWindow'] = 1000;
     $GLOBALS['_MAX']['CONF']['logging']['defaultClickConnectionWindow'] = 2000;
     $doCampaigns = OA_Dal::factoryDO('campaigns');
     $doCampaigns->clientid = $clientId;
     $campaignId = DataGenerator::generateOne($doCampaigns);
     $this->assertNotEmpty($campaignId);
     $this->assertEqual($doCampaigns->viewwindow, 1000);
     $this->assertEqual($doCampaigns->clickwindow, 2000);
     $GLOBALS['_MAX']['CONF']['logging']['defaultImpressionConnectionWindow'] = '';
     $GLOBALS['_MAX']['CONF']['logging']['defaultClickConnectionWindow'] = '';
     // Add trackers
     $doTrackers = OA_Dal::factoryDO('trackers');
     $doTrackers->clientid = $clientId;
     $doTrackers->linkcampaigns = 't';
     $aTrackerId = DataGenerator::generate($doTrackers, $numTrackers, false);
     $doTrackers = OA_Dal::factoryDO('trackers');
     $doTrackers->linkcampaigns = 'f';
     DataGenerator::generateOne($doTrackers);
     // redundant one
     // Test that inserting new campaigns triggers to insert new campaigns_trackers (if exists)
     $doCampaigns = OA_Dal::factoryDO('campaigns');
     $doCampaigns->clientid = $clientId;
     $campaignId = DataGenerator::generateOne($doCampaigns);
     $this->assertNotEmpty($campaignId);
     // Test that two campaign_trackers were inserted as well
     $doCampaigns_trackers = OA_Dal::factoryDO('campaigns_trackers');
     $doCampaigns_trackers->campaignid = $campaignId;
     $this->assertEqual($doCampaigns_trackers->count(), $numTrackers);
     // Delete any data which wasn't created by DataGenerator
     DataGenerator::cleanUp(array('campaigns', 'campaigns_trackers', 'trackers'));
 }
 /**
  * Method to test the updateCampaignsEcpms method.
  */
 function testUpdateCampaignsEcpms()
 {
     $conf = $GLOBALS['_MAX']['CONF'];
     $oDal = new OA_Dal_Maintenance_Priority();
     $aOldEcpms = array('0.1', '0.2', '0.3', '0.4', '0.5');
     $aCampaignsIds = array();
     foreach ($aOldEcpms as $ecpm) {
         $aCampaignsEcpms[$this->addCampaign($ecpm)] = $ecpm;
     }
     $testCampaignId = $this->addCampaign($testEcpm = '0.9');
     foreach ($aCampaignsEcpms as $campaignId => $ecpm) {
         $aCampaignsEcpms[$campaignId] += '0.01';
     }
     // update eCPMs
     $oDal->updateCampaignsEcpms($aCampaignsEcpms);
     // test that ecpms were correctly updates
     foreach ($aCampaignsEcpms as $campaignId => $ecpm) {
         $this->checkEcpm($campaignId, $ecpm);
     }
     // test that existing ecpms weren't changed
     $this->checkEcpm($testCampaignId, $testEcpm);
     DataGenerator::cleanUp();
 }
 /**
  * Method to test the getMaintenancePriorityLastRunInfo method.
  *
  * Requirements:
  * Test 1: Test correct results are returned with no data.
  * Test 2: Test correct results are returned with single data entry.
  * Test 3: Test correct results are returned with multiple data entries.
  * Test 4: Test correct results are returned with multiple run types.
  */
 function testGetMaintenancePriorityLastRunInfo()
 {
     $conf = $GLOBALS['_MAX']['CONF'];
     $oDbh =& OA_DB::singleton();
     $oMaxDalMaintenance = new OA_Dal_Maintenance_Priority();
     // Test 1
     $result = $oMaxDalMaintenance->getMaintenancePriorityLastRunInfo(DAL_PRIORITY_UPDATE_ECPM);
     $this->assertFalse($result);
     // Test 2
     $oStartDate = new Date('2005-06-21 15:00:01');
     $oEndDate = new Date('2005-06-21 15:01:01');
     $oUpdatedTo = new Date('2005-06-21 15:59:59');
     $oMaxDalMaintenance->setMaintenancePriorityLastRunInfo($oStartDate, $oEndDate, $oUpdatedTo, DAL_PRIORITY_UPDATE_ECPM);
     $result = $oMaxDalMaintenance->getMaintenancePriorityLastRunInfo(DAL_PRIORITY_UPDATE_ECPM);
     $this->assertTrue(is_array($result));
     $this->assertEqual($result['updated_to'], '2005-06-21 15:59:59');
     $this->assertEqual($result['operation_interval'], $conf['maintenance']['operationInterval']);
     // Test 3
     $oStartDate = new Date('2005-06-21 14:00:01');
     $oEndDate = new Date('2005-06-21 14:01:01');
     $oUpdatedTo = new Date('2005-06-21 14:59:59');
     $oMaxDalMaintenance->setMaintenancePriorityLastRunInfo($oStartDate, $oEndDate, $oUpdatedTo, DAL_PRIORITY_UPDATE_ECPM);
     $result = $oMaxDalMaintenance->getMaintenancePriorityLastRunInfo(DAL_PRIORITY_UPDATE_ECPM);
     $this->assertTrue(is_array($result));
     $this->assertEqual($result['updated_to'], '2005-06-21 15:59:59');
     $this->assertEqual($result['operation_interval'], $conf['maintenance']['operationInterval']);
     $oStartDate = new Date('2005-06-21 16:00:01');
     $oEndDate = new Date('2005-06-21 16:01:01');
     $oUpdatedTo = new Date('2005-06-21 16:59:59');
     $oMaxDalMaintenance->setMaintenancePriorityLastRunInfo($oStartDate, $oEndDate, $oUpdatedTo, DAL_PRIORITY_UPDATE_ECPM);
     $result = $oMaxDalMaintenance->getMaintenancePriorityLastRunInfo(DAL_PRIORITY_UPDATE_ECPM);
     $this->assertTrue(is_array($result));
     $this->assertEqual($result['updated_to'], '2005-06-21 16:59:59');
     $this->assertEqual($result['operation_interval'], $conf['maintenance']['operationInterval']);
     // Test 4
     $result = $oMaxDalMaintenance->getMaintenancePriorityLastRunInfo(DAL_PRIORITY_UPDATE_PRIORITY_COMPENSATION);
     $this->assertFalse($result);
     DataGenerator::cleanUp(array('log_maintenance_priority'));
 }
 /**
  * The method to test the getZonesForecasts() method.
  */
 function testgetZonesForecasts()
 {
     $this->_createTestData();
     $operationInterval = $GLOBALS['_MAX']['CONF']['maintenance']['operationInterval'];
     $oDal = new OA_Dal_Maintenance_Priority();
     $oLowerDate = new Date('2007-09-16 12:00:00');
     $oUpperDate = new Date('2007-09-16 17:00:00');
     $lowerDateStr = $oLowerDate->format(self::DATE_TIME_FORMAT);
     $upperDateStr = $oUpperDate->format(self::DATE_TIME_FORMAT);
     $weeks = 2;
     // Test with bad input
     $badAgencyId = -1;
     $result = $oDal->getZonesForecasts($lowerDateStr, $upperDateStr);
     $expected = array();
     $this->assertEqual($result, $expected);
     // Test with data outside the range
     $oDate = new Date('2007-09-16 11:00:00');
     $operationIntervalId = OX_OperationInterval::convertDateToOperationIntervalID($oDate);
     $aDates = OX_OperationInterval::convertDateToOperationIntervalStartAndEndDates($oDate);
     $previousOIDate = OX_OperationInterval::convertDateToPreviousOperationIntervalStartAndEndDates($oDate);
     $startDateStr = $aDates['start']->format(self::DATE_TIME_FORMAT);
     $endDateStr = $aDates['end']->format(self::DATE_TIME_FORMAT);
     $doDIA = OA_Dal::factoryDO('data_intermediate_ad');
     $aDIAs = DataGenerator::generate($doDIA, 1);
     $doDIA = OA_Dal::staticGetDO('data_intermediate_ad', $aDIAs[0]);
     $doDIA->date_time = $startDateStr;
     $doDIA->operation_interval = $operationInterval;
     $doDIA->zone_id = $this->zoneId1;
     $doDIA->ad_id = 1;
     $doDIA->impressions = 1000;
     $doDIA->update();
     $result = $oDal->getZonesForecasts($startDateStr, $endDateStr);
     $expected = array();
     $this->assertEqual($result, $expected);
     // Test with data inside the range
     $oDate = new Date('2007-09-16 13:00:00');
     $operationIntervalId = OX_OperationInterval::convertDateToOperationIntervalID($oDate);
     $aDates = OX_OperationInterval::convertDateToOperationIntervalStartAndEndDates($oDate);
     $previousOIDate = OX_OperationInterval::convertDateToPreviousOperationIntervalStartAndEndDates($oDate);
     $startDateStr = $aDates['start']->format(self::DATE_TIME_FORMAT);
     $endDateStr = $aDates['end']->format(self::DATE_TIME_FORMAT);
     $aDIAs = DataGenerator::generate($doDIA, 1);
     $doDIA = OA_Dal::staticGetDO('data_intermediate_ad', $aDIAs[0]);
     $doDIA->date_time = $previousOIDate['start']->format(self::DATE_TIME_FORMAT);
     $doDIA->operation_interval = $operationInterval;
     $doDIA->zone_id = $this->zoneId1;
     $doDIA->ad_id = 1;
     $doDIA->impressions = 70;
     $doDIA->update();
     $result = $oDal->getZonesForecasts($startDateStr, $endDateStr);
     $expected = array($this->zoneId1 => 70);
     $this->assertEqual($result, $expected);
     // Test with more data from the same zone
     $oDate = new Date('2007-09-16 14:00:00');
     $operationIntervalId = OX_OperationInterval::convertDateToOperationIntervalID($oDate);
     $aDates = OX_OperationInterval::convertDateToOperationIntervalStartAndEndDates($oDate);
     $previousOIDate = OX_OperationInterval::convertDateToPreviousOperationIntervalStartAndEndDates($oDate);
     $startDateStr = $aDates['start']->format(self::DATE_TIME_FORMAT);
     $endDateStr = $aDates['end']->format(self::DATE_TIME_FORMAT);
     $aDIAs = DataGenerator::generate($doDIA, 3);
     $doDIA = OA_Dal::staticGetDO('data_intermediate_ad', $aDIAs[0]);
     $doDIA->date_time = $previousOIDate['start']->format(self::DATE_TIME_FORMAT);
     $doDIA->operation_interval = $operationInterval;
     $doDIA->zone_id = $this->zoneId1;
     $doDIA->ad_id = 2;
     $doDIA->impressions = 90;
     $doDIA->update();
     $doDIA = OA_Dal::staticGetDO('data_intermediate_ad', $aDIAs[1]);
     $doDIA->date_time = $previousOIDate['start']->format(self::DATE_TIME_FORMAT);
     $doDIA->operation_interval = $operationInterval;
     $doDIA->zone_id = $this->zoneId1;
     $doDIA->ad_id = 4;
     $doDIA->impressions = 110;
     $doDIA->update();
     $doDIA = OA_Dal::staticGetDO('data_intermediate_ad', $aDIAs[2]);
     $doDIA->date_time = $previousOIDate['start']->format(self::DATE_TIME_FORMAT);
     $doDIA->operation_interval = $operationInterval;
     $doDIA->zone_id = $this->zoneId2;
     $doDIA->ad_id = 4;
     $doDIA->impressions = 15000;
     $doDIA->update();
     $result = $oDal->getZonesForecasts($startDateStr, $endDateStr);
     $expected = array($this->zoneId1 => 200, $this->zoneId2 => 15000);
     $this->assertEqual($result, $expected);
     DataGenerator::cleanUp();
 }
 function testDeleteUnverifiedUsers()
 {
     DataGenerator::cleanUp();
     $doUsers = OA_Dal::factoryDO('users');
     $cExistingUsers = $doUsers->count();
     // this user was created recently
     $doUsers = OA_Dal::factoryDO('users');
     $date = new Date();
     $date->subtractSeconds(SECONDS_PER_DAY);
     $doUsers->date_created = $doUsers->formatDate($date);
     $this->createUser($doUsers);
     // this user was created over a month ago - should be deleted
     $overMonthAgoSeconds = 31 * SECONDS_PER_DAY;
     $doUsers = OA_Dal::factoryDO('users');
     $date->subtractSeconds($overMonthAgoSeconds);
     $doUsers->date_created = $doUsers->formatDate($date);
     $this->createUser($doUsers);
     // this was created over a month ago but is verified
     $doUsers = OA_Dal::factoryDO('users');
     $date = new Date();
     $date->subtractSeconds($overMonthAgoSeconds);
     $doUsers->date_created = $doUsers->formatDate($date);
     $doUsers->sso_user_id = 123;
     $this->createUser($doUsers);
     $doUsers = OA_Dal::factoryDO('users');
     $this->assertEqual($doUsers->count(), 3 + $cExistingUsers);
     $doUsers = OA_Dal::factoryDO('users');
     $doUsers->deleteUnverifiedUsers(28 * SECONDS_PER_DAY);
     // check if one record was deleted
     $doUsers = OA_Dal::factoryDO('users');
     $this->assertEqual($doUsers->count(), 2 + $cExistingUsers);
 }
 function test_MAX_aclRecompileAll()
 {
     DataGenerator::cleanUp(array('acls'));
     $doBanners = OA_Dal::factoryDO('banners');
     $bannerId = DataGenerator::generateOne($doBanners);
     $doAcls = OA_Dal::factoryDO('acls');
     $doAcls->bannerid = $bannerId;
     $doAcls->logical = 'and';
     $doAcls->type = 'Dummy:Dummy';
     $doAcls->comparison = '=~';
     $doAcls->data = '0,1';
     $doAcls->executionorder = 1;
     $aclsId1 = DataGenerator::generateOne($doAcls);
     $doAcls = OA_Dal::factoryDO('acls');
     $doAcls->bannerid = $bannerId;
     $doAcls->logical = 'and';
     $doAcls->type = 'Dummy:Dummy';
     $doAcls->comparison = '!~';
     $doAcls->data = 'openx.org';
     $doAcls->executionorder = 0;
     $aclsId2 = DataGenerator::generateOne($doAcls);
     $this->assertTrue(MAX_AclReCompileAll());
     $doBanners =& OA_Dal::staticGetDO('banners', $bannerId);
     $this->assertEqual("MAX_checkDummy_Dummy('openx.org', '!~') and MAX_checkDummy_Dummy('0,1', '=~')", $doBanners->compiledlimitation);
     $this->assertEqual("Dummy:Dummy", $doBanners->acl_plugins);
 }
 /**
  * A method to test the getAdZoneAssociationsByAds method.
  *
  * Test 1: Test with bad input, and ensure that an empty array is retuend.
  * Test 2: Test with no data, and ensure that an empty array is returned.
  * Test 3: Test with one ad/zone link, and ensure the correct data is returned.
  * Test 4: Test with a more complex set of data.
  */
 function testGetAdZoneAssociationsByAds()
 {
     $conf = $GLOBALS['_MAX']['CONF'];
     $oDbh =& OA_DB::singleton();
     $oDal = new OA_Dal_Maintenance_Priority();
     // Test 1
     $result = $oDal->getAdZoneAssociationsByAds(1);
     $this->assertTrue(is_array($result));
     $this->assertEqual(count($result), 0);
     // Test 2
     $aAdIds = array(1);
     $result = $oDal->getAdZoneAssociationsByAds($aAdIds);
     $this->assertTrue(is_array($result));
     $this->assertEqual(count($result), 0);
     // Test 3
     $doZones = OA_Dal::factoryDO('zones');
     $zoneId = DataGenerator::generateOne($doZones, true);
     $doAdZone = OA_Dal::factoryDO('ad_zone_assoc');
     $doAdZone->ad_id = 1;
     $doAdZone->zone_id = $zoneId;
     $doAdZone->link_type = 1;
     $idAdZone = DataGenerator::generateOne($doAdZone);
     $aAdIds = array(1);
     $result = $oDal->getAdZoneAssociationsByAds($aAdIds);
     $this->assertTrue(is_array($result));
     $this->assertEqual(count($result), 1);
     $this->assertTrue(is_array($result[1]));
     $this->assertEqual(count($result[1]), 1);
     $this->assertTrue(is_array($result[1][0]));
     $this->assertEqual(count($result[1][0]), 1);
     $this->assertTrue(isset($result[1][0]['zone_id']));
     $this->assertEqual($result[1][0]['zone_id'], 1);
     DataGenerator::cleanUp();
     // Test 4
     $zoneId1 = DataGenerator::generateOne($doZones, true);
     $doAdZone->ad_id = 1;
     $doAdZone->zone_id = $zoneId1;
     $doAdZone->link_type = 1;
     $idAdZone = DataGenerator::generateOne($doAdZone);
     $zoneId2 = DataGenerator::generateOne($doZones, true);
     $doAdZone->ad_id = 1;
     $doAdZone->zone_id = $zoneId2;
     $doAdZone->link_type = 1;
     $idAdZone = DataGenerator::generateOne($doAdZone);
     $zoneId3 = DataGenerator::generateOne($doZones, true);
     $doAdZone->ad_id = 1;
     $doAdZone->zone_id = $zoneId3;
     $doAdZone->link_type = 1;
     $idAdZone = DataGenerator::generateOne($doAdZone);
     $doAdZone->ad_id = 2;
     $doAdZone->zone_id = $zoneId2;
     $doAdZone->link_type = 1;
     $idAdZone = DataGenerator::generateOne($doAdZone);
     $doAdZone->ad_id = 2;
     $doAdZone->zone_id = $zoneId3;
     $doAdZone->link_type = 0;
     $idAdZone = DataGenerator::generateOne($doAdZone);
     $zoneId = DataGenerator::generateOne($doZones, true);
     $doAdZone->ad_id = 3;
     $doAdZone->zone_id = $zoneId1;
     $doAdZone->link_type = 1;
     $idAdZone = DataGenerator::generateOne($doAdZone);
     $zoneId4 = DataGenerator::generateOne($doZones, true);
     $zoneId = DataGenerator::generateOne($doZones, true);
     $doAdZone->ad_id = 3;
     $doAdZone->zone_id = $zoneId4;
     $doAdZone->link_type = 1;
     $idAdZone = DataGenerator::generateOne($doAdZone);
     $aAdIds = array(1, 2, 3);
     $result = $oDal->getAdZoneAssociationsByAds($aAdIds);
     $this->assertTrue(is_array($result));
     $this->assertEqual(count($result), 3);
     $this->assertTrue(is_array($result[1]));
     $this->assertEqual(count($result[1]), 3);
     $this->assertTrue(is_array($result[1][0]));
     $this->assertEqual(count($result[1][0]), 1);
     $this->assertTrue(isset($result[1][0]['zone_id']));
     $this->assertEqual($result[1][0]['zone_id'], $zoneId1);
     $this->assertTrue(is_array($result[1][1]));
     $this->assertEqual(count($result[1][1]), 1);
     $this->assertTrue(isset($result[1][1]['zone_id']));
     $this->assertEqual($result[1][1]['zone_id'], $zoneId2);
     $this->assertTrue(is_array($result[1][2]));
     $this->assertEqual(count($result[1][2]), 1);
     $this->assertTrue(isset($result[1][2]['zone_id']));
     $this->assertEqual($result[1][2]['zone_id'], $zoneId3);
     $this->assertTrue(is_array($result[2]));
     $this->assertEqual(count($result[2]), 1);
     $this->assertTrue(is_array($result[2][0]));
     $this->assertEqual(count($result[2][0]), 1);
     $this->assertTrue(isset($result[2][0]['zone_id']));
     $this->assertEqual($result[2][0]['zone_id'], $zoneId2);
     $this->assertTrue(is_array($result[3]));
     $this->assertEqual(count($result[3]), 2);
     $this->assertTrue(is_array($result[3][0]));
     $this->assertEqual(count($result[3][0]), 1);
     $this->assertTrue(isset($result[3][0]['zone_id']));
     $this->assertEqual($result[3][0]['zone_id'], $zoneId1);
     $this->assertTrue(is_array($result[3][1]));
     $this->assertEqual(count($result[3][1]), 1);
     $this->assertTrue(isset($result[3][1]['zone_id']));
     $this->assertEqual($result[3][1]['zone_id'], $zoneId4);
     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();
 }
 /**
  * A method to test the sending of emails from the
  * manageCampaigns() method - tests the sending of
  * the "campaign about to expire" emails.
  */
 function testManageCampaignsEmailsPlacementToExpire()
 {
     // Set the date format
     global $date_format;
     $date_format = '%Y-%m-%d';
     // Set now as 1 week before
     $oDateNow = new Date('2008-01-10');
     $oServiceLocator =& OA_ServiceLocator::instance();
     $oServiceLocator->register('now', $oDateNow);
     // Insert the required preference values for dealing with email warnings
     $warnEmailAdminPreferenceId = $this->_createPreference('warn_email_admin', OA_ACCOUNT_ADMIN);
     $warnEmailAdminPreferenceImpressionLimitId = $this->_createPreference('warn_email_admin_impression_limit', OA_ACCOUNT_ADMIN);
     $warnEmailAdminPreferenceDayLimitId = $this->_createPreference('warn_email_admin_day_limit', OA_ACCOUNT_ADMIN);
     $this->_createPreference('warn_email_manager', OA_ACCOUNT_MANAGER);
     $this->_createPreference('warn_email_manager_impression_limit', OA_ACCOUNT_MANAGER);
     $this->_createPreference('warn_email_manager_day_limit', OA_ACCOUNT_MANAGER);
     $this->_createPreference('warn_email_advertiser', OA_ACCOUNT_ADVERTISER);
     $this->_createPreference('warn_email_advertiser_impression_limit', OA_ACCOUNT_ADVERTISER);
     $this->_createPreference('warn_email_advertiser_day_limit', OA_ACCOUNT_ADVERTISER);
     // Create the required accounts & set the various ID values
     $aValues = $this->_createAccounts();
     $adminAccountId = $aValues['adminAccount'];
     $advertiserClientId = $aValues['advertiserClient'];
     // Create a currently running placement with 100 impressions
     // remaining and set to expire on 2008-01-13
     $aData = array('clientid' => $advertiserClientId, 'status' => OA_ENTITY_STATUS_RUNNING, 'views' => '100', 'expire_time' => '2008-01-13 23:59:59');
     $campaignId = $this->_insertPlacement($aData);
     // Reset now
     $oServiceLocator->remove('now');
     // Insert a banner for the placement
     $aData = array('campaignid' => $campaignId);
     $adId = $this->_insertAd($aData);
     // Create an instance of the mocked OA_Email class, and set
     // expectations on how the class' methods should be called
     // based on the above
     Mock::generate('OA_Email');
     $oEmailMock = new MockOA_Email($this);
     $oEmailMock->expectOnce('sendCampaignImpendingExpiryEmail');
     // Register the mocked OA_Email class in the service locator
     $oServiceLocator =& OA_ServiceLocator::instance();
     $oServiceLocator->register('OA_Email', $oEmailMock);
     // Run the manageCampaigns() method and ensure that the correct
     // calls to OA_Email were made
     $oDate = new Date('2008-01-11 23:00:01');
     $oFactory = new OX_Dal_Maintenance_Statistics_Factory();
     $oDalMaintenanceStatistics = $oFactory->factory();
     $report = $oDalMaintenanceStatistics->manageCampaigns($oDate);
     $oEmailMock->tally();
     // Now set the preference that states that the admin account
     // wants to get email warnings
     $this->_insertPreference($adminAccountId, $warnEmailAdminPreferenceId, 'true');
     // Create a new instance of the mocked OA_Email class, and set
     // expectations on how the class' methods should be called
     // based on the above
     $oEmailMock = new MockOA_Email($this);
     $oEmailMock->expectOnce('sendCampaignImpendingExpiryEmail');
     // Register the mocked OA_Email class in the service locator
     $oServiceLocator =& OA_ServiceLocator::instance();
     $oServiceLocator->register('OA_Email', $oEmailMock);
     // Run the manageCampaigns() method and ensure that the correct
     // calls to OA_Email were made
     $oDate = new Date('2008-01-11 23:00:01');
     $oDalMaintenanceStatistics = $oFactory->factory();
     $report = $oDalMaintenanceStatistics->manageCampaigns($oDate);
     $oEmailMock->tally();
     // Now set the preference that states that the admin account
     // wants to get email warnings if there are less than 50
     // impressions remaining
     $this->_insertPreference($adminAccountId, $warnEmailAdminPreferenceImpressionLimitId, '50');
     // Create a new instance of the mocked OA_Email class, and set
     // expectations on how the class' methods should be called
     // based on the above
     $oEmailMock = new MockOA_Email($this);
     $oEmailMock->expectOnce('sendCampaignImpendingExpiryEmail');
     // Register the mocked OA_Email class in the service locator
     $oServiceLocator =& OA_ServiceLocator::instance();
     $oServiceLocator->register('OA_Email', $oEmailMock);
     // Run the manageCampaigns() method and ensure that the correct
     // calls to OA_Email were made
     $oDate = new Date('2008-01-11 23:00:01');
     $oDalMaintenanceStatistics = $oFactory->factory();
     $report = $oDalMaintenanceStatistics->manageCampaigns($oDate);
     $oEmailMock->tally();
     // Delivery 60 impressions out of the 100, so that only 40 remain
     // (i.e. less than the 50 limit set above)
     $aData = array('operation_interval_id' => 25, 'interval_start' => '2008-01-11 22:00:00', 'interval_end' => '2008-01-11 22:59:59', 'hour' => 0, 'ad_id' => $adId, 'impressions' => 60);
     $this->_insertDataIntermediateAd($aData);
     // Create a new instance of the mocked OA_Email class, and set
     // expectations on how the class' methods should be called
     // based on the above
     $oEmailMock = new MockOA_Email($this);
     $oEmailMock->expectOnce('sendCampaignImpendingExpiryEmail', array($oDate, "{$campaignId}"));
     // Register the mocked OA_Email class in the service locator
     $oServiceLocator =& OA_ServiceLocator::instance();
     $oServiceLocator->register('OA_Email', $oEmailMock);
     // Run the manageCampaigns() method and ensure that the correct
     // calls to OA_Email were made
     $oDate = new Date('2008-01-11 23:00:01');
     $oDalMaintenanceStatistics = $oFactory->factory();
     $report = $oDalMaintenanceStatistics->manageCampaigns($oDate);
     $oEmailMock->tally();
     // Clean up
     DataGenerator::cleanUp();
 }
 /**
  * Method to test the getZonesForecastsForAllZones method.
  *
  * Requirements:
  * Test 1: Test with no Date registered in the service locator, ensure false returned.
  * Test 2: Test with a Date registered in the service locator, no data in the database,
  *         and ensure no data is returned.
  * Test 3: Test with forecast data but no actual impressions
  * Test 3.5: Test with actual data but no forecast impressions
  * Test 4: Test with data both in, and not in, the current OI, and ensure the correct
  *         data is returned.
  * Test 5: Repeat Test 4, but with additional zones (that don't have data) in the zones
  *         table.
  */
 function testGetAllZonesImpInv()
 {
     $conf = $GLOBALS['_MAX']['CONF'];
     $oDbh =& OA_DB::singleton();
     $oMaxDalMaintenance = new OA_Dal_Maintenance_Priority();
     $zoneForecastDefaultZoneImpressions = 0;
     // $oMaxDalMaintenance->getZoneForecastDefaultZoneImpressions();
     // Test 1
     $oServiceLocator =& OA_ServiceLocator::instance();
     $oServiceLocator->remove('now');
     $result =& $oMaxDalMaintenance->getZonesForecastsForAllZones();
     $this->assertFalse($result);
     // Test 2
     $oDate = new Date();
     $oServiceLocator->register('now', $oDate);
     $result =& $oMaxDalMaintenance->getZonesForecastsForAllZones();
     $this->assertEqual($result, array(0 => $zoneForecastDefaultZoneImpressions));
     // Zone 0
     // Test 3
     // generate the first zone
     $aZones = $this->_generateTestZones(1);
     //         only generate previous OI delivered impressions, should return zone 0 only
     $oDate =& $oServiceLocator->get('now');
     $oNewDate = new Date();
     $oNewDate->copy($oDate);
     $oNewDate->subtractSeconds($conf['maintenance']['operationInterval'] * 60 + 1);
     $aDates = OX_OperationInterval::convertDateToOperationIntervalStartAndEndDates($oNewDate);
     $this->_generateTestHistory(1, $aDates, 42, 0);
     $result =& $oMaxDalMaintenance->getZonesForecastsForAllZones();
     $expected = array(0 => $zoneForecastDefaultZoneImpressions, 1 => $zoneForecastDefaultZoneImpressions);
     $this->assertEqual($result, $expected);
     // Test 3.5
     // generate the second zone
     $aZones = $this->_generateTestZones(1);
     //     only generate previous OI forecasted impressions, should return zone 0 only
     $oNewDate = new Date();
     $oNewDate->copy($aDates['start']);
     $oNewDate->subtractSeconds(1);
     $aDates = OX_OperationInterval::convertDateToOperationIntervalStartAndEndDates($oNewDate);
     $this->_generateTestHistory(2, $aDates, 0, 37);
     $result =& $oMaxDalMaintenance->getZonesForecastsForAllZones();
     $expected = array(0 => $zoneForecastDefaultZoneImpressions, 1 => $zoneForecastDefaultZoneImpressions, 2 => $zoneForecastDefaultZoneImpressions);
     $this->assertEqual($result, $expected);
     $oDate =& $oServiceLocator->get('now');
     DataGenerator::cleanUp();
     $oServiceLocator->register('now', $oDate);
     // Test 4
     $oDate =& $oServiceLocator->get('now');
     // generate three zone
     $this->_generateTestZones(3);
     // set forecast and impressions for OI - 1
     $aDates = OX_OperationInterval::convertDateToOperationIntervalStartAndEndDates($oDate);
     $this->_generateTestHistory(1, $aDates, 42, 100);
     $this->_generateTestHistory(2, $aDates, 5, 2);
     $this->_generateTestHistory(3, $aDates, 9999, 9999);
     $result =& $oMaxDalMaintenance->getZonesForecastsForAllZones();
     $expected = array(0 => $zoneForecastDefaultZoneImpressions, 1 => 42, 2 => 5, 3 => 9999);
     $this->assertEqual($result, $expected);
     // Test 5
     // New zone must appear in the array with default forecast
     $aZones = $this->_generateTestZones(1);
     $result =& $oMaxDalMaintenance->getZonesForecastsForAllZones();
     $expected = array(0 => $zoneForecastDefaultZoneImpressions, 1 => 42, 2 => 5, 3 => 9999, 4 => $zoneForecastDefaultZoneImpressions);
     $result =& $oMaxDalMaintenance->getZonesForecastsForAllZones();
     $this->assertEqual($result, $expected);
     // register forecast for the OI before, this should not affect current OI forecast
     $oDate =& $oServiceLocator->get('now');
     $aDates = OX_OperationInterval::convertDateToPreviousOperationIntervalStartAndEndDates($oDate);
     $currentOpIntID = OX_OperationInterval::convertDateToOperationIntervalID($aDates['start']);
     $this->_generateTestHistory(1, $aDates, 3700, 0);
     $this->_generateTestHistory(2, $aDates, 300, 0);
     $this->_generateTestHistory(3, $aDates, 500, 0);
     $result =& $oMaxDalMaintenance->getZonesForecastsForAllZones();
     $this->assertEqual($result, $expected);
     DataGenerator::cleanUp();
 }
Esempio n. 19
0
 function tearDown()
 {
     DataGenerator::cleanUp(array('zones'));
 }
 /**
  * A "real-life" test of the deduplicateConversions() method.
  *
  * - Tracker ID 1 tracks two variables, on non-unique, and one unique.
  * - Tracker ID 2 tracks one variable, which is unique.
  *
  * Between 12:00 and 13:00:
  * - One conversion for Tracker ID 1.
  * - One conversion for Tracker ID 2.
  * - Obviously, de-duplication is tested to ensure that both conversions
  *   remain as "approved".
  *
  * Between 13:00 and 14:00
  * - One conversion for Tracker ID 1, where the conversion is within
  *   the de-duplication window, but the variable value is not the
  *   same as for the conversion in the previous hour.
  * - Another conversion for Tracker ID 1, where the conversion is
  *   again within the de-duplication window, but this time, the
  *   variable value is the same as the conversion in the previous
  *   hour.
  * - De-duplication is tested to ensure that the first of the above
  *   conversions remains as "approved", while the second is changed
  *   to "duplicate".
  *
  * Between 14:00 and 15:00
  * - One conversion for Tracker ID 1, with a non-unique logged variable
  *   value, where the conversion is not within the de-duplication
  *   window of the original "approved" conversion, but is within the
  *   conversion window of a previously marked "duplicate" conversion.
  * - One conversion for Tracker ID 2, with a non-unique logged variable
  *   value, where the conversion is not within the de-duplication window.
  * - De-duplication is tested to ensure that the conversion where a
  *   duplicate conversion was located is also marked as "duplicate",
  *   while the other conversion with no matching conversions in the
  *   required de-duplication window does not have its "approved" status
  *   changed.
  */
 function testDeduplicateConversions_33()
 {
     // Prepare the non-unique variable value that should
     // be tracked with Tracker ID 1
     $aData = array('trackerid' => 1, 'name' => 'Tracker ID 1 Non-Unique Variable', 'is_unique' => 0, 'unique_window' => 3600);
     $trackerVariableId1 = $this->_insertVariable($aData);
     // Prepare the unique variable value that should
     // be tracked with Tracker ID 1
     $aData = array('trackerid' => 1, 'name' => 'Tracker ID 1 Unique Variable', 'is_unique' => 1, 'unique_window' => 3600);
     $trackerVariableId2 = $this->_insertVariable($aData);
     // Prepare the unique variable value that should
     // be tracked with tracker ID 2
     $aData = array('trackerid' => 2, 'name' => 'Trackers ID 2 Unique Variable', 'is_unique' => 1, 'unique_window' => 3600);
     $trackerVariableId3 = $this->_insertVariable($aData);
     /******************************************************************/
     // Insert a connection at 12:10:00, from a click on ad ID 5, zone ID 6, at 12:09,
     // using Tracker ID 1
     $aData = array('server_raw_tracker_impression_id' => 1, 'server_raw_ip' => 'singleDB', 'tracker_id' => 1, 'tracker_date_time' => '2005-09-05 12:10:00', 'connection_date_time' => '2005-09-05 12:09:00', 'ad_id' => 5, 'zone_id' => 6, 'connection_action' => MAX_CONNECTION_AD_CLICK, 'connection_window' => 1209600, 'connection_status' => MAX_CONNECTION_STATUS_APPROVED);
     $conversionId1 = $this->_insertDataIntermediateAdConnection($aData);
     // Insert the variable values for the conversion
     $aData = array('data_intermediate_ad_connection_id' => $conversionId1, 'tracker_variable_id' => $trackerVariableId1, 'value' => 'non-unique tracked value');
     $this->_insertDataIntermediateAdVariableValue($aData);
     $aData = array('data_intermediate_ad_connection_id' => $conversionId1, 'tracker_variable_id' => $trackerVariableId2, 'value' => 'unique tracked value');
     $this->_insertDataIntermediateAdVariableValue($aData);
     // Insert a connection at 12:15:00, from a click on ad ID 7, zone ID 8, at 12:14,
     // using Tracker ID 2
     $aData = array('server_raw_tracker_impression_id' => 2, 'server_raw_ip' => 'singleDB', 'tracker_id' => 2, 'tracker_date_time' => '2005-09-05 12:15:00', 'connection_date_time' => '2005-09-05 12:14:00', 'ad_id' => 7, 'zone_id' => 8, 'connection_action' => MAX_CONNECTION_AD_CLICK, 'connection_window' => 1209600, 'connection_status' => MAX_CONNECTION_STATUS_APPROVED);
     $conversionId2 = $this->_insertDataIntermediateAdConnection($aData);
     // Insert the variable value for the conversion
     $aData = array('data_intermediate_ad_connection_id' => $conversionId2, 'tracker_variable_id' => $trackerVariableId3, 'value' => 'unique tracked value');
     $this->_insertDataIntermediateAdVariableValue($aData);
     // De-duplicate the 12:00 - 13:00 hour
     $oStartDate = new Date('2005-09-05 12:00:00');
     $oEndDate = new Date('2005-09-07 12:59:59');
     $this->oDal->deduplicateConversions($oStartDate, $oEndDate);
     // Test the results
     $rows = $this->_countDataIntermediateAdConnections();
     $this->assertEqual($rows, 2);
     $rows = $this->_countDataIntermediateAdConnectionsApproved();
     $this->assertEqual($rows, 2);
     /******************************************************************/
     // Insert a connection at 13:05:00, from a click on ad ID 5, zone ID 6, at 13:04,
     // using Tracker ID 1
     $aData = array('server_raw_tracker_impression_id' => 3, 'server_raw_ip' => 'singleDB', 'tracker_id' => 1, 'tracker_date_time' => '2005-09-05 13:05:00', 'connection_date_time' => '2005-09-05 13:04:00', 'ad_id' => 5, 'zone_id' => 6, 'connection_action' => MAX_CONNECTION_AD_CLICK, 'connection_window' => 1209600, 'connection_status' => MAX_CONNECTION_STATUS_APPROVED);
     $conversionId3 = $this->_insertDataIntermediateAdConnection($aData);
     // Insert the variable values for the conversion
     $aData = array('data_intermediate_ad_connection_id' => $conversionId3, 'tracker_variable_id' => $trackerVariableId1, 'value' => 'non-unique tracked value');
     $this->_insertDataIntermediateAdVariableValue($aData);
     $aData = array('data_intermediate_ad_connection_id' => $conversionId3, 'tracker_variable_id' => $trackerVariableId2, 'value' => 'unique tracked value, but a different one :-)');
     $this->_insertDataIntermediateAdVariableValue($aData);
     // Insert a connection at 13:06:00, from a click on ad ID 5, zone ID 6, at 13:05,
     // using Tracker ID 1
     $aData = array('server_raw_tracker_impression_id' => 4, 'server_raw_ip' => 'singleDB', 'tracker_id' => 1, 'tracker_date_time' => '2005-09-05 13:06:00', 'connection_date_time' => '2005-09-05 13:05:00', 'ad_id' => 5, 'zone_id' => 6, 'connection_action' => MAX_CONNECTION_AD_CLICK, 'connection_window' => 1209600, 'connection_status' => MAX_CONNECTION_STATUS_APPROVED);
     $conversionId4 = $this->_insertDataIntermediateAdConnection($aData);
     // Insert the variable values for the conversion
     $aData = array('data_intermediate_ad_connection_id' => $conversionId4, 'tracker_variable_id' => $trackerVariableId1, 'value' => 'non-unique tracked value');
     $this->_insertDataIntermediateAdVariableValue($aData);
     $aData = array('data_intermediate_ad_connection_id' => $conversionId4, 'tracker_variable_id' => $trackerVariableId2, 'value' => 'unique tracked value');
     $this->_insertDataIntermediateAdVariableValue($aData);
     // De-duplicate the 13:00 - 14:00 hour
     $oStartDate = new Date('2005-09-05 13:00:00');
     $oEndDate = new Date('2005-09-07 13:59:59');
     $this->oDal->deduplicateConversions($oStartDate, $oEndDate);
     // Test the results
     $rows = $this->_countDataIntermediateAdConnections();
     $this->assertEqual($rows, 4);
     $rows = $this->_countDataIntermediateAdConnectionsApproved();
     $this->assertEqual($rows, 3);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->data_intermediate_ad_connection_id = $conversionId1;
     $doData_intermediate_ad_connection->find();
     $doData_intermediate_ad_connection->fetch();
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->data_intermediate_ad_connection_id = $conversionId2;
     $doData_intermediate_ad_connection->find();
     $doData_intermediate_ad_connection->fetch();
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->data_intermediate_ad_connection_id = $conversionId3;
     $doData_intermediate_ad_connection->find();
     $doData_intermediate_ad_connection->fetch();
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $rows = $this->_countDataIntermediateAdConnectionsDuplicate();
     $this->assertEqual($rows, 1);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->data_intermediate_ad_connection_id = $conversionId4;
     $doData_intermediate_ad_connection->find();
     $doData_intermediate_ad_connection->fetch();
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_DUPLICATE);
     /******************************************************************/
     // Insert a connection at 14:02:00, from a click on ad ID 5, zone ID 6, at 14:01,
     // using Tracker ID 1
     $aData = array('server_raw_tracker_impression_id' => 5, 'server_raw_ip' => 'singleDB', 'tracker_id' => 1, 'tracker_date_time' => '2005-09-05 14:02:00', 'connection_date_time' => '2005-09-05 14:01:00', 'ad_id' => 5, 'zone_id' => 6, 'connection_action' => MAX_CONNECTION_AD_CLICK, 'connection_window' => 1209600, 'connection_status' => MAX_CONNECTION_STATUS_APPROVED);
     $conversionId5 = $this->_insertDataIntermediateAdConnection($aData);
     // Insert the variable values for the conversion
     $aData = array('data_intermediate_ad_connection_id' => $conversionId5, 'tracker_variable_id' => $trackerVariableId1, 'value' => 'non-unique tracked value');
     $this->_insertDataIntermediateAdVariableValue($aData);
     $aData = array('data_intermediate_ad_connection_id' => $conversionId5, 'tracker_variable_id' => $trackerVariableId2, 'value' => 'unique tracked value');
     $this->_insertDataIntermediateAdVariableValue($aData);
     // Insert a connection at 14:15:00, from a click on ad ID 7, zone ID 8, at 14:14,
     // using Tracker ID 2
     $aData = array('server_raw_tracker_impression_id' => 6, 'server_raw_ip' => 'singleDB', 'tracker_id' => 2, 'tracker_date_time' => '2005-09-05 14:15:00', 'connection_date_time' => '2005-09-05 14:14:00', 'ad_id' => 7, 'zone_id' => 8, 'connection_action' => MAX_CONNECTION_AD_CLICK, 'connection_window' => 1209600, 'connection_status' => MAX_CONNECTION_STATUS_APPROVED);
     $conversionId6 = $this->_insertDataIntermediateAdConnection($aData);
     // Insert the variable value for the conversion
     $aData = array('data_intermediate_ad_connection_id' => $conversionId6, 'tracker_variable_id' => $trackerVariableId3, 'value' => 'unique tracked value');
     $this->_insertDataIntermediateAdVariableValue($aData);
     // De-duplicate the 14:00 - 15:00 hour
     $oStartDate = new Date('2005-09-05 14:00:00');
     $oEndDate = new Date('2005-09-07 14:59:59');
     $this->oDal->deduplicateConversions($oStartDate, $oEndDate);
     // Test the results
     $rows = $this->_countDataIntermediateAdConnections();
     $this->assertEqual($rows, 6);
     $rows = $this->_countDataIntermediateAdConnectionsApproved();
     $this->assertEqual($rows, 4);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->data_intermediate_ad_connection_id = $conversionId1;
     $doData_intermediate_ad_connection->find();
     $doData_intermediate_ad_connection->fetch();
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->data_intermediate_ad_connection_id = $conversionId2;
     $doData_intermediate_ad_connection->find();
     $doData_intermediate_ad_connection->fetch();
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->data_intermediate_ad_connection_id = $conversionId3;
     $doData_intermediate_ad_connection->find();
     $doData_intermediate_ad_connection->fetch();
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->data_intermediate_ad_connection_id = $conversionId6;
     $doData_intermediate_ad_connection->find();
     $doData_intermediate_ad_connection->fetch();
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_APPROVED);
     $rows = $this->_countDataIntermediateAdConnectionsDuplicate();
     $this->assertEqual($rows, 2);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->data_intermediate_ad_connection_id = $conversionId4;
     $doData_intermediate_ad_connection->find();
     $doData_intermediate_ad_connection->fetch();
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_DUPLICATE);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->data_intermediate_ad_connection_id = $conversionId5;
     $doData_intermediate_ad_connection->find();
     $doData_intermediate_ad_connection->fetch();
     $this->assertEqual($doData_intermediate_ad_connection->connection_status, MAX_CONNECTION_STATUS_DUPLICATE);
     // Clean up
     DataGenerator::cleanUp();
 }
 function tearDown()
 {
     DataGenerator::cleanUp();
     $this->oDeliveryCacheManager->invalidateAll();
 }
 /**
  * A method to test the _runGeneralPruning() method.
  */
 function test_runGeneralPruning()
 {
     $oNowDate = new Date('2007-09-28 12:00:01');
     $oServiceLocator =& OA_ServiceLocator::instance();
     $oServiceLocator->register('now', $oNowDate);
     $oMaintenance = new OX_Maintenance();
     // Test 1: Assert no data present at start of tests
     $doLog_maintenance_statistics = OA_Dal::factoryDO('log_maintenance_statistics');
     $doLog_maintenance_statistics->find();
     $rows = $doLog_maintenance_statistics->getRowCount();
     $this->assertEqual($rows, 0);
     $doLog_maintenance_priority = OA_Dal::factoryDO('log_maintenance_priority');
     $doLog_maintenance_priority->find();
     $rows = $doLog_maintenance_priority->getRowCount();
     $this->assertEqual($rows, 0);
     $doUserlog = OA_Dal::factoryDO('userlog');
     $doUserlog->find();
     $rows = $doUserlog->getRowCount();
     $this->assertEqual($rows, 0);
     // Test 2: Assert still no data after running
     $oMaintenance->_runGeneralPruning();
     $doLog_maintenance_statistics = OA_Dal::factoryDO('log_maintenance_statistics');
     $doLog_maintenance_statistics->find();
     $rows = $doLog_maintenance_statistics->getRowCount();
     $this->assertEqual($rows, 0);
     $doLog_maintenance_priority = OA_Dal::factoryDO('log_maintenance_priority');
     $doLog_maintenance_priority->find();
     $rows = $doLog_maintenance_priority->getRowCount();
     $this->assertEqual($rows, 0);
     $doUserlog = OA_Dal::factoryDO('userlog');
     $doUserlog->find();
     $rows = $doUserlog->getRowCount();
     $this->assertEqual($rows, 0);
     // Test 3: Insert test data, and assert its presence
     $doLog_maintenance_statistics = OA_Dal::factoryDO('log_maintenance_statistics');
     $doLog_maintenance_statistics->start_run = '2007-09-28 11:00:01';
     $idStatsOne = DataGenerator::generateOne($doLog_maintenance_statistics);
     $doLog_maintenance_statistics = OA_Dal::factoryDO('log_maintenance_statistics');
     $doLog_maintenance_statistics->start_run = '2007-09-28 10:00:01';
     $idStatsTwo = DataGenerator::generateOne($doLog_maintenance_statistics);
     $doLog_maintenance_statistics = OA_Dal::factoryDO('log_maintenance_statistics');
     $doLog_maintenance_statistics->start_run = '2007-08-28 11:00:01';
     $idStatsThree = DataGenerator::generateOne($doLog_maintenance_statistics);
     $doLog_maintenance_priority = OA_Dal::factoryDO('log_maintenance_priority');
     $doLog_maintenance_priority->start_run = '2007-09-28 11:00:01';
     $idPriorityOne = DataGenerator::generateOne($doLog_maintenance_priority);
     $doLog_maintenance_priority = OA_Dal::factoryDO('log_maintenance_priority');
     $doLog_maintenance_priority->start_run = '2007-09-28 10:00:01';
     $idPriorityTwo = DataGenerator::generateOne($doLog_maintenance_priority);
     $doLog_maintenance_priority = OA_Dal::factoryDO('log_maintenance_priority');
     $doLog_maintenance_priority->start_run = '2007-08-28 11:00:01';
     $idPriorityThree = DataGenerator::generateOne($doLog_maintenance_priority);
     $oDate = new Date('2007-09-28 11:01:01');
     $doUserlog = OA_Dal::factoryDO('userlog');
     $doUserlog->timestamp = $oDate->getTime();
     $idUserlogOne = DataGenerator::generateOne($doUserlog);
     $oDate = new Date('2007-09-28 10:01:01');
     $doUserlog = OA_Dal::factoryDO('userlog');
     $doUserlog->timestamp = $oDate->getTime();
     $idUserlogTwo = DataGenerator::generateOne($doUserlog);
     $oDate = new Date('2007-08-28 11:01:01');
     $doUserlog = OA_Dal::factoryDO('userlog');
     $doUserlog->timestamp = $oDate->getTime();
     $idUserlogThree = DataGenerator::generateOne($doUserlog);
     $doLog_maintenance_statistics = OA_Dal::factoryDO('log_maintenance_statistics');
     $doLog_maintenance_statistics->find();
     $rows = $doLog_maintenance_statistics->getRowCount();
     $this->assertEqual($rows, 3);
     $doLog_maintenance_priority = OA_Dal::factoryDO('log_maintenance_priority');
     $doLog_maintenance_priority->find();
     $rows = $doLog_maintenance_priority->getRowCount();
     $this->assertEqual($rows, 3);
     $doUserlog = OA_Dal::factoryDO('userlog');
     $doUserlog->find();
     $rows = $doUserlog->getRowCount();
     $this->assertEqual($rows, 3);
     // Test 4: Ensure the correct old data has been pruned after running
     $oMaintenance->_runGeneralPruning();
     $doLog_maintenance_statistics = OA_Dal::factoryDO('log_maintenance_statistics');
     $doLog_maintenance_statistics->find();
     $rows = $doLog_maintenance_statistics->getRowCount();
     $this->assertEqual($rows, 2);
     while ($doLog_maintenance_statistics->fetch()) {
         $this->assertNotEqual($doLog_maintenance_statistics->id, $idStatsThree);
     }
     $doLog_maintenance_priority = OA_Dal::factoryDO('log_maintenance_priority');
     $doLog_maintenance_priority->find();
     $rows = $doLog_maintenance_priority->getRowCount();
     $this->assertEqual($rows, 2);
     while ($doLog_maintenance_priority->fetch()) {
         $this->assertNotEqual($doLog_maintenance_priority->id, $idPriorityThree);
     }
     $doUserlog = OA_Dal::factoryDO('userlog');
     $doUserlog->find();
     $rows = $doUserlog->getRowCount();
     $this->assertEqual($rows, 2);
     while ($doUserlog->fetch()) {
         $this->assertNotEqual($doUserlog->id, $idUserlogThree);
     }
     DataGenerator::cleanUp();
 }
Esempio n. 23
0
 /**
  * Test tGetCampaignConversionStatistics.
  *
  */
 function testGetCampaignConversionStatistics()
 {
     $doBanner = OA_Dal::factoryDO('banners');
     $doCampaign = OA_Dal::factoryDO('campaigns');
     $campaignId = DataGenerator::generateOne($doCampaign);
     $doBanner->campaignid = $campaignId;
     $bannerId = DataGenerator::generateOne($doBanner);
     // Test 1: Test with no data
     $oStartDate = new Date('2004-06-06 12:00:00');
     $oEndDate = new Date('2004-06-06 12:59:59');
     $aResult = $this->_dalCampaignStatistics->getCampaignConversionStatistics($campaignId, $oStartDate, $oEndDate);
     $this->assertEmpty($aResult, 'No records should be returned');
     // Test 2: Test with data that is outside the range to manage
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->tracker_date_time = '2004-06-05 11:59:59';
     $doData_intermediate_ad_connection->tracker_id = 501;
     $doData_intermediate_ad_connection->ad_id = $bannerId;
     $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1';
     $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK;
     $doData_intermediate_ad_connection->connection_window = 3600;
     $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED;
     $connectionId1 = DataGenerator::generateOne($doData_intermediate_ad_connection);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId1;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 1;
     $doData_intermediate_ad_variable_value->value = 'test_value1';
     $conecctionVariableValueId = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId1;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 2;
     $doData_intermediate_ad_variable_value->value = 'test_value2';
     $conecctionVariableValueId2 = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $doVariables = OA_Dal::factoryDO('variables');
     $doVariables->variableid = 1;
     $doVariables->trackerid = 501;
     $doVariables->name = 'test_variable1_name';
     DataGenerator::generateOne($doVariables);
     $doVariables = OA_Dal::factoryDO('variables');
     $doVariables->variableid = 2;
     $doVariables->trackerid = 501;
     $doVariables->name = 'test_variable2_name';
     DataGenerator::generateOne($doVariables);
     $aResult = $this->_dalCampaignStatistics->getCampaignConversionStatistics($campaignId, $oStartDate, $oEndDate);
     // Get 0 Row
     $this->assertEmpty($aResult, '0 records should be returned');
     // Test 3: Test with data that is inside the range to manage,
     //         with corresponding data_intermediate_ad_connection rows
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 12:15:00';
     $doData_intermediate_ad_connection->connection_date_time = '2004-06-06 12:14:58';
     $doData_intermediate_ad_connection->tracker_id = 501;
     $doData_intermediate_ad_connection->ad_id = $bannerId;
     $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.1';
     $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_CLICK;
     $doData_intermediate_ad_connection->connection_window = 3600;
     $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED;
     $connectionId2 = DataGenerator::generateOne($doData_intermediate_ad_connection);
     $aResult = $this->_dalCampaignStatistics->getCampaignConversionStatistics($campaignId, $oStartDate, $oEndDate);
     // Get 1 Row
     $this->assertEqual(1, count($aResult), '1 records should be returned');
     // Check return fields names
     $aConversion = current($aResult);
     $this->assertFieldExists($aConversion, 'campaignID');
     $this->assertFieldExists($aConversion, 'trackerID');
     $this->assertFieldExists($aConversion, 'bannerID');
     $this->assertFieldExists($aConversion, 'conversionTime');
     $this->assertFieldExists($aConversion, 'conversionStatus');
     $this->assertFieldExists($aConversion, 'userIp');
     $this->assertFieldExists($aConversion, 'action');
     $this->assertFieldExists($aConversion, 'window');
     $this->assertFieldExists($aConversion, 'variables');
     // Check return fields value
     $this->assertFieldEqual($aConversion, 'campaignID', $campaignId);
     $this->assertFieldEqual($aConversion, 'trackerID', 501);
     $this->assertFieldEqual($aConversion, 'bannerID', $bannerId);
     $this->assertFieldEqual($aConversion, 'conversionTime', '2004-06-06 12:15:00');
     $this->assertFieldEqual($aConversion, 'conversionStatus', MAX_CONNECTION_STATUS_APPROVED);
     $this->assertFieldEqual($aConversion, 'userIp', '127.0.0.1');
     $this->assertFieldEqual($aConversion, 'action', MAX_CONNECTION_AD_CLICK);
     $this->assertFieldEqual($aConversion, 'window', '2');
     // Conversion without variables
     $this->assertEmpty($aConversion['variables']);
     // Test 4: Test with data that is inside the range to manage and with
     //         2 conversions
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId2;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 1;
     $doData_intermediate_ad_variable_value->value = 'test_value3';
     $conecctionVariableValueId = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId2;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 2;
     $doData_intermediate_ad_variable_value->value = 'test_value4';
     $conecctionVariableValueId2 = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 12:20:00';
     $doData_intermediate_ad_connection->connection_date_time = '2004-06-06 12:19:57';
     $doData_intermediate_ad_connection->tracker_id = 501;
     $doData_intermediate_ad_connection->ad_id = $bannerId;
     $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.2';
     $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_IMPRESSION;
     $doData_intermediate_ad_connection->connection_window = 3600;
     $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED;
     $connectionId3 = DataGenerator::generateOne($doData_intermediate_ad_connection);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId3;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 1;
     $doData_intermediate_ad_variable_value->value = 'test_value5';
     $conecctionVariableValueId = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId3;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 2;
     $doData_intermediate_ad_variable_value->value = 'test_value6';
     $conecctionVariableValueId2 = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $aResult = $this->_dalCampaignStatistics->getCampaignConversionStatistics($campaignId, $oStartDate, $oEndDate);
     // Get 2 Row
     $this->assertEqual(2, count($aResult), '2 records should be returned');
     $aConversion = current($aResult);
     // Check return fields value
     $this->assertFieldEqual($aConversion, 'campaignID', $campaignId);
     $this->assertFieldEqual($aConversion, 'trackerID', '501');
     $this->assertFieldEqual($aConversion, 'bannerID', $bannerId);
     $this->assertFieldEqual($aConversion, 'conversionTime', '2004-06-06 12:15:00');
     $this->assertFieldEqual($aConversion, 'conversionStatus', MAX_CONNECTION_STATUS_APPROVED);
     $this->assertFieldEqual($aConversion, 'userIp', '127.0.0.1');
     $this->assertFieldEqual($aConversion, 'action', MAX_CONNECTION_AD_CLICK);
     $this->assertFieldEqual($aConversion, 'window', '2');
     $aVariables = $aConversion['variables'];
     $this->assertFieldEqual($aVariables, 'test_variable1_name', 'test_value3');
     $this->assertFieldEqual($aVariables, 'test_variable2_name', 'test_value4');
     $aConversion = next($aResult);
     // Check return fields value
     $this->assertFieldEqual($aConversion, 'campaignID', $campaignId);
     $this->assertFieldEqual($aConversion, 'trackerID', '501');
     $this->assertFieldEqual($aConversion, 'bannerID', $bannerId);
     $this->assertFieldEqual($aConversion, 'conversionTime', '2004-06-06 12:20:00');
     $this->assertFieldEqual($aConversion, 'conversionStatus', MAX_CONNECTION_STATUS_APPROVED);
     $this->assertFieldEqual($aConversion, 'userIp', '127.0.0.2');
     $this->assertFieldEqual($aConversion, 'action', MAX_CONNECTION_AD_IMPRESSION);
     $this->assertFieldEqual($aConversion, 'window', '3');
     $aVariables = $aConversion['variables'];
     $this->assertFieldEqual($aVariables, 'test_variable1_name', 'test_value5');
     $this->assertFieldEqual($aVariables, 'test_variable2_name', 'test_value6');
     // Test 5: Test with data that is inside the range to manage but doesn't
     //         belong to the requested campaign
     $doBanner2 = OA_Dal::factoryDO('banners');
     $doCampaign2 = OA_Dal::factoryDO('campaigns');
     $campaignId2 = DataGenerator::generateOne($doCampaign2);
     $doBanner2->campaignid = $campaignId2;
     $bannerId2 = DataGenerator::generateOne($doBanner2);
     $doData_intermediate_ad_connection = OA_Dal::factoryDO('data_intermediate_ad_connection');
     $doData_intermediate_ad_connection->tracker_date_time = '2004-06-06 12:20:00';
     $doData_intermediate_ad_connection->tracker_id = 501;
     $doData_intermediate_ad_connection->ad_id = $bannerId2;
     $doData_intermediate_ad_connection->tracker_ip_address = '127.0.0.2';
     $doData_intermediate_ad_connection->connection_action = MAX_CONNECTION_AD_IMPRESSION;
     $doData_intermediate_ad_connection->connection_window = 3600;
     $doData_intermediate_ad_connection->connection_status = MAX_CONNECTION_STATUS_APPROVED;
     $connectionId4 = DataGenerator::generateOne($doData_intermediate_ad_connection);
     $doData_intermediate_ad_variable_value = OA_Dal::factoryDO('data_intermediate_ad_variable_value');
     $doData_intermediate_ad_variable_value->data_intermediate_ad_connection_id = $connectionId4;
     $doData_intermediate_ad_variable_value->tracker_variable_id = 1;
     $doData_intermediate_ad_variable_value->value = 'test_value7';
     $conecctionVariableValueId = DataGenerator::generateOne($doData_intermediate_ad_variable_value);
     $aResult = $this->_dalCampaignStatistics->getCampaignConversionStatistics($campaignId, $oStartDate, $oEndDate);
     // Get 2 Row
     $this->assertEqual(2, count($aResult), '2 records should be returned');
     $aConversion = current($aResult);
     // Check return fields value
     $this->assertFieldEqual($aConversion, 'campaignID', $campaignId);
     $this->assertFieldEqual($aConversion, 'trackerID', '501');
     $this->assertFieldEqual($aConversion, 'bannerID', $bannerId);
     $this->assertFieldEqual($aConversion, 'conversionTime', '2004-06-06 12:15:00');
     $this->assertFieldEqual($aConversion, 'conversionStatus', MAX_CONNECTION_STATUS_APPROVED);
     $this->assertFieldEqual($aConversion, 'userIp', '127.0.0.1');
     $this->assertFieldEqual($aConversion, 'action', MAX_CONNECTION_AD_CLICK);
     $this->assertFieldEqual($aConversion, 'window', '2');
     $aVariables = $aConversion['variables'];
     $this->assertFieldEqual($aVariables, 'test_variable1_name', 'test_value3');
     $this->assertFieldEqual($aVariables, 'test_variable2_name', 'test_value4');
     $aConversion = next($aResult);
     // Check return fields value
     $this->assertFieldEqual($aConversion, 'campaignID', $campaignId);
     $this->assertFieldEqual($aConversion, 'trackerID', '501');
     $this->assertFieldEqual($aConversion, 'bannerID', $bannerId);
     $this->assertFieldEqual($aConversion, 'conversionTime', '2004-06-06 12:20:00');
     $this->assertFieldEqual($aConversion, 'conversionStatus', MAX_CONNECTION_STATUS_APPROVED);
     $this->assertFieldEqual($aConversion, 'userIp', '127.0.0.2');
     $this->assertFieldEqual($aConversion, 'action', MAX_CONNECTION_AD_IMPRESSION);
     $this->assertFieldEqual($aConversion, 'window', '3');
     $aVariables = $aConversion['variables'];
     $this->assertFieldEqual($aVariables, 'test_variable1_name', 'test_value5');
     $this->assertFieldEqual($aVariables, 'test_variable2_name', 'test_value6');
     // Clean Up
     DataGenerator::cleanUp();
 }
 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 tearDown()
 {
     DataGenerator::cleanUp(array('ad_zone_assoc'));
 }
 /**
  * A method to test the getDeliveryLimitationsByChannelId() method.
  *
  * Requirements:
  * Test 1: Test with invalid input, and ensure nothing returned
  * Test 2: Test with nothing in the database, and ensure nothing returned
  * Test 3: Test with delivery limitations attached to channel NOT desired, and
  *         ensure nothing returned
  * Test 4: Test with delivery limitations attached to the channel desired, and
  *         ensure they are returned
  */
 function testGetDeliveryLimitationsByChannelId()
 {
     $conf = $GLOBALS['_MAX']['CONF'];
     $oDbh =& OA_DB::singleton();
     $oDal = new MAX_Dal_Entities();
     // Test 1
     $channelId = 'foo';
     $aResult = $oDal->getDeliveryLimitationsByChannelId($channelId);
     $this->assertNull($aResult);
     // Test 2
     $channelId = 1;
     $aResult = $oDal->getDeliveryLimitationsByChannelId($channelId);
     $this->assertNull($aResult);
     // Test 3
     $aData = array(2, 'and', 'Time:Hour', '==', 12, 0);
     $idAclsChannel1 = $this->_insertAclsChannel($aData);
     $aResult = $oDal->getDeliveryLimitationsByChannelId(1);
     $this->assertNull($aResult);
     DataGenerator::cleanUp();
     // Test 4
     $aData = array(1, 'and', 'Time:Hour', '==', 10, 0);
     $idAclsChannel1 = $this->_insertAclsChannel($aData);
     $aData = array(1, 'or', 'Time:Hour', '==', 11, 1);
     $idAclsChannel2 = $this->_insertAclsChannel($aData);
     $aData = array(2, 'and', 'Time:Hour', '==', 12, 0);
     $idAclsChannel3 = $this->_insertAclsChannel($aData);
     $aResult = $oDal->getDeliveryLimitationsByChannelId(1);
     $aExpectedResult = array(0 => array('logical' => 'and', 'type' => 'Time:Hour', 'comparison' => '==', 'data' => 10), 1 => array('logical' => 'or', 'type' => 'Time:Hour', 'comparison' => '==', 'data' => 11));
     $this->assertEqual($aResult, $aExpectedResult);
     DataGenerator::cleanUp();
 }
Esempio n. 27
0
 /**
  * A method to test the setProcessLastRunInfo() method.
  *
  * Requirements:
  * Test 1: Test with invalid data, and ensure false is returned.
  * Test 2: Test that basic information is logged correctly (use log_maintenance_forecasting
  *              table, as run_type info not needed).
  * Test 3: Test that bad table and column names return false.
  * Test 4: Test that run type information is logged correctly.
  */
 function testSetProcessLastRunInfo()
 {
     $aConf = $GLOBALS['_MAX']['CONF'];
     $oDbh =& OA_DB::singleton();
     $oStartDate = new Date('2006-10-05 12:07:01');
     $oEndDate = new Date('2006-10-05 12:15:00');
     $oUpdateToDate = new Date('2006-10-05 11:59:59');
     $oDalMaintenanceCommon = new OA_Dal_Maintenance_Common();
     // Test 1
     $result = $oDalMaintenanceCommon->setProcessLastRunInfo(null, $oEndDate, $oUpdateToDate, $aConf['table']['log_maintenance_priority'], true);
     $this->assertFalse($result);
     $result = $oDalMaintenanceCommon->setProcessLastRunInfo($oStartDate, null, $oUpdateToDate, $tableName, true);
     $this->assertFalse($result);
     $result = $oDalMaintenanceCommon->setProcessLastRunInfo($oStartDate, $oEndDate, 'foo', $aConf['table']['log_maintenance_priority'], true);
     $this->assertFalse($result);
     $this->assertFalse($result);
     $result = $oDalMaintenanceCommon->setProcessLastRunInfo($oStartDate, $oEndDate, $oUpdateToDate, $aConf['table']['log_maintenance_priority'], 17);
     $this->assertFalse($result);
     // Test 2
     $result = $oDalMaintenanceCommon->setProcessLastRunInfo($oStartDate, $oEndDate, $oUpdateToDate, $aConf['table']['log_maintenance_forecasting'], true);
     $this->assertTrue($result);
     $query = "\n            SELECT\n                log_maintenance_forecasting_id,\n                start_run,\n                end_run,\n                operation_interval,\n                duration,\n                updated_to\n            FROM\n                " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['log_maintenance_forecasting'], true);
     $rc = $oDbh->query($query);
     $aRow = $rc->fetchRow();
     $this->assertEqual($aRow['log_maintenance_forecasting_id'], 1);
     $this->assertEqual($aRow['start_run'], '2006-10-05 12:07:01');
     $this->assertEqual($aRow['end_run'], '2006-10-05 12:15:00');
     $this->assertEqual($aRow['operation_interval'], $aConf['maintenance']['operationInterval']);
     $this->assertEqual($aRow['duration'], 7 * 60 + 59);
     $this->assertEqual($aRow['updated_to'], '2006-10-05 11:59:59');
     // Test 3
     RV::disableErrorHandling();
     $oDbh =& OA_DB::singleton();
     $oDalMaintenanceCommon = new OA_Dal_Maintenance_Common();
     $result = $oDalMaintenanceCommon->setProcessLastRunInfo($oStartDate, $oEndDate, $oUpdateToDate, 'foo', true);
     $this->assertFalse($result);
     $result = $oDalMaintenanceCommon->setProcessLastRunInfo($oStartDate, $oEndDate, $oUpdateToDate, $aConf['table']['log_maintenance_priority'], true, 'foo', 1);
     $this->assertFalse($result);
     RV::enableErrorHandling();
     // Test 4
     $result = $oDalMaintenanceCommon->setProcessLastRunInfo($oStartDate, $oEndDate, $oUpdateToDate, $aConf['table']['log_maintenance_priority'], true, 'run_type', 0);
     $result = $oDalMaintenanceCommon->setProcessLastRunInfo($oStartDate, $oEndDate, $oUpdateToDate, $aConf['table']['log_maintenance_priority'], true, 'run_type', 1);
     $this->assertTrue($result);
     $query = "\n            SELECT\n                log_maintenance_priority_id,\n                start_run,\n                end_run,\n                operation_interval,\n                duration,\n                updated_to,\n                run_type\n            FROM\n                " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['log_maintenance_priority'], true) . "\n            WHERE\n                log_maintenance_priority_id = 1";
     $rc = $oDbh->query($query);
     $aRow = $rc->fetchRow();
     $this->assertEqual($aRow['log_maintenance_priority_id'], 1);
     $this->assertEqual($aRow['start_run'], '2006-10-05 12:07:01');
     $this->assertEqual($aRow['end_run'], '2006-10-05 12:15:00');
     $this->assertEqual($aRow['operation_interval'], $aConf['maintenance']['operationInterval']);
     $this->assertEqual($aRow['duration'], 7 * 60 + 59);
     $this->assertEqual($aRow['updated_to'], '2006-10-05 11:59:59');
     $this->assertEqual($aRow['run_type'], 0);
     $query = "\n            SELECT\n                log_maintenance_priority_id,\n                start_run,\n                end_run,\n                operation_interval,\n                duration,\n                updated_to,\n                run_type\n            FROM\n                " . $oDbh->quoteIdentifier($aConf['table']['prefix'] . $aConf['table']['log_maintenance_priority'], true) . "\n            WHERE\n                log_maintenance_priority_id = 2";
     $rc = $oDbh->query($query);
     $aRow = $rc->fetchRow();
     $this->assertEqual($aRow['log_maintenance_priority_id'], 2);
     $this->assertEqual($aRow['start_run'], '2006-10-05 12:07:01');
     $this->assertEqual($aRow['end_run'], '2006-10-05 12:15:00');
     $this->assertEqual($aRow['operation_interval'], $aConf['maintenance']['operationInterval']);
     $this->assertEqual($aRow['duration'], 7 * 60 + 59);
     $this->assertEqual($aRow['updated_to'], '2006-10-05 11:59:59');
     $this->assertEqual($aRow['run_type'], 1);
     $aCleanupTables = array($aConf['table']['log_maintenance_priority'], $aConf['table']['log_maintenance_forecasting'], $aConf['table']['log_maintenance_forecasting']);
     DataGenerator::cleanUp($aCleanupTables);
 }
 /**
  * Tests that an e-mail reporting on impending campaign expiration
  * is able to be generated correctly.
  */
 function testSendAndPrepareCampaignImpendingExpiryEmail()
 {
     $adminContact = 'Andrew Hill';
     $adminName = 'OpenX Limited';
     $adminMail = '*****@*****.**';
     $adminCompany = 'Admin company name';
     $adminAccountId = 100;
     $agencyName = 'Agency Ltd.';
     $agencyContact = 'Mr. Foo Bar Agency';
     $agencyMail = '*****@*****.**';
     $advertiserName = 'Foo Client';
     $advertiserMail = '*****@*****.**';
     $advertiserUsername = '******';
     $aConf =& $GLOBALS['_MAX']['CONF'];
     $aConf['webpath']['admin'] = 'example.com';
     $aConf['email']['fromAddress'] = $adminMail;
     $aConf['email']['fromName'] = $adminName;
     $aConf['email']['fromCompany'] = $adminCompany;
     $aConf['email']['useManagerDetails'] = true;
     $aConf['email']['logOutgoing'] = true;
     $mockName = uniqid('PartialMockOA_Email_');
     Mock::generatePartial('OA_Email', $mockName, array('sendMail'));
     $oEmail = new $mockName();
     $oEmail->setReturnValue('sendMail', true);
     // Prepare valid test data
     $dateReason = 'date';
     $dateValue = '2007-05-15';
     $impReason = 'impressions';
     $impValue = 100;
     // The tests below assume that the number of days before a campaign expires when the
     $oCampaignDate = new Date($dateValue);
     $oCampaignDate->setHour(23);
     $oCampaignDate->setMinute(59);
     $oCampaignDate->setSecond(59);
     $oCampaignDate->toUTC();
     $oTwoDaysPriorDate = new Date($dateValue);
     $oTwoDaysPriorDate->subtractSeconds(2 * 24 * 60 * 60 - 10);
     $oNowDate = new Date($dateValue);
     // Prepare an admin user
     // Create the admin account
     $doAccounts = OA_Dal::factoryDO('accounts');
     $doAccounts->account_name = 'System Administrator';
     $doAccounts->account_type = OA_ACCOUNT_ADMIN;
     $adminAccountId = DataGenerator::generateOne($doAccounts);
     // Setup the admin account id
     $doAppVar = OA_Dal::factoryDO('application_variable');
     $doAppVar->name = 'admin_account_id';
     $doAppVar->value = $adminAccountId;
     // Create an user
     $doAdminUser = OA_Dal::factoryDO('users');
     $doAdminUser->contact_name = $adminContact;
     $doAdminUser->email_address = $adminMail;
     $doAdminUser->username = $adminName;
     $doAdminUser->password = md5('password');
     $doAdminUser->language = 'en';
     $doAdminUser->default_account_id = $adminAccountId;
     $adminUserId = DataGenerator::generateOne($doAdminUser);
     $doAdminUser = OA_Dal::staticGetDO('users', $adminUserId);
     $aAdminUser = $doAdminUser->toArray();
     // Create admin account-user association
     $doAUA = OA_Dal::factoryDO('account_user_assoc');
     $doAUA->account_id = $adminAccountId;
     $doAUA->user_id = $adminUserId;
     $doAUA->insert();
     // Prepare an agency
     $doAgency = OA_Dal::factoryDO('agency');
     $doAgency->name = $agencyName;
     $doAgency->contact = $agencyContact;
     $doAgency->email = $agencyMail;
     $agencyId = DataGenerator::generateOne($doAgency);
     $doAgency = OA_Dal::staticGetDO('agency', $agencyId);
     //get('agencyid', $agencyId);
     $agencyAccountId = $doAgency->account_id;
     // Prepare an agency user
     $doUser = OA_Dal::factoryDO('users');
     $doUser->contact_name = $agencyContact;
     $doUser->email_address = $agencyMail;
     $doUser->username = $agencyName;
     $doUser->language = 'en';
     $agencyUserId = DataGenerator::generateOne($doUser);
     $doAgencyUser = OA_Dal::staticGetDO('users', $agencyUserId);
     $aAgencyUser = $doAgencyUser->toArray();
     $oUserAccess = new OA_Admin_UI_UserAccess();
     // Agency user
     $oUserAccess->linkUserToAccount($agencyUserId, $doAgency->account_id, array(), array());
     // Generate an advertiser owned by the agency with no email adddress,
     // but no placements, and ensure false is returned
     $doClients = OA_Dal::factoryDO('clients');
     $doClients->agencyid = $agencyId;
     $doClients->clientname = $advertiserName;
     $doClients->email = '';
     $advertiserId1 = DataGenerator::generateOne($doClients);
     $doClients = OA_Dal::staticGetDO('clients', 'clientid', $advertiserId1);
     // ->get('clientid', $advertiserId1);
     $advertiserAccountId = $doClients->account_id;
     // Create an advertiser user
     $doUser = OA_Dal::factoryDO('users');
     $doUser->contact_name = $advertiserName;
     $doUser->email_address = $advertiserMail;
     $doUser->username = $advertiserUsername;
     $doUser->language = 'en';
     $userId = DataGenerator::generateOne($doUser);
     $doAdvertiserUser = OA_Dal::staticGetDO('users', $userId);
     $aAdvertiserUser = $doAdvertiserUser->toArray();
     // Link the advertiser user
     $oUserAccess->linkUserToAccount($userId, $doClients->account_id, array(), array());
     // Create a campaign
     $doPlacements = OA_Dal::factoryDO('campaigns');
     $doPlacements->clientid = $advertiserId1;
     $doPlacements->campaignname = 'Default Campaign';
     $doPlacements->views = 50;
     $doPlacements->expire_time = $oCampaignDate->getDate(DATE_FORMAT_ISO);
     $placementId = DataGenerator::generateOne($doPlacements);
     $doPlacements = OA_Dal::staticGetDO('campaigns', $placementId);
     $aCampaign = $doPlacements->toArray();
     $result = $oEmail->sendCampaignImpendingExpiryEmail($oNowDate, $placementId);
     // No emails should be sent yet because the preferences weren't set
     $this->assertEqual($result, 0);
     // No entries in userlog
     $doUserLog = OA_Dal::factoryDO('userlog');
     $doUserLog->find();
     $this->assertFalse($doUserLog->fetch());
     // Create the preference
     $doPreferences = OA_Dal::factoryDO('preferences');
     $doPreferences->preference_name = 'warn_email_admin';
     $doPreferences->account_type = OA_ACCOUNT_ADMIN;
     $warnEmailAdminPreferenceId = DataGenerator::generateOne($doPreferences);
     // Set the admin preference
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $adminAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailAdminPreferenceId;
     $doAccount_Preference_Assoc->value = 1;
     DataGenerator::generateOne($doAccount_Preference_Assoc);
     // Create the admin threshold preference
     $doPreferences = OA_Dal::factoryDO('preferences');
     $doPreferences->preference_name = 'warn_email_admin_impression_limit';
     $doPreferences->account_type = OA_ACCOUNT_ADMIN;
     $warnEmailAdminImpLimitPreferenceId = DataGenerator::generateOne($doPreferences);
     // Set the admin preference
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $adminAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailAdminImpLimitPreferenceId;
     $doAccount_Preference_Assoc->value = 100;
     DataGenerator::generateOne($doAccount_Preference_Assoc);
     // Create the admin day warning
     $doPreferences = OA_Dal::factoryDO('preferences');
     $doPreferences->preference_name = 'warn_email_admin_day_limit';
     $doPreferences->account_type = OA_ACCOUNT_ADMIN;
     $warnEmailAdminDayLimitPreferenceId = DataGenerator::generateOne($doPreferences);
     // Set the admin preference
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $adminAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailAdminDayLimitPreferenceId;
     $doAccount_Preference_Assoc->value = 2;
     DataGenerator::generateOne($doAccount_Preference_Assoc);
     // Set the agency preferences
     $doPreferences = OA_Dal::factoryDO('preferences');
     $doPreferences->preference_name = 'warn_email_manager';
     $doPreferences->account_type = OA_ACCOUNT_MANAGER;
     $warnEmailManagerPreferenceId = DataGenerator::generateOne($doPreferences);
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $agencyAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailManagerPreferenceId;
     $doAccount_Preference_Assoc->value = 0;
     DataGenerator::generateOne($doAccount_Preference_Assoc);
     $doPreferences = OA_Dal::factoryDO('preferences');
     $doPreferences->preference_name = 'warn_email_manager_impression_limit';
     $doPreferences->account_type = OA_ACCOUNT_MANAGER;
     $warnEmailManagerImpLimitPreferenceId = DataGenerator::generateOne($doPreferences);
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $agencyAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailManagerImpLimitPreferenceId;
     $doAccount_Preference_Assoc->value = 100;
     DataGenerator::generateOne($doAccount_Preference_Assoc);
     $doPreferences = OA_Dal::factoryDO('preferences');
     $doPreferences->preference_name = 'warn_email_manager_day_limit';
     $doPreferences->account_type = OA_ACCOUNT_MANAGER;
     $warnEmailManagerDayLimitPreferenceId = DataGenerator::generateOne($doPreferences);
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $agencyAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailManagerDayLimitPreferenceId;
     $doAccount_Preference_Assoc->value = 2;
     DataGenerator::generateOne($doAccount_Preference_Assoc);
     // Set the advertiser preferences
     $doPreferences = OA_Dal::factoryDO('preferences');
     $doPreferences->preference_name = 'warn_email_advertiser';
     $doPreferences->account_type = OA_ACCOUNT_ADVERTISER;
     $warnEmailAdvertiserPreferenceId = DataGenerator::generateOne($doPreferences);
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $advertiserAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailAdvertiserPreferenceId;
     $doAccount_Preference_Assoc->value = 0;
     DataGenerator::generateOne($doAccount_Preference_Assoc);
     $doPreferences = OA_Dal::factoryDO('preferences');
     $doPreferences->preference_name = 'warn_email_advertiser_impression_limit';
     $doPreferences->account_type = OA_ACCOUNT_ADVERTISER;
     $warnEmailAdvertiserImpLimitPreferenceId = DataGenerator::generateOne($doPreferences);
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $advertiserAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailAdvertiserImpLimitPreferenceId;
     $doAccount_Preference_Assoc->value = 100;
     DataGenerator::generateOne($doAccount_Preference_Assoc);
     $doPreferences = OA_Dal::factoryDO('preferences');
     $doPreferences->preference_name = 'warn_email_advertiser_day_limit';
     $doPreferences->account_type = OA_ACCOUNT_ADVERTISER;
     $warnEmailAdvertiserDayLimitPreferenceId = DataGenerator::generateOne($doPreferences);
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $advertiserAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailAdvertiserDayLimitPreferenceId;
     $doAccount_Preference_Assoc->value = 2;
     DataGenerator::generateOne($doAccount_Preference_Assoc);
     // Create another user linked to the advertiser account and ensure that an additional email is sent
     $doUser = OA_Dal::factoryDO('users');
     $doUser->contact_name = '2_' . $advertiserName;
     $doUser->email_address = '2_' . $advertiserMail;
     $doUser->username = '******' . $clientName;
     $doUser->language = 'de';
     $advertiserUserId2 = DataGenerator::generateOne($doUser);
     $doAdvertiserUser2 = OA_Dal::staticGetDO('users', $advertiserUserId2);
     $aAdvertiserUser2 = $doAdvertiserUser2->toArray();
     // Link the advertiser user
     $oUserAccess->linkUserToAccount($advertiserUserId2, $doClients->account_id, array(), array());
     // If the advertiser preference is off, then the advertiser should not be sent emails
     // even if the admin/manager preference is on
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $advertiserAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailAdvertiserPreferenceId;
     $doAccount_Preference_Assoc->value = 0;
     $doAccount_Preference_Assoc->update();
     // And turning off the manager preference should leave just agency emails (2)
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $agencyAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailManagerPreferenceId;
     $doAccount_Preference_Assoc->value = 0;
     $doAccount_Preference_Assoc->update();
     // -- The above sets up the environment for the tests below -- //
     // Check the body when passing in the admin user:
     $expectedSubject = "Impending campaign expiration: {$advertiserName}";
     $expectedContents = "Dear {$adminContact},\n\n";
     $expectedContents .= "The campaign belonging to {$advertiserName} shown below is due to end on {$dateValue}.\n\n";
     $expectedContents .= "As a result, the campaign will soon be automatically disabled, and the\n";
     $expectedContents .= "following banners in the campaign will also be disabled:\n";
     $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n";
     $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n";
     $expectedContents .= "-------------------------------------------------------\n\n";
     $expectedContents .= " There are currently no banners defined for this campaign.\n\n";
     $expectedContents .= "-------------------------------------------------------\n\n\n";
     $expectedContents .= "Regards,\n   {$adminName}, {$adminCompany}";
     // Clear cache
     $oEmail->clearCache();
     Language_Loader::load('default', $aAdminUser['language']);
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oTwoDaysPriorDate, $placementId);
     $aResult = $oEmail->prepareCampaignImpendingExpiryEmail($aAdminUser, $advertiserId1, $placementId, $dateReason, $dateValue, 'admin');
     $this->assertEqual($numSent, 1);
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual($aResult['subject'], $expectedSubject);
     $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents));
     // One entry in userlog
     $doUserLog = OA_Dal::factoryDO('userlog');
     $aUserLog = $doUserLog->getAll();
     $this->assertEqual(count($aUserLog), 1);
     $this->assertEqual($aUserLog[0]['action'], phpAds_actionWarningMailed);
     // Turn off email logging and send mail again
     $aConf['email']['logOutgoing'] = false;
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oTwoDaysPriorDate, $placementId);
     $this->assertEqual($numSent, 1);
     // Still one entry in userlog
     $doUserLog = OA_Dal::factoryDO('userlog');
     $aUserLog = $doUserLog->getAll();
     $this->assertEqual(count($aUserLog), 1);
     // Set email logging back to true
     $aConf['email']['logOutgoing'] = true;
     // Manager user
     $expectedSubject = "Impending campaign expiration: {$advertiserName}";
     $expectedContents = "Dear {$aAgencyUser['contact_name']},\n\n";
     $expectedContents .= "The campaign belonging to {$advertiserName} shown below is due to end on {$dateValue}.\n\n";
     $expectedContents .= "As a result, the campaign will soon be automatically disabled, and the\n";
     $expectedContents .= "following banners in the campaign will also be disabled:\n";
     $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n";
     $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n";
     $expectedContents .= "-------------------------------------------------------\n\n";
     $expectedContents .= " There are currently no banners defined for this campaign.\n\n";
     $expectedContents .= "-------------------------------------------------------\n\n\n";
     $expectedContents .= "Regards,\n   " . $aConf['email']['fromName'] . ", " . $aConf['email']['fromCompany'];
     Language_Loader::load('default', $aAgencyUser['language']);
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oTwoDaysPriorDate, $placementId);
     $aResult = $oEmail->prepareCampaignImpendingExpiryEmail($aAgencyUser, $advertiserId1, $placementId, $dateReason, $dateValue, 'manager');
     $this->assertEqual($numSent, 1);
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual($aResult['subject'], $expectedSubject);
     $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents));
     // Should create another entry in userlog
     $doUserLog = OA_Dal::factoryDO('userlog');
     $doUserLog->action = phpAds_actionWarningMailed;
     $aUserLog = $doUserLog->getAll();
     $this->assertEqual(count($aUserLog), 2);
     // Use email from details instead of the owning account's details
     $aConf['email']['useManagerDetails'] = false;
     // Manager user
     $expectedSubject = "Impending campaign expiration: {$advertiserName}";
     $expectedContents = "Dear {$aAgencyUser['contact_name']},\n\n";
     $expectedContents .= "The campaign belonging to {$advertiserName} shown below is due to end on {$dateValue}.\n\n";
     $expectedContents .= "As a result, the campaign will soon be automatically disabled, and the\n";
     $expectedContents .= "following banners in the campaign will also be disabled:\n";
     $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n";
     $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n";
     $expectedContents .= "-------------------------------------------------------\n\n";
     $expectedContents .= " There are currently no banners defined for this campaign.\n\n";
     $expectedContents .= "-------------------------------------------------------\n\n\n";
     $expectedContents .= "Regards,\n   " . $aConf['email']['fromName'] . ", " . $aConf['email']['fromCompany'];
     Language_Loader::load('default', $aAgencyUser['language']);
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oTwoDaysPriorDate, $placementId);
     $aResult = $oEmail->prepareCampaignImpendingExpiryEmail($aAgencyUser, $advertiserId1, $placementId, $dateReason, $dateValue, 'manager');
     $this->assertEqual($numSent, 1);
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual($aResult['subject'], $expectedSubject);
     $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents));
     // Use email from empty details and test that not Regards are added
     $aConf['email']['fromAddress'] = '';
     $aConf['email']['fromName'] = '';
     $aConf['email']['fromCompany'] = '';
     // Manager user
     $expectedSubject = "Impending campaign expiration: {$advertiserName}";
     $expectedContents = "Dear {$aAgencyUser['contact_name']},\n\n";
     $expectedContents .= "The campaign belonging to {$advertiserName} shown below is due to end on {$dateValue}.\n\n";
     $expectedContents .= "As a result, the campaign will soon be automatically disabled, and the\n";
     $expectedContents .= "following banners in the campaign will also be disabled:\n";
     $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n";
     $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n";
     $expectedContents .= "-------------------------------------------------------\n\n";
     $expectedContents .= " There are currently no banners defined for this campaign.\n\n";
     $expectedContents .= "-------------------------------------------------------\n\n\n";
     Language_Loader::load('default', $aAgencyUser['language']);
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oTwoDaysPriorDate, $placementId);
     $aResult = $oEmail->prepareCampaignImpendingExpiryEmail($aAgencyUser, $advertiserId1, $placementId, $dateReason, $dateValue, 'manager');
     $this->assertEqual($numSent, 1);
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual($aResult['subject'], $expectedSubject);
     $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents));
     $aConf['email']['useManagerDetails'] = true;
     $aConf['email']['fromAddress'] = $adminMail;
     $aConf['email']['fromName'] = $adminName;
     $aConf['email']['fromCompany'] = $adminCompany;
     // Should create another entry in userlog
     $doUserLog = OA_Dal::factoryDO('userlog');
     $doUserLog->action = phpAds_actionWarningMailed;
     $aUserLog = $doUserLog->getAll();
     $this->assertEqual(count($aUserLog), 4);
     // The following should never be sent because a campaign without banners should never deliver (and therefore never reach the "remaining" threshold)
     $expectedSubject = "Impending campaign expiration: {$advertiserName}";
     $expectedContents = "Dear {$aAdminUser['contact_name']},\n\n";
     $expectedContents .= "The campaign belonging to {$advertiserName} shown below has less than {$impValue} impressions remaining.\n\n";
     $expectedContents .= "As a result, the campaign will soon be automatically disabled, and the\n";
     $expectedContents .= "following banners in the campaign will also be disabled:\n";
     $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n";
     $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n";
     $expectedContents .= "-------------------------------------------------------\n\n";
     $expectedContents .= " There are currently no banners defined for this campaign.\n\n";
     $expectedContents .= "-------------------------------------------------------\n\n\n";
     $expectedContents .= "Regards,\n   {$adminName}, {$adminCompany}";
     Language_Loader::load('default', $aAdminUser['language']);
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oNowDate, $placementId);
     $aResult = $oEmail->prepareCampaignImpendingExpiryEmail($aAdminUser, $advertiserId1, $placementId, $impReason, $impValue, 'admin');
     $this->assertEqual($numSent, 0);
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual($aResult['subject'], $expectedSubject);
     $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents));
     $expectedSubject = "Impending campaign expiration: {$advertiserName}";
     $expectedContents = "Dear {$aAgencyUser['contact_name']},\n\n";
     $expectedContents .= "The campaign belonging to {$advertiserName} shown below has less than {$impValue} impressions remaining.\n\n";
     $expectedContents .= "As a result, the campaign will soon be automatically disabled, and the\n";
     $expectedContents .= "following banners in the campaign will also be disabled:\n";
     $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n";
     $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n";
     $expectedContents .= "-------------------------------------------------------\n\n";
     $expectedContents .= " There are currently no banners defined for this campaign.\n\n";
     $expectedContents .= "-------------------------------------------------------\n\n\n";
     $expectedContents .= "Regards,\n   " . $aConf['email']['fromName'] . ", " . $aConf['email']['fromCompany'];
     Language_Loader::load('default', $aAgencyUser['language']);
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oNowDate, $placementId);
     $aResult = $oEmail->prepareCampaignImpendingExpiryEmail($aAgencyUser, $advertiserId1, $placementId, $impReason, $impValue, 'manager');
     $this->assertEqual($numSent, 0);
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual($aResult['subject'], $expectedSubject);
     $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents));
     // Emails not sent, nothing new in userlog
     $doUserLog = OA_Dal::factoryDO('userlog');
     $doUserLog->action = phpAds_actionWarningMailed;
     $aUserLog = $doUserLog->getAll();
     $this->assertEqual(count($aUserLog), 4);
     // Add some banners and retest
     $doBanners = OA_Dal::factoryDO('banners');
     $doBanners->campaignid = $placementId;
     $doBanners->description = 'Test Banner';
     $doBanners->url = '';
     $bannerId1 = DataGenerator::generateOne($doBanners);
     $doBanners = OA_Dal::factoryDO('banners');
     $doBanners->campaignid = $placementId;
     $doBanners->description = 'Test Banner';
     $doBanners->url = 'http://www.fornax.net/';
     $bannerId2 = DataGenerator::generateOne($doBanners);
     $expectedSubject = "Impending campaign expiration: {$advertiserName}";
     $expectedContents = "Dear {$aAdminUser['contact_name']},\n\n";
     $expectedContents .= "The campaign belonging to {$advertiserName} shown below is due to end on {$dateValue}.\n\n";
     $expectedContents .= "As a result, the campaign will soon be automatically disabled, and the\n";
     $expectedContents .= "following banners in the campaign will also be disabled:\n";
     $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n";
     $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n";
     $expectedContents .= "-------------------------------------------------------\n\n";
     $expectedContents .= " Banner [id{$bannerId1}] Test Banner\n\n";
     $expectedContents .= " Banner [id{$bannerId2}] Test Banner\n";
     $expectedContents .= "  linked to: http://www.fornax.net/\n\n";
     $expectedContents .= "-------------------------------------------------------\n\n\n";
     $expectedContents .= "Regards,\n   {$adminName}, {$adminCompany}";
     Language_Loader::load('default', $aAdminUser['language']);
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oTwoDaysPriorDate, $placementId);
     $aResult = $oEmail->prepareCampaignImpendingExpiryEmail($aAdminUser, $advertiserId1, $placementId1, $dateReason, $dateValue, 'admin');
     $this->assertEqual($numSent, 1);
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual($aResult['subject'], $expectedSubject);
     $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents));
     $doUserLog = OA_Dal::factoryDO('userlog');
     $doUserLog->action = phpAds_actionWarningMailed;
     $aUserLog = $doUserLog->getAll();
     $this->assertEqual(count($aUserLog), 5);
     $expectedSubject = "Impending campaign expiration: {$advertiserName}";
     $expectedContents = "Dear {$aAdvertiserUser['contact_name']},\n\n";
     $expectedContents .= "Your campaign shown below is due to end on {$dateValue}.\n\n";
     $expectedContents .= "As a result, the campaign will soon be automatically disabled, and the\n";
     $expectedContents .= "following banners in the campaign will also be disabled:\n";
     $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n";
     $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n";
     $expectedContents .= "-------------------------------------------------------\n\n";
     $expectedContents .= " Banner [id{$bannerId1}] Test Banner\n\n";
     $expectedContents .= " Banner [id{$bannerId2}] Test Banner\n";
     $expectedContents .= "  linked to: http://www.fornax.net/\n\n";
     $expectedContents .= "-------------------------------------------------------\n\n\n";
     $expectedContents .= "Regards,\n   {$agencyContact}, {$agencyName}";
     Language_Loader::load('default', $aAdvertiserUser['language']);
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oTwoDaysPriorDate, $placementId);
     $aResult = $oEmail->prepareCampaignImpendingExpiryEmail($aAdvertiserUser, $advertiserId1, $placementId, $dateReason, $dateValue, 'advertiser');
     $this->assertEqual($numSent, 1);
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual($aResult['subject'], $expectedSubject);
     $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents));
     $doUserLog = OA_Dal::factoryDO('userlog');
     $doUserLog->action = phpAds_actionWarningMailed;
     $aUserLog = $doUserLog->getAll();
     $this->assertEqual(count($aUserLog), 6);
     // Clear userlog table
     $doUserLog = OA_Dal::factoryDO('userlog');
     $doUserLog->whereAdd('1=1');
     $doUserLog->delete(DB_DATAOBJECT_WHEREADD_ONLY);
     // Enable the warn_email_advertiser preference and retest
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $advertiserAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailAdvertiserPreferenceId;
     $doAccount_Preference_Assoc->value = 1;
     $doAccount_Preference_Assoc->update();
     // Clear cache
     $oEmail->clearCache();
     // So should now send 1 admin and 2 advertiser emails
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oTwoDaysPriorDate, $placementId);
     $this->assertEqual($numSent, 3);
     $doUserLog = OA_Dal::factoryDO('userlog');
     $doUserLog->action = phpAds_actionWarningMailed;
     $aUserLog = $doUserLog->getAll();
     $this->assertEqual(count($aUserLog), 3);
     $expectedSubject = "Impending campaign expiration: {$advertiserName}";
     $expectedContents = "Dear {$adminContact},\n\n";
     $expectedContents .= "The campaign belonging to {$advertiserName} shown below has less than {$impValue} impressions remaining.\n\n";
     $expectedContents .= "As a result, the campaign will soon be automatically disabled, and the\n";
     $expectedContents .= "following banners in the campaign will also be disabled:\n";
     $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n";
     $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n";
     $expectedContents .= "-------------------------------------------------------\n\n";
     $expectedContents .= " Banner [id{$bannerId1}] Test Banner\n\n";
     $expectedContents .= " Banner [id{$bannerId2}] Test Banner\n";
     $expectedContents .= "  linked to: http://www.fornax.net/\n\n";
     $expectedContents .= "-------------------------------------------------------\n\n\n";
     $expectedContents .= "Regards,\n   {$adminName}, {$adminCompany}";
     $aResult = $oEmail->prepareCampaignImpendingExpiryEmail($aAdminUser, $advertiserId1, $placementId, $impReason, $impValue, 'admin');
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oTwoDaysPriorDate, $placementId);
     $this->assertEqual($numSent, 3);
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual($aResult['subject'], $expectedSubject);
     $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents));
     $doUserLog = OA_Dal::factoryDO('userlog');
     $doUserLog->action = phpAds_actionWarningMailed;
     $aUserLog = $doUserLog->getAll();
     $this->assertEqual(count($aUserLog), 6);
     // Clear cache
     $oEmail->clearCache();
     // Enable the warn_email_manager preference and retest
     $doAccount_Preference_Assoc = OA_Dal::factoryDO('account_preference_assoc');
     $doAccount_Preference_Assoc->account_id = $agencyAccountId;
     $doAccount_Preference_Assoc->preference_id = $warnEmailManagerPreferenceId;
     $doAccount_Preference_Assoc->value = 1;
     $doAccount_Preference_Assoc->update();
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oTwoDaysPriorDate, $placementId);
     $this->assertEqual($numSent, 4);
     $doUserLog = OA_Dal::factoryDO('userlog');
     $doUserLog->action = phpAds_actionWarningMailed;
     $aUserLog = $doUserLog->getAll();
     $this->assertEqual(count($aUserLog), 10);
     // Turn off email logging and send mail again
     $aConf['email']['logOutgoing'] = false;
     $numSent = $oEmail->sendCampaignImpendingExpiryEmail($oTwoDaysPriorDate, $placementId);
     $this->assertEqual($numSent, 4);
     // No new entries in user log
     $doUserLog = OA_Dal::factoryDO('userlog');
     $doUserLog->action = phpAds_actionWarningMailed;
     $aUserLog = $doUserLog->getAll();
     $this->assertEqual(count($aUserLog), 10);
     // Set email logging back to true
     $aConf['email']['logOutgoing'] = true;
     $expectedSubject = "Impending campaign expiration: {$advertiserName}";
     $expectedContents = "Dear {$aAdvertiserUser['contact_name']},\n\n";
     $expectedContents .= "Your campaign shown below has less than {$impValue} impressions remaining.\n\n";
     $expectedContents .= "As a result, the campaign will soon be automatically disabled, and the\n";
     $expectedContents .= "following banners in the campaign will also be disabled:\n";
     $expectedContents .= "\nCampaign [id{$placementId}] Default Campaign\n";
     $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n";
     $expectedContents .= "-------------------------------------------------------\n\n";
     $expectedContents .= " Banner [id{$bannerId1}] Test Banner\n\n";
     $expectedContents .= " Banner [id{$bannerId2}] Test Banner\n";
     $expectedContents .= "  linked to: http://www.fornax.net/\n\n";
     $expectedContents .= "-------------------------------------------------------\n\n\n";
     $expectedContents .= "Regards,\n   {$agencyContact}, {$agencyName}";
     $aResult = $oEmail->prepareCampaignImpendingExpiryEmail($aAdvertiserUser, $advertiserId1, $placementId, $impReason, $impValue, 'advertiser');
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual($aResult['subject'], $expectedSubject);
     $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents));
     // Check that advertiser2's email is send in their desired language (german)
     $expectedSubject = "Bevorstehende Deaktivierung der Kampagne: {$advertiserName}";
     $expectedContents = "Sehr geehrte(r) {$aAdvertiserUser2['contact_name']},\n\n";
     $expectedContents .= "Unten angegebene Ihre Kampagne hat weniger als {$impValue} Impressions übrig.\n\n";
     $expectedContents .= "Auf Grund dessen wird die Kampagne bald deaktiviert und weiter unten angegebene Banner aus dieser Kampagne werden deaktiviert:\n";
     $expectedContents .= "\nKampagne [id{$placementId}] Default Campaign\n";
     $expectedContents .= "http://{$aConf['webpath']['admin']}/stats.php?clientid={$advertiserId1}&campaignid={$placementId}&statsBreakdown=day&entity=campaign&breakdown=history&period_preset=all_stats&period_start=&period_end=\n";
     $expectedContents .= "-------------------------------------------------------\n\n";
     $expectedContents .= " Banner [id{$bannerId1}] Test Banner\n\n";
     $expectedContents .= " Banner [id{$bannerId2}] Test Banner\n";
     $expectedContents .= "  verknüpft mit: http://www.fornax.net/\n\n";
     $expectedContents .= "-------------------------------------------------------\n\n\n";
     $expectedContents .= "Mit freundlichem Gruß\n   {$agencyContact}, {$agencyName}";
     $aResult = $oEmail->prepareCampaignImpendingExpiryEmail($aAdvertiserUser2, $advertiserId1, $placementId, $impReason, $impValue, 'advertiser');
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $this->assertEqual($aResult['subject'], $expectedSubject);
     $this->assertEqual(str_replace("\r", "", $aResult['contents']), str_replace("\r", "", $expectedContents));
     DataGenerator::cleanUp(array('accounts', 'account_user_assoc'));
 }
Esempio n. 29
0
 function tearDown()
 {
     DataGenerator::cleanUp();
 }
 /**
  * A method to test the getPlacementFirstStatsDate() method.
  *
  * Requirements:
  * Test 1: Test with an invalid placement ID, and ensure null is returned.
  * Test 2: Test with no data in the database, and ensure current date is returned.
  * Test 3: Test with single row in the database, and ensure correct date is
  *         returned.
  * Test 4: Test with multi rows in the database, and ensure correct date is
  *         returned.
  */
 function testGetPlacementFirstStatsDate()
 {
     $conf =& $GLOBALS['_MAX']['CONF'];
     $oDbh =& OA_DB::singleton();
     $oDalStatistics = new MAX_Dal_Statistics();
     // Test 1
     $placementId = 'foo';
     $oResult = $oDalStatistics->getPlacementFirstStatsDate($placementId);
     $this->assertNull($oResult);
     // Test 2
     $placementId = 1;
     $oBeforeDate = new Date();
     sleep(1);
     $oResult = $oDalStatistics->getPlacementFirstStatsDate($placementId);
     sleep(1);
     $oAfterDate = new Date();
     $this->assertTrue(is_a($oResult, 'Date'));
     $this->assertTrue($oBeforeDate->before($oResult));
     $this->assertTrue($oAfterDate->after($oResult));
     // Test 3
     $oNow = new Date();
     $aData = array('campaignid' => $placementId, 'active' => 't', 'updated' => $oNow->format('%Y-%m-%d %H:%M:%S'), 'acls_updated' => $oNow->format('%Y-%m-%d %H:%M:%S'));
     $idBanner1 = $this->_insertBanner($aData);
     $aData = array('day' => '2006-10-30', 'hour' => 12, 'ad_id' => $idBanner1, 'updated' => $oNow->format('%Y-%m-%d %H:%M:%S'));
     $idDSAH1 = $this->_insertDataSummaryAdHourly($aData);
     $oResult = $oDalStatistics->getPlacementFirstStatsDate($placementId);
     $oExpectedDate = new Date('2006-10-30 12:00:00');
     $this->assertEqual($oResult, $oExpectedDate);
     // Test 4
     $aData = array('campaignid' => $placementId, 'active' => 't', 'updated' => $oNow->format('%Y-%m-%d %H:%M:%S'), 'acls_updated' => $oNow->format('%Y-%m-%d %H:%M:%S'));
     $idBanner2 = $this->_insertBanner($aData);
     $aData = array('campaignid' => 999, 'active' => 't', 'updated' => $oNow->format('%Y-%m-%d %H:%M:%S'), 'acls_updated' => $oNow->format('%Y-%m-%d %H:%M:%S'));
     $idBanner3 = $this->_insertBanner($aData);
     $aData = array('day' => '2006-10-29', 'hour' => 12, 'ad_id' => $idBanner2, 'updated' => $oNow->format('%Y-%m-%d %H:%M:%S'));
     $idDSAH1 = $this->_insertDataSummaryAdHourly($aData);
     $aData = array('day' => '2006-10-28', 'hour' => 12, 'ad_id' => $idBanner2, 'updated' => $oNow->format('%Y-%m-%d %H:%M:%S'));
     $idDSAH2 = $this->_insertDataSummaryAdHourly($aData);
     $aData = array('day' => '2006-10-27', 'hour' => 12, 'ad_id' => $idBanner2, 'updated' => $oNow->format('%Y-%m-%d %H:%M:%S'));
     $idDSAH3 = $this->_insertDataSummaryAdHourly($aData);
     $aData = array('day' => '2006-10-26', 'hour' => 12, 'ad_id' => 999, 'updated' => $oNow->format('%Y-%m-%d %H:%M:%S'));
     $idDSAH4 = $this->_insertDataSummaryAdHourly($aData);
     $oResult = $oDalStatistics->getPlacementFirstStatsDate($placementId);
     $oExpectedDate = new Date('2006-10-27 12:00:00');
     $this->assertEqual($oResult, $oExpectedDate);
     DataGenerator::cleanUp();
 }