/**
  * Prune all entries where the ad_id is for a banner in a High Priority Campaign where:
  * The campaign does not have any booked lifetime target values AND the capaign has an end date AND the end date has been passed AND the campaign is not active.
  *
  */
 function testpruneDataSummaryAdZoneAssocInactiveExpired()
 {
     $oToday = new Date();
     $oToday->setHour(23);
     $oToday->setMinute(59);
     $oToday->setSecond(59);
     $oExpire = new Date($oToday);
     $oExpire->subtractSpan(new Date_Span('10-0-0-0'));
     $today = $oToday->getDate(DATE_FORMAT_ISO);
     $expire = $oExpire->getDate(DATE_FORMAT_ISO);
     $oDal = new OA_Maintenance_Pruning();
     $doDSAZA = OA_Dal::factoryDO('data_summary_ad_zone_assoc');
     // generate 2 summary ad_zone records for an active campaign ad_id
     $doDSAZA->ad_id = $this->idBanner1;
     $aIds = DataGenerator::generate($doDSAZA, 2);
     // generate 7 summary ad_zone records for an inactive campaign ad_id
     $doDSAZA->ad_id = $this->idBanner2;
     $aIds = DataGenerator::generate($doDSAZA, 7);
     // make sure 9 rows in table
     $this->assertEqual($this->_countRowsInDSAZA(), 9);
     // ad_id 1 => campaignid 1 => active, high priority, not expired
     $doCampaigns = OA_Dal::staticGetDO('campaigns', $this->idCampaign1);
     $doCampaigns->priority = 5;
     $doCampaigns->status = OA_ENTITY_STATUS_RUNNING;
     $doCampaigns->target_impression = 0;
     $doCampaigns->target_click = 0;
     $doCampaigns->target_conversion = 0;
     $doCampaigns->views = 0;
     $doCampaigns->clicks = 0;
     $doCampaigns->conversions = 0;
     $doCampaigns->update();
     // ad_id 2 => campaignid 2 => not active, high priority, expired
     $doCampaigns = OA_Dal::staticGetDO('campaigns', $this->idCampaign2);
     $doCampaigns->priority = 5;
     $doCampaigns->status = OA_ENTITY_STATUS_EXPIRED;
     $doCampaigns->target_impression = 0;
     $doCampaigns->target_click = 0;
     $doCampaigns->target_conversion = 0;
     $doCampaigns->views = 0;
     $doCampaigns->clicks = 0;
     $doCampaigns->conversions = 0;
     $doCampaigns->expire_time = $expire;
     $doCampaigns->update();
     $result = $oDal->_pruneDataSummaryAdZoneAssocInactiveExpired();
     // 7 records were deleted
     $this->assertEqual($result, 7);
     // 2 records remain
     $this->assertEqual($this->_countRowsInDSAZA(), 2);
     // ad_id 1 => campaignid 1 => not active, override (low priority)
     $doCampaigns = OA_Dal::staticGetDO('campaigns', $this->idCampaign1);
     $doCampaigns->priority = -1;
     $doCampaigns->status = OA_ENTITY_STATUS_EXPIRED;
     $doCampaigns->target_impression = 0;
     $doCampaigns->target_click = 0;
     $doCampaigns->target_conversion = 0;
     $doCampaigns->views = 0;
     $doCampaigns->clicks = 0;
     $doCampaigns->conversions = 0;
     $doCampaigns->expire_time = $expire;
     $doCampaigns->update();
     $result = $oDal->_pruneDataSummaryAdZoneAssocInactiveExpired();
     // 0 records were deleted
     $this->assertEqual($result, 0);
     // 2 records remain
     $this->assertEqual($this->_countRowsInDSAZA(), 2);
     // ad_id 1 => campaignid 1 => not active, high priority, not expired
     $doCampaigns = OA_Dal::staticGetDO('campaigns', $this->idCampaign1);
     $doCampaigns->priority = 5;
     $doCampaigns->status = OA_ENTITY_STATUS_EXPIRED;
     $doCampaigns->target_impression = 0;
     $doCampaigns->target_click = 0;
     $doCampaigns->target_conversion = 0;
     $doCampaigns->views = 0;
     $doCampaigns->clicks = 0;
     $doCampaigns->conversions = 0;
     $doCampaigns->expire_time = OX_DATAOBJECT_NULL;
     $doCampaigns->update();
     $result = $oDal->_pruneDataSummaryAdZoneAssocInactiveExpired();
     // 0 records were deleted
     $this->assertEqual($result, 0);
     // 2 records remain
     $this->assertEqual($this->_countRowsInDSAZA(), 2);
     // ad_id 1 => campaignid 1 => not active, high priority, expired
     $doCampaigns = OA_Dal::staticGetDO('campaigns', $this->idCampaign1);
     $doCampaigns->priority = 5;
     $doCampaigns->status = OA_ENTITY_STATUS_EXPIRED;
     $doCampaigns->target_impression = 0;
     $doCampaigns->target_click = 0;
     $doCampaigns->target_conversion = 0;
     $doCampaigns->views = 0;
     $doCampaigns->clicks = 0;
     $doCampaigns->conversions = 0;
     $doCampaigns->expire_time = $expire;
     $doCampaigns->update();
     $result = $oDal->_pruneDataSummaryAdZoneAssocInactiveExpired();
     // 2 records were deleted
     $this->assertEqual($result, 2);
     // 0 records remain
     $this->assertEqual($this->_countRowsInDSAZA(), 0);
     // generate 2 summary ad_zone records for an active campaign that expires today
     $doDSAZA->ad_id = 1;
     $aIds = DataGenerator::generate($doDSAZA, 2);
     $this->assertEqual($this->_countRowsInDSAZA(), 2);
     // ad_id 1 => campaignid 1 => active, high priority, expires today
     $doCampaigns = OA_Dal::staticGetDO('campaigns', $this->idCampaign1);
     $doCampaigns->priority = 5;
     $doCampaigns->status = OA_ENTITY_STATUS_RUNNING;
     $doCampaigns->target_impression = 0;
     $doCampaigns->target_click = 0;
     $doCampaigns->target_conversion = 0;
     $doCampaigns->views = 0;
     $doCampaigns->clicks = 0;
     $doCampaigns->conversions = 0;
     $doCampaigns->expire_time = $today;
     $doCampaigns->update();
     $result = $oDal->_pruneDataSummaryAdZoneAssocInactiveExpired();
     // 0 records were deleted
     $this->assertEqual($result, 0);
     // 2 records remain
     $this->assertEqual($this->_countRowsInDSAZA(), 2);
     // ad_id 1 => campaignid 1 => active, high priority, expired
     $doCampaigns = OA_Dal::staticGetDO('campaigns', $this->idCampaign1);
     $doCampaigns->priority = 5;
     $doCampaigns->status = OA_ENTITY_STATUS_EXPIRED;
     $doCampaigns->target_impression = 0;
     $doCampaigns->target_click = 0;
     $doCampaigns->target_conversion = 0;
     $doCampaigns->views = 0;
     $doCampaigns->clicks = 0;
     $doCampaigns->conversions = 0;
     $doCampaigns->expire_time = $expire;
     $doCampaigns->update();
     $result = $oDal->_pruneDataSummaryAdZoneAssocInactiveExpired();
     // 2 records were deleted
     $this->assertEqual($result, 2);
     // 0 records remain
     $this->assertEqual($this->_countRowsInDSAZA(), 0);
 }