コード例 #1
0
 /**
  * A method to test the _buildClasses method.
  *
  * Requirements
  * Test 1: Test with a selection of ads/zones, and ensure the correct objects
  *         are created.
  */
 function test_buildClasses()
 {
     // Mock the OA_Dal_Maintenance_Priority class used in the constructor method
     $oDal = new $this->mockDal($this);
     $oServiceLocator =& OA_ServiceLocator::instance();
     $oServiceLocator->register('OA_Dal_Maintenance_Priority', $oDal);
     // Partially mock the OA_Maintenance_Priority_AdServer_Task_PriorityCompensation class
     $oPriorityCompensation = new PartialMock_OA_Maintenance_Priority_AdServer_Task_PriorityCompensation($this);
     $oPriorityCompensation->setReturnReference('_getDal', $oDal);
     $oPriorityCompensation->setReturnReference('_getOperationIntUtils', $oOperationInterval);
     $oPriorityCompensation->__construct();
     // Test 1
     $returnGetAllZonesImpInv = array(1 => 100, 2 => 200, 3 => 300, 4 => 400, 5 => 500);
     $oDal->setReturnReference('getZonesForecastsForAllZones', $returnGetAllZonesImpInv);
     $oDal->expectOnce('getZonesForecastsForAllZones');
     $returnGetAllDeliveryLimitationChangedCreatives = array(1 => '0000-00-00 00:00:00', 2 => '2006-04-27 12:00:05');
     $oDal->setReturnReference('getAllDeliveryLimitationChangedCreatives', $returnGetAllDeliveryLimitationChangedCreatives);
     $oDal->expectOnce('getAllDeliveryLimitationChangedCreatives');
     $returnGetAllZonesWithAllocInv = array(array('zone_id' => 1, 'ad_id' => 1, 'required_impressions' => 1, 'requested_impressions' => 1), array('zone_id' => 2, 'ad_id' => 1, 'required_impressions' => 2, 'requested_impressions' => 2), array('zone_id' => 3, 'ad_id' => 1, 'required_impressions' => 3, 'requested_impressions' => 3), array('zone_id' => 4, 'ad_id' => 1, 'required_impressions' => 4, 'requested_impressions' => 4), array('zone_id' => 5, 'ad_id' => 1, 'required_impressions' => 5, 'requested_impressions' => 5), array('zone_id' => 1, 'ad_id' => 2, 'required_impressions' => 21, 'requested_impressions' => 21), array('zone_id' => 2, 'ad_id' => 2, 'required_impressions' => 22, 'requested_impressions' => 22), array('zone_id' => 3, 'ad_id' => 2, 'required_impressions' => 23, 'requested_impressions' => 23), array('zone_id' => 4, 'ad_id' => 2, 'required_impressions' => 24, 'requested_impressions' => 24), array('zone_id' => 5, 'ad_id' => 2, 'required_impressions' => 25, 'requested_impressions' => 25), array('zone_id' => 3, 'ad_id' => 3, 'required_impressions' => 33, 'requested_impressions' => 33));
     $oDal->setReturnReference('getAllZonesWithAllocInv', $returnGetAllZonesWithAllocInv);
     $oDal->expectOnce('getAllZonesWithAllocInv');
     $returnGetPreviousAdDeliveryInfo = array(1 => array(1 => array('ad_id' => 1, 'zone_id' => 1, 'required_impressions' => 5, 'requested_impressions' => 5, 'priority_factor' => 0.5, 'past_zone_traffic_fraction' => 0.1, 'impressions' => 10)));
     $oDal->setReturnReference('getPreviousAdDeliveryInfo', $returnGetPreviousAdDeliveryInfo);
     $oDal->expectOnce('getPreviousAdDeliveryInfo');
     $oPriorityCompensation->expectCallCount('_getMaxEntityAdObject', 11);
     for ($i = 0; $i < 5; $i++) {
         $oAdObject = new PartialOA_Maintenance_Priority_Ad($this);
         $oAdObject->__construct(array('ad_id' => 1));
         //$oAdObject->setReturnValue('isActiveHighPriority', true);
         $oPriorityCompensation->setReturnValueAt($i, '_getMaxEntityAdObject', $oAdObject);
     }
     for ($i = 5; $i < 10; $i++) {
         $oAdObject = new PartialOA_Maintenance_Priority_Ad($this);
         $oAdObject->__construct(array('ad_id' => 2));
         //$oAdObject->setReturnValue('isActiveHighPriority', true);
         $oPriorityCompensation->setReturnValueAt($i, '_getMaxEntityAdObject', $oAdObject);
     }
     $oAdObject = new PartialOA_Maintenance_Priority_Ad($this);
     $oAdObject->__construct(array('ad_id' => 3));
     //$oAdObject->setReturnValue('isActiveHighPriority', true);
     $oPriorityCompensation->setReturnValueAt(10, '_getMaxEntityAdObject', $oAdObject);
     $aZones = $oPriorityCompensation->_buildClasses();
     $oDal->tally();
     $oPriorityCompensation->tally();
     $this->assertEqual(strtolower(get_class($aZones[1])), strtolower('OX_Maintenance_Priority_Zone'));
     $oZone = $aZones[1];
     $this->assertEqual($oZone->id, 1);
     $this->assertEqual($oZone->availableImpressions, 100);
     $this->assertEqual(count($oZone->aAdverts), 2);
     $oAd = $oZone->aAdverts[1];
     $this->assertEqual($oAd->id, 1);
     $this->assertEqual($oAd->requiredImpressions, 1);
     $this->assertEqual($oAd->requestedImpressions, 1);
     $this->assertEqual($oAd->pastRequiredImpressions, 5);
     $this->assertEqual($oAd->pastRequestedImpressions, 5);
     $this->assertEqual($oAd->pastActualImpressions, 10);
     $this->assertEqual($oAd->pastAdZonePriorityFactor, 0.5);
     $this->assertEqual($oAd->pastZoneTrafficFraction, 0.1);
     $this->assertNull($oAd->deliveryLimitationChanged);
     $oAd = $oZone->aAdverts[2];
     $this->assertEqual($oAd->id, 2);
     $this->assertEqual($oAd->requiredImpressions, 21);
     $this->assertEqual($oAd->requestedImpressions, 21);
     $this->assertNull($oAd->pastRequiredImpressions);
     $this->assertNull($oAd->pastRequestedImpressions);
     $this->assertNull($oAd->pastActualImpressions);
     $this->assertNull($oAd->pastAdZonePriorityFactor);
     $this->assertNull($oAd->pastZoneTrafficFraction);
     $this->assertTrue($oAd->deliveryLimitationChanged);
     $this->assertEqual(strtolower(get_class($aZones[2])), strtolower('OX_Maintenance_Priority_Zone'));
     $oZone = $aZones[2];
     $this->assertEqual($oZone->id, 2);
     $this->assertEqual($oZone->availableImpressions, 200);
     $this->assertEqual(count($oZone->aAdverts), 2);
     $oAd = $oZone->aAdverts[1];
     $this->assertEqual($oAd->id, 1);
     $this->assertEqual($oAd->requiredImpressions, 2);
     $this->assertEqual($oAd->requestedImpressions, 2);
     $this->assertNull($oAd->pastRequiredImpressions);
     $this->assertNull($oAd->pastRequestedImpressions);
     $this->assertNull($oAd->pastActualImpressions);
     $this->assertNull($oAd->pastAdZonePriorityFactor);
     $this->assertNull($oAd->pastZoneTrafficFraction);
     $this->assertNull($oAd->deliveryLimitationChanged);
     $oAd = $oZone->aAdverts[2];
     $this->assertEqual($oAd->id, 2);
     $this->assertEqual($oAd->requiredImpressions, 22);
     $this->assertEqual($oAd->requestedImpressions, 22);
     $this->assertNull($oAd->pastRequiredImpressions);
     $this->assertNull($oAd->pastRequestedImpressions);
     $this->assertNull($oAd->pastActualImpressions);
     $this->assertNull($oAd->pastAdZonePriorityFactor);
     $this->assertNull($oAd->pastZoneTrafficFraction);
     $this->assertTrue($oAd->deliveryLimitationChanged);
     $this->assertEqual(strtolower(get_class($aZones[3])), strtolower('OX_Maintenance_Priority_Zone'));
     $oZone = $aZones[3];
     $this->assertEqual($oZone->id, 3);
     $this->assertEqual($oZone->availableImpressions, 300);
     $this->assertEqual(count($oZone->aAdverts), 3);
     $oAd = $oZone->aAdverts[1];
     $this->assertEqual($oAd->id, 1);
     $this->assertEqual($oAd->requiredImpressions, 3);
     $this->assertEqual($oAd->requestedImpressions, 3);
     $this->assertNull($oAd->pastRequiredImpressions);
     $this->assertNull($oAd->pastRequestedImpressions);
     $this->assertNull($oAd->pastActualImpressions);
     $this->assertNull($oAd->pastAdZonePriorityFactor);
     $this->assertNull($oAd->pastZoneTrafficFraction);
     $this->assertNull($oAd->deliveryLimitationChanged);
     $oAd = $oZone->aAdverts[2];
     $this->assertEqual($oAd->id, 2);
     $this->assertEqual($oAd->requiredImpressions, 23);
     $this->assertEqual($oAd->requestedImpressions, 23);
     $this->assertNull($oAd->pastRequiredImpressions);
     $this->assertNull($oAd->pastRequestedImpressions);
     $this->assertNull($oAd->pastActualImpressions);
     $this->assertNull($oAd->pastAdZonePriorityFactor);
     $this->assertNull($oAd->pastZoneTrafficFraction);
     $this->assertTrue($oAd->deliveryLimitationChanged);
     $oAd = $oZone->aAdverts[3];
     $this->assertEqual($oAd->id, 3);
     $this->assertEqual($oAd->requiredImpressions, 33);
     $this->assertEqual($oAd->requestedImpressions, 33);
     $this->assertNull($oAd->pastRequiredImpressions);
     $this->assertNull($oAd->pastRequestedImpressions);
     $this->assertNull($oAd->pastActualImpressions);
     $this->assertNull($oAd->pastAdZonePriorityFactor);
     $this->assertNull($oAd->pastZoneTrafficFraction);
     $this->assertNull($oAd->deliveryLimitationChanged);
     $this->assertEqual(strtolower(get_class($aZones[4])), strtolower('OX_Maintenance_Priority_Zone'));
     $oZone = $aZones[4];
     $this->assertEqual($oZone->id, 4);
     $this->assertEqual($oZone->availableImpressions, 400);
     $this->assertEqual(count($oZone->aAdverts), 2);
     $oAd = $oZone->aAdverts[1];
     $this->assertEqual($oAd->id, 1);
     $this->assertEqual($oAd->requiredImpressions, 4);
     $this->assertEqual($oAd->requestedImpressions, 4);
     $this->assertNull($oAd->pastRequiredImpressions);
     $this->assertNull($oAd->pastRequestedImpressions);
     $this->assertNull($oAd->pastActualImpressions);
     $this->assertNull($oAd->pastAdZonePriorityFactor);
     $this->assertNull($oAd->pastZoneTrafficFraction);
     $this->assertNull($oAd->deliveryLimitationChanged);
     $oAd = $oZone->aAdverts[2];
     $this->assertEqual($oAd->id, 2);
     $this->assertEqual($oAd->requiredImpressions, 24);
     $this->assertEqual($oAd->requestedImpressions, 24);
     $this->assertNull($oAd->pastRequiredImpressions);
     $this->assertNull($oAd->pastRequestedImpressions);
     $this->assertNull($oAd->pastActualImpressions);
     $this->assertNull($oAd->pastAdZonePriorityFactor);
     $this->assertNull($oAd->pastZoneTrafficFraction);
     $this->assertTrue($oAd->deliveryLimitationChanged);
     $this->assertEqual(strtolower(get_class($aZones[5])), strtolower('OX_Maintenance_Priority_Zone'));
     $oZone = $aZones[5];
     $this->assertEqual($oZone->id, 5);
     $this->assertEqual($oZone->availableImpressions, 500);
     $this->assertEqual(count($oZone->aAdverts), 2);
     $oAd = $oZone->aAdverts[1];
     $this->assertEqual($oAd->id, 1);
     $this->assertEqual($oAd->requiredImpressions, 5);
     $this->assertEqual($oAd->requestedImpressions, 5);
     $this->assertNull($oAd->pastRequiredImpressions);
     $this->assertNull($oAd->pastRequestedImpressions);
     $this->assertNull($oAd->pastActualImpressions);
     $this->assertNull($oAd->pastAdZonePriorityFactor);
     $this->assertNull($oAd->pastZoneTrafficFraction);
     $this->assertNull($oAd->deliveryLimitationChanged);
     $oAd = $oZone->aAdverts[2];
     $this->assertEqual($oAd->id, 2);
     $this->assertEqual($oAd->requiredImpressions, 25);
     $this->assertEqual($oAd->requestedImpressions, 25);
     $this->assertNull($oAd->pastRequiredImpressions);
     $this->assertNull($oAd->pastRequestedImpressions);
     $this->assertNull($oAd->pastActualImpressions);
     $this->assertNull($oAd->pastAdZonePriorityFactor);
     $this->assertNull($oAd->pastZoneTrafficFraction);
     $this->assertTrue($oAd->deliveryLimitationChanged);
 }