1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- //require_once "../application/configs/conf.php";
- require_once "TestHelper.php";
- require_once "ShowServiceData.php";
- require_once "Schedule.php";
- require_once "Zend/Controller/Action.php";
- require_once "ControllerTestCase.php";
- require_once "ApiController.php";
- class ScheduleUnitTest extends Zend_Test_PHPUnit_ControllerTestCase //PHPUnit_Framework_TestCase
- {
- public function setUp()
- {
- TestHelper::installTestDatabase();
- TestHelper::setupZendBootstrap();
-
- parent::setUp();
- }
- public function testCheckOverlappingShows()
- {
-
- }
- public function testIsFileScheduledInTheFuture()
- {
- TestHelper::loginUser();
- $CC_CONFIG = Config::getConfig();
- $testShowData = ShowServiceData::getNoRepeatNoRRData();
- $showService = new Application_Service_ShowService();
- $futureDate = new DateTime();
- $futureDate->add(new DateInterval('P1Y')); //1 year into the future
- $futureDateString = $futureDate->format('Y-m-d');
- $testShowData["add_show_start_date"] = $futureDateString;
- $testShowData["add_show_end_date"] = $futureDateString;
- $testShowData["add_show_end_date_no_repeat"] = $futureDateString;
- //Fudge the "populated until" date to workaround and issue where the default
- //value will prevent anything from actually being scheduled. Normally this isn't
- //a problem because as soon as you view the calendar for the first time, this is
- //set to a week ahead in the future.
- $populateUntil = new DateTime("now", new DateTimeZone('UTC'));
- $populateUntil = $populateUntil->add(new DateInterval("P2Y")); //2 years ahead in the future.
- Application_Model_Preference::SetShowsPopulatedUntil($populateUntil);
- //$showService->setCcShow($testShowData); //Denise says this is not needed.
- $showService->addUpdateShow($testShowData); //Create show instances
- // Because files are stored relative to their watch directory,
- // we need to set the "stor" path before we can successfully
- // create a fake file in the database.
- //Copy paste from airtime-db-install.php:
- $stor_dir = "/tmp";
- $con = Propel::getConnection();
- $sql = "INSERT INTO cc_music_dirs (directory, type) VALUES ('$stor_dir', 'stor')";
- try {
- $con->exec($sql);
- } catch (Exception $e) {
- echo " * Failed inserting {$stor_dir} in cc_music_dirs".PHP_EOL;
- echo " * Message {$e->getMessage()}".PHP_EOL;
- return false;
- }
- // Insert a fake file into the database
- $request = $this->getRequest();
- $params = $request->getParams();
- $params['action'] = '';
- $params['api_key'] = $CC_CONFIG["apiKey"][0];
- $request->setParams($params);
- $metadata = array("MDATA_KEY_FILEPATH" => "/tmp/foobar.mp3",
- "MDATA_KEY_DURATION" => "00:01:00",
- "is_record" => false);
- //Create the file in the database via the HTTP API.
- $apiController = new ApiController($this->request, $this->getResponse());
- $results = $apiController->dispatchMetadata($metadata, "create");
- $fileId = $results["fileid"];
- $this->assertNotEquals($fileId, -1);
- $this->assertEquals($fileId, 1);
-
- //The file should not be scheduled in the future (or at all) at this point
- $scheduleModel = new Application_Model_Schedule();
- $scheduleModel->IsFileScheduledInTheFuture($fileId);
- $this->assertEquals($scheduleModel->IsFileScheduledInTheFuture($fileId), false);
- //Schedule the fake file in the test show, which should be in the future.
- $showInstance = new Application_Model_ShowInstance(1);
- $showInstance->addFileToShow($fileId);
-
- //Test the function we actually want to test. :-)
- $this->assertEquals($scheduleModel->IsFileScheduledInTheFuture($fileId), true);
- }
- }
|