function calculateEcpm() { if ($this->campaignid) { $oMaxDalMaintenance = new OA_Dal_Maintenance_Priority(); $result = $oMaxDalMaintenance->getCampaignDeliveryToDate($this->campaignid); $requestsToDate = $result[0]['sum_requests']; $impressionsToDate = $result[0]['sum_views']; $clicksToDate = $result[0]['sum_clicks']; $conversionsToDate = $result[0]['sum_conversions']; } else { $requestsToDate = $impressionsToDate = $clicksToDate = $conversionsToDate = 0; } return OX_Util_Utils::getEcpm($this->revenue_type, $this->revenue, $impressionsToDate, $clicksToDate, $conversionsToDate, $this->activate_time, $this->expire_time); }
/** * Method to test the getCampaignDeliveryToDate 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. * * @TODO Incomplete test! */ function testGetCampaignDeliveryToDate() { /** * @TODO Locate where clean up doesn't happen before this test, and fix! */ TestEnv::restoreEnv(); $conf = $GLOBALS['_MAX']['CONF']; $oDbh =& OA_DB::singleton(); $oMaxDalMaintenance = new OA_Dal_Maintenance_Priority(); $oNow = new Date(); // Test 1 $result = $oMaxDalMaintenance->getCampaignDeliveryToDate(1); $this->assertTrue(is_array($result)); $this->assertEqual(count($result), 0); $doCampaigns = OA_Dal::factoryDO('campaigns'); $doCampaigns->activate_time = '2005-06-23 00:00:00'; $doCampaigns->expire_time = '2005-06-25 23:59:59'; $doCampaigns->priority = '1'; $doCampaigns->active = 1; $doCampaigns->views = 100; $doCampaigns->clicks = 200; $doCampaigns->conversions = 300; $doCampaigns->status = OA_ENTITY_STATUS_RUNNING; $doCampaigns->updated = $oNow->format('%Y-%m-%d %H:%M:%S'); $idCampaign = DataGenerator::generateOne($doCampaigns, true); $doBanners = OA_Dal::factoryDO('banners'); $doBanners->campaignid = $idCampaign; $doBanners->active = 1; $doBanners->status = OA_ENTITY_STATUS_RUNNING; $doBanners->acls_updated = $oNow->format('%Y-%m-%d %H:%M:%S'); $doBanners->updated = $oNow->format('%Y-%m-%d %H:%M:%S'); $idBanner = DataGenerator::generateOne($doBanners); $doInterAd = OA_Dal::factoryDO('data_intermediate_ad'); $doInterAd->operation_interval = 60; $doInterAd->operation_interval_id = 0; $doInterAd->ad_id = $idBanner; $doInterAd->day = '2005-06-24'; $doInterAd->creative_id = 0; $doInterAd->zone_id = 1; $doInterAd->requests = 500; $doInterAd->impressions = 475; $doInterAd->clicks = 25; $doInterAd->conversions = 5; $doInterAd->updated = $oNow->format('%Y-%m-%d %H:%M:%S'); $doInterAd->interval_start = '2005-06-24 10:00:00'; $doInterAd->interval_end = '2005-06-24 10:59:59'; $doInterAd->hour = 10; $idInterAd = DataGenerator::generateOne($doInterAd); $doInterAd->interval_start = '2005-06-24 11:00:00'; $doInterAd->interval_end = '2005-06-24 11:59:59'; $doInterAd->hour = 11; $idInterAd = DataGenerator::generateOne($doInterAd); $result = $oMaxDalMaintenance->getCampaignDeliveryToDate(1); $this->assertTrue(is_array($result)); $this->assertEqual(count($result), 1); $this->assertEqual($result[0]['placement_id'], 1); $this->assertEqual($result[0]['sum_requests'], 1000); $this->assertEqual($result[0]['sum_views'], 950); $this->assertEqual($result[0]['sum_clicks'], 50); $this->assertEqual($result[0]['sum_conversions'], 10); // Test 3 DataGenerator::cleanUp(); }