CC-5593: Overlapping Show Bug

Added tests for checking if shows overlap
This commit is contained in:
drigato 2014-01-23 17:06:27 -05:00
parent fc4dfd5cb0
commit ca09ad2896
6 changed files with 566 additions and 1 deletions

View File

@ -0,0 +1,123 @@
<?php
require_once "Zend/Test/PHPUnit/DatabaseTestCase.php";
require_once "ShowService.php";
require_once "../application/configs/conf.php";
require_once "TestHelper.php";
require_once "ShowServiceData.php";
class ScheduleDbTest extends Zend_Test_PHPUnit_DatabaseTestCase
{
private $_connectionMock;
public function setUp()
{
TestHelper::installTestDatabase();
$this->appBootstrap();
parent::setUp();
}
public function appBootstrap()
{
$this->application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH .'/configs/application.ini');
$this->application->bootstrap();
}
public function getConnection()
{
if ($this->_connectionMock == null) {
$config = TestHelper::getDbZendConfig();
$connection = Zend_Db::factory('pdo_pgsql', $config);
$this->_connectionMock = $this->createZendDbConnection(
$connection,
'airtimeunittests'
);
Zend_Db_Table_Abstract::setDefaultAdapter($connection);
}
return $this->_connectionMock;
}
/* Defines how the initial state of the database should look before each test is executed
* Called once during setUp() and gets recreated for each new test
*/
public function getDataSet()
{
return $this->createXmlDataSet(
dirname(__FILE__) . '/datasets/seed_schedule.xml'
);
}
public function testCheckOverlappingShows()
{
TestHelper::loginUser();
$data = ShowServiceData::getOverlappingShowCheckTestData();
$showService = new Application_Service_ShowService(null, $data);
/** Create shows to test against **/
$showService->addUpdateShow($data);
$ds = new Zend_Test_PHPUnit_Db_DataSet_QueryDataSet(
$this->getConnection()
);
$ds->addTable('cc_show', 'select * from cc_show');
$ds->addTable('cc_show_days', 'select * from cc_show_days');
$ds->addTable('cc_show_instances', 'select id, starts, ends, show_id, modified_instance from cc_show_instances');
$ds->addTable('cc_show_rebroadcast', 'select * from cc_show_rebroadcast');
$ds->addTable('cc_show_hosts', 'select * from cc_show_hosts');
/** Make sure shows were created correctly **/
$this->assertDataSetsEqual(
$this->createXmlDataSet(dirname(__FILE__)."/datasets/test_checkOverlappingShows.xml"),
$ds
);
$utcTimezone = new DateTimeZone("UTC");
/** Test that overlapping check works when creating a new show **/
$overlapping = Application_Model_Schedule::checkOverlappingShows(
new DateTime("2014-02-01 00:00:00", $utcTimezone),
new DateTime("2014-02-01 01:00:00", $utcTimezone)
);
$this->assertEquals($overlapping, false);
$overlapping = Application_Model_Schedule::checkOverlappingShows(
new DateTime("2014-01-05 00:00:00", $utcTimezone),
new DateTime("2014-01-05 02:00:00", $utcTimezone)
);
$this->assertEquals($overlapping, true);
$overlapping = Application_Model_Schedule::checkOverlappingShows(
new DateTime("2014-01-05 01:00:00", $utcTimezone),
new DateTime("2014-01-05 02:00:00", $utcTimezone)
);
$this->assertEquals($overlapping, false);
$overlapping = Application_Model_Schedule::checkOverlappingShows(
new DateTime("2014-01-31 00:30:00", $utcTimezone),
new DateTime("2014-01-31 01:30:00", $utcTimezone)
);
$this->assertEquals($overlapping, true);
$overlapping = Application_Model_Schedule::checkOverlappingShows(
new DateTime("2014-01-20 23:55:00", $utcTimezone),
new DateTime("2014-01-21 00:00:05", $utcTimezone)
);
$this->assertEquals($overlapping, true);
/** Test overlapping check works when editing an entire show **/
$overlapping = Application_Model_Schedule::checkOverlappingShows(
new DateTime("2014-01-05 00:00:00", $utcTimezone),
new DateTime("2014-01-05 02:00:00", $utcTimezone),
true,
null,
1
);
$this->assertEquals($overlapping, false);
/** Delete a repeating instance and test if we can modify the show after **/
}
}

View File

@ -0,0 +1,21 @@
<?xml version="1.0" ?>
<dataset>
<table name="cc_pref">
<column>id</column>
<column>subjid</column>
<column>keystr</column>
<column>valstr</column>
<row>
<value>1</value>
<null />
<value>shows_populated_until</value>
<value>2014-02-01 00:00:00</value>
</row>
<row>
<value>2</value>
<null />
<value>timezone</value>
<value>UTC</value>
</row>
</table>
</dataset>

View File

@ -0,0 +1,341 @@
<?xml version="1.0" ?>
<dataset>
<table name="cc_show">
<column>id</column>
<column>name</column>
<column>url</column>
<column>genre</column>
<column>description</column>
<column>color</column>
<column>background_color</column>
<column>live_stream_using_airtime_auth</column>
<column>live_stream_using_custom_auth</column>
<column>live_stream_user</column>
<column>live_stream_pass</column>
<column>linked</column>
<column>is_linkable</column>
<row>
<value>1</value>
<value>test show</value>
<null />
<null />
<null />
<value>ffffff</value>
<value>364492</value>
<value></value>
<value></value>
<null />
<null />
<value></value>
<value>1</value>
</row>
</table>
<table name="cc_show_days">
<column>id</column>
<column>first_show</column>
<column>last_show</column>
<column>start_time</column>
<column>timezone</column>
<column>duration</column>
<column>day</column>
<column>repeat_type</column>
<column>next_pop_date</column>
<column>show_id</column>
<column>record</column>
<row>
<value>1</value>
<value>2014-01-05</value>
<null />
<value>00:00:00</value>
<value>UTC</value>
<value>01:00</value>
<value>0</value>
<value>0</value>
<value>2014-02-02</value>
<value>1</value>
<value>0</value>
</row>
<row>
<value>2</value>
<value>2014-01-06</value>
<null />
<value>00:00:00</value>
<value>UTC</value>
<value>01:00</value>
<value>1</value>
<value>0</value>
<value>2014-02-03</value>
<value>1</value>
<value>0</value>
</row>
<row>
<value>3</value>
<value>2014-01-07</value>
<null />
<value>00:00:00</value>
<value>UTC</value>
<value>01:00</value>
<value>2</value>
<value>0</value>
<value>2014-02-04</value>
<value>1</value>
<value>0</value>
</row>
<row>
<value>4</value>
<value>2014-01-08</value>
<null />
<value>00:00:00</value>
<value>UTC</value>
<value>01:00</value>
<value>3</value>
<value>0</value>
<value>2014-02-05</value>
<value>1</value>
<value>0</value>
</row>
<row>
<value>5</value>
<value>2014-01-09</value>
<null />
<value>00:00:00</value>
<value>UTC</value>
<value>01:00</value>
<value>4</value>
<value>0</value>
<value>2014-02-06</value>
<value>1</value>
<value>0</value>
</row>
<row>
<value>6</value>
<value>2014-01-10</value>
<null />
<value>00:00:00</value>
<value>UTC</value>
<value>01:00</value>
<value>5</value>
<value>0</value>
<value>2014-02-07</value>
<value>1</value>
<value>0</value>
</row>
<row>
<value>7</value>
<value>2014-01-11</value>
<null />
<value>00:00:00</value>
<value>UTC</value>
<value>01:00</value>
<value>6</value>
<value>0</value>
<value>2014-02-01</value>
<value>1</value>
<value>0</value>
</row>
</table>
<table name="cc_show_instances">
<column>id</column>
<column>starts</column>
<column>ends</column>
<column>show_id</column>
<column>modified_instance</column>
<row>
<value>1</value>
<value>2014-01-05 00:00:00</value>
<value>2014-01-05 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>2</value>
<value>2014-01-12 00:00:00</value>
<value>2014-01-12 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>3</value>
<value>2014-01-19 00:00:00</value>
<value>2014-01-19 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>4</value>
<value>2014-01-26 00:00:00</value>
<value>2014-01-26 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>5</value>
<value>2014-01-06 00:00:00</value>
<value>2014-01-06 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>6</value>
<value>2014-01-13 00:00:00</value>
<value>2014-01-13 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>7</value>
<value>2014-01-20 00:00:00</value>
<value>2014-01-20 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>8</value>
<value>2014-01-27 00:00:00</value>
<value>2014-01-27 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>9</value>
<value>2014-01-07 00:00:00</value>
<value>2014-01-07 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>10</value>
<value>2014-01-14 00:00:00</value>
<value>2014-01-14 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>11</value>
<value>2014-01-21 00:00:00</value>
<value>2014-01-21 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>12</value>
<value>2014-01-28 00:00:00</value>
<value>2014-01-28 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>13</value>
<value>2014-01-08 00:00:00</value>
<value>2014-01-08 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>14</value>
<value>2014-01-15 00:00:00</value>
<value>2014-01-15 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>15</value>
<value>2014-01-22 00:00:00</value>
<value>2014-01-22 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>16</value>
<value>2014-01-29 00:00:00</value>
<value>2014-01-29 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>17</value>
<value>2014-01-09 00:00:00</value>
<value>2014-01-09 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>18</value>
<value>2014-01-16 00:00:00</value>
<value>2014-01-16 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>19</value>
<value>2014-01-23 00:00:00</value>
<value>2014-01-23 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>20</value>
<value>2014-01-30 00:00:00</value>
<value>2014-01-30 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>21</value>
<value>2014-01-10 00:00:00</value>
<value>2014-01-10 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>22</value>
<value>2014-01-17 00:00:00</value>
<value>2014-01-17 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>23</value>
<value>2014-01-24 00:00:00</value>
<value>2014-01-24 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>24</value>
<value>2014-01-31 00:00:00</value>
<value>2014-01-31 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>25</value>
<value>2014-01-11 00:00:00</value>
<value>2014-01-11 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>26</value>
<value>2014-01-18 00:00:00</value>
<value>2014-01-18 01:00:00</value>
<value>1</value>
<value></value>
</row>
<row>
<value>27</value>
<value>2014-01-25 00:00:00</value>
<value>2014-01-25 01:00:00</value>
<value>1</value>
<value></value>
</row>
</table>
<table name="cc_show_rebroadcast">
</table>
<table name="cc_show_hosts">
</table>
</dataset>

View File

@ -61,7 +61,7 @@ class ShowServiceDbTest extends Zend_Test_PHPUnit_DatabaseTestCase
public function getDataSet()
{
$xml_dataset = $this->createXmlDataSet(
dirname(__FILE__) . '/datasets/cc_show_seed.xml'
dirname(__FILE__) . '/datasets/seed_show_service.xml'
);
/*$xml_dataset_fixed = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet(
$xml_dataset, array('SIX_WEEKS' => $this->_nowDT->add(new DateInterval("P42D"))->format("Y-m-d H:i:s")));

View File

@ -231,6 +231,11 @@ Class ShowServiceData
return array(1,2,3,4,5);
}
public static function getDailyRepeatDays()
{
return array(0,1,2,3,4,5,6);
}
public static function getEditRepeatInstanceData()
{
return array(
@ -256,4 +261,79 @@ Class ShowServiceData
"add_show_hosts" => null
);
}
public static function getOverlappingShowCheckTestData()
{
return array(
"add_show_id" => -1,
"add_show_instance_id" => -1,
"add_show_name" => "test show",
"add_show_url" => null,
"add_show_genre" => null,
"add_show_description" => null,
"add_show_start_date" => "2014-01-05",
"add_show_start_time" => "00:00",
"add_show_end_date_no_repeat" => "2014-01-05",
"add_show_end_time" => "01:00",
"add_show_duration" => "01h 00m",
"add_show_timezone" => "UTC",
"add_show_repeats" => 1,
"add_show_linked" => 0,
"add_show_repeat_type" => 0,
"add_show_monthly_repeat_type" => 2,
"add_show_end_date" => "2014-01-05",
"add_show_no_end" => 1,
"cb_airtime_auth" => 0,
"cb_custom_auth" => 0,
"custom_username" => null,
"custom_password" => null,
"add_show_record" => 0,
"add_show_rebroadcast" => 0,
"add_show_rebroadcast_date_absolute_1" => null,
"add_show_rebroadcast_time_absolute_1" => null,
"add_show_rebroadcast_date_absolute_2" => null,
"add_show_rebroadcast_time_absolute_2" => null,
"add_show_rebroadcast_date_absolute_3" => null,
"add_show_rebroadcast_time_absolute_3" => null,
"add_show_rebroadcast_date_absolute_4" => null,
"add_show_rebroadcast_time_absolute_4" => null,
"add_show_rebroadcast_date_absolute_5" => null,
"add_show_rebroadcast_time_absolute_5" => null,
"add_show_rebroadcast_date_absolute_6" => null,
"add_show_rebroadcast_time_absolute_6" => null,
"add_show_rebroadcast_date_absolute_7" => null,
"add_show_rebroadcast_time_absolute_7" => null,
"add_show_rebroadcast_date_absolute_8" => null,
"add_show_rebroadcast_time_absolute_8" => null,
"add_show_rebroadcast_date_absolute_9" => null,
"add_show_rebroadcast_time_absolute_9" => null,
"add_show_rebroadcast_date_absolute_10" => null,
"add_show_rebroadcast_time_absolute_10" => null,
"add_show_rebroadcast_date_1" => null,
"add_show_rebroadcast_time_1" => null,
"add_show_rebroadcast_date_2" => null,
"add_show_rebroadcast_time_2" => null,
"add_show_rebroadcast_date_3" => null,
"add_show_rebroadcast_time_3" => null,
"add_show_rebroadcast_date_4" => null,
"add_show_rebroadcast_time_4" => null,
"add_show_rebroadcast_date_5" => null,
"add_show_rebroadcast_time_5" => null,
"add_show_rebroadcast_date_6" => null,
"add_show_rebroadcast_time_6" => null,
"add_show_rebroadcast_date_7" => null,
"add_show_rebroadcast_time_7" => null,
"add_show_rebroadcast_date_8" => null,
"add_show_rebroadcast_time_8" => null,
"add_show_rebroadcast_date_9" => null,
"add_show_rebroadcast_time_9" => null,
"add_show_rebroadcast_date_10" => null,
"add_show_rebroadcast_time_10" => null,
"add_show_hosts_autocomplete" => null,
"add_show_background_color" => "364492",
"add_show_color" => "ffffff",
"add_show_hosts" => null,
"add_show_day_check" => array(0,1,2,3,4,5,6)
);
}
}