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