/**
  * The method to test the getActiveZones() method.
  */
 function testGetActiveZones()
 {
     $oDal = new OA_Dal_Maintenance_Priority();
     // Add campaign
     $doCampaigns = OA_Dal::factoryDO('campaigns');
     $doCampaigns->campaignname = 'Active Campaign';
     $doCampaigns->status = OA_ENTITY_STATUS_RUNNING;
     $doCampaigns->priority = 9;
     $idCampaign = DataGenerator::generateOne($doCampaigns);
     // Test with no zones in the system
     $aResult = $oDal->getActiveZones();
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 0);
     // Test with two zones in the system, but with no banners linked
     $doZones = OA_Dal::factoryDO('zones');
     $oNow = new Date();
     $doZones->zonename = 'First Zone';
     $doZones->zonetype = 3;
     $doZones->updated = $oNow->format('%Y-%m-%d %H:%M:%S');
     $idZoneFirst = DataGenerator::generateOne($doZones);
     $doZones = OA_Dal::factoryDO('zones');
     $oNow = new Date();
     $doZones->zonename = 'Second Zone';
     $doZones->zonetype = 3;
     $doZones->updated = $oNow->format('%Y-%m-%d %H:%M:%S');
     $idZoneSecond = DataGenerator::generateOne($doZones);
     $aResult = $oDal->getActiveZones();
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 0);
     // Test with active and inactive banners in the system, but not linked
     $doBanners = OA_Dal::factoryDO('banners');
     $oNow = new Date();
     $doBanners->status = OA_ENTITY_STATUS_RUNNING;
     $doBanners->campaignid = $idCampaign;
     $doBanners->acls_updated = $oNow->format('%Y-%m-%d %H:%M:%S');
     $doBanners->updated = $oNow->format('%Y-%m-%d %H:%M:%S');
     $idBannerActive = DataGenerator::generateOne($doBanners, true);
     $doBanners = OA_Dal::factoryDO('banners');
     $oNow = new Date();
     $doBanners->status = OA_ENTITY_STATUS_INACTIVE;
     $doBanners->campaignid = $idCampaign;
     $doBanners->acls_updated = $oNow->format('%Y-%m-%d %H:%M:%S');
     $doBanners->updated = $oNow->format('%Y-%m-%d %H:%M:%S');
     $idBannerInactive = DataGenerator::generateOne($doBanners, true);
     $aResult = $oDal->getActiveZones();
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 0);
     // Link the active and inactive banners to different zones, and
     // check only the active zone is returned
     $doAdZone = OA_Dal::factoryDO('ad_zone_assoc');
     $doAdZone->ad_id = $idBannerActive;
     $doAdZone->zone_id = $idZoneFirst;
     $doAdZone->priority = 0;
     $doAdZone->link_type = 1;
     $doAdZone->priority_factor = 1;
     $doAdZone->to_be_delivered = 1;
     $idAdZone = DataGenerator::generateOne($doAdZone);
     $doAdZone = OA_Dal::factoryDO('ad_zone_assoc');
     $doAdZone->ad_id = $idBannerInactive;
     $doAdZone->zone_id = $idZoneSecond;
     $doAdZone->priority = 0;
     $doAdZone->link_type = 1;
     $doAdZone->priority_factor = 1;
     $doAdZone->to_be_delivered = 1;
     $idAdZone = DataGenerator::generateOne($doAdZone);
     $aResult = $oDal->getActiveZones();
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 1);
     $aZone = $aResult[0];
     $this->assertTrue(array_key_exists('zoneid', $aZone));
     $this->assertTrue(array_key_exists('zonename', $aZone));
     $this->assertTrue(array_key_exists('zonetype', $aZone));
     $this->assertEqual($aZone['zoneid'], $idZoneFirst);
     $this->assertEqual($aZone['zonename'], 'First Zone');
     $this->assertEqual($aZone['zonetype'], 3);
     // Now link the active banner to the second zone, and check
     // both zones are returned
     $doAdZone = OA_Dal::factoryDO('ad_zone_assoc');
     $doAdZone->ad_id = $idBannerActive;
     $doAdZone->zone_id = $idZoneSecond;
     $doAdZone->priority = 0;
     $doAdZone->link_type = 1;
     $doAdZone->priority_factor = 1;
     $doAdZone->to_be_delivered = 1;
     $idAdZone = DataGenerator::generateOne($doAdZone);
     $aResult = $oDal->getActiveZones();
     $this->assertTrue(is_array($aResult));
     $this->assertEqual(count($aResult), 2);
     $aZone = $aResult[0];
     $this->assertTrue(array_key_exists('zoneid', $aZone));
     $this->assertTrue(array_key_exists('zonename', $aZone));
     $this->assertTrue(array_key_exists('zonetype', $aZone));
     $this->assertEqual($aZone['zoneid'], $idZoneFirst);
     $this->assertEqual($aZone['zonename'], 'First Zone');
     $this->assertEqual($aZone['zonetype'], 3);
     $aZone = $aResult[1];
     $this->assertTrue(array_key_exists('zoneid', $aZone));
     $this->assertTrue(array_key_exists('zonename', $aZone));
     $this->assertTrue(array_key_exists('zonetype', $aZone));
     $this->assertEqual($aZone['zoneid'], $idZoneSecond);
     $this->assertEqual($aZone['zonename'], 'Second Zone');
     $this->assertEqual($aZone['zonetype'], 3);
     DataGenerator::cleanUp();
 }