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(); }
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(); }
/** * 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(); }
/** * 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')); }
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(); }