Example #1
0
 def setUp(self):
     self.date1 = datetime(2015, 1, 1, 0, 0, 0)
     self.date2 = datetime(2015, 1, 1, 12, 0, 0)
     self.date3 = datetime(2015, 1, 2, 0, 0, 0)
     self.date4 = datetime(2015, 1, 2, 12, 0, 0)
     self.date5 = datetime(2015, 1, 3, 0, 0, 0)
     self.date6 = datetime(2015, 1, 3, 12, 0, 0)
     self.list = DateRangeList()
Example #2
0
class DateRangeListTest(unittest.TestCase):
    
    def setUp(self):
        self.date1 = datetime(2015, 1, 1, 0, 0, 0)
        self.date2 = datetime(2015, 1, 1, 12, 0, 0)
        self.date3 = datetime(2015, 1, 2, 0, 0, 0)
        self.date4 = datetime(2015, 1, 2, 12, 0, 0)
        self.date5 = datetime(2015, 1, 3, 0, 0, 0)
        self.date6 = datetime(2015, 1, 3, 12, 0, 0)
        self.list = DateRangeList()
        
    def tearDown(self):
        pass
    
    def test_it_adds_date_ranges(self):
        range1 = DateRange(self.date1, self.date2)
        self.list.add(self.date1, self.date2)
        self.assertIn(range1, self.list)
        
    def test_it_sums_the_workhours(self):
        range1 = DateRange(self.date1, self.date2)
        range2 = DateRange(self.date3, self.date4)
        range3 = DateRange(self.date5, self.date6)
        self.list.add_range(range1).add_range(range2).add_range(range3)
        self.assertEqual(self.list.total_hours, 36.0)
    
    def test_it_keeps_the_ranges_sorted(self):
        range1 = DateRange(self.date5, self.date6)
        range2 = DateRange(self.date3, self.date4)
        range3 = DateRange(self.date1, self.date2)
        self.list.add_range(range1).add_range(range2).add_range(range3)
        expected = [ range3, range2, range1 ]
        self.assertEqual(self.list.ranges, expected)
    
    def test_it_does_not_add_intersecting_ranges(self):
        range1 = DateRange(self.date1, self.date2)
        range2 = DateRange(self.date3, self.date6)        
        range3 = DateRange(self.date5, self.date6)
        self.list.add_range(range2).add_range(range1)
        with self.assertRaises(ValueError):
            self.list.add_range(range3)