def test_timeLog_creation_for_a_child_task(self): """testing TimeLog creation for a child task which has a couple of parent tasks """ dt = datetime.datetime td = datetime.timedelta parent_task1 = Task( name="Parent Task 1", project=self.test_project, status_list=self.test_task_status_list, ) parent_task2 = Task( name="Parent Task 2", project=self.test_project, status_list=self.test_task_status_list, ) child_task1 = Task( name="Child Task 1", project=self.test_project, status_list=self.test_task_status_list, resources=[self.test_resource1] ) child_task2 = Task( name="Child Task 1", project=self.test_project, status_list=self.test_task_status_list, resources=[self.test_resource2] ) # Task hierarchy # +-> p1 # | | # | +-> p2 # | | | # | | +-> c1 # | | # | +-> c2 # | # +-> self.test_task1 parent_task2.parent = parent_task1 child_task2.parent = parent_task1 child_task1.parent = parent_task2 from stalker.db.session import DBSession self.assertEqual(parent_task1.total_logged_seconds, 0) self.assertEqual(parent_task2.total_logged_seconds, 0) self.assertEqual(child_task1.total_logged_seconds, 0) self.assertEqual(child_task2.total_logged_seconds, 0) # now create a time log for child_task2 tlog1 = TimeLog( task=child_task2, resource=child_task2.resources[0], start=dt(2013, 7, 31, 10, 0), end=dt(2013, 7, 31, 19, 0) ) # before commit self.assertEqual(parent_task1.total_logged_seconds, 9 * 3600) self.assertEqual(parent_task2.total_logged_seconds, 0) self.assertEqual(child_task1.total_logged_seconds, 0) self.assertEqual(child_task2.total_logged_seconds, 9 * 3600) # commit changes DBSession.add(tlog1) DBSession.commit() # after commit it should not change self.assertEqual(parent_task1.total_logged_seconds, 9 * 3600) self.assertEqual(parent_task2.total_logged_seconds, 0) self.assertEqual(child_task1.total_logged_seconds, 0) self.assertEqual(child_task2.total_logged_seconds, 9 * 3600) # add a new tlog to child_task2 and commit it # now create a time log for child_task2 tlog2 = TimeLog( task=child_task2, resource=child_task2.resources[0], start=dt(2013, 7, 31, 19, 0), end=dt(2013, 7, 31, 22, 0) ) self.assertEqual(parent_task1.total_logged_seconds, 12 * 3600) self.assertEqual(parent_task2.total_logged_seconds, 0) self.assertEqual(child_task1.total_logged_seconds, 0) self.assertEqual(child_task2.total_logged_seconds, 12 * 3600) # commit changes DBSession.add(tlog2) DBSession.commit() self.assertEqual(parent_task1.total_logged_seconds, 12 * 3600) self.assertEqual(parent_task2.total_logged_seconds, 0) self.assertEqual(child_task1.total_logged_seconds, 0) self.assertEqual(child_task2.total_logged_seconds, 12 * 3600) # add a new time log to child_task1 and commit it tlog3 = TimeLog( task=child_task1, resource=child_task1.resources[0], start=dt(2013, 7, 31, 10, 0), end=dt(2013, 7, 31, 19, 0) ) self.assertEqual(parent_task1.total_logged_seconds, 21 * 3600) self.assertEqual(parent_task2.total_logged_seconds, 9 * 3600) self.assertEqual(child_task1.total_logged_seconds, 9 * 3600) self.assertEqual(child_task2.total_logged_seconds, 12 * 3600) # commit changes DBSession.add(tlog3) DBSession.commit() self.assertEqual(parent_task1.total_logged_seconds, 21 * 3600) self.assertEqual(parent_task2.total_logged_seconds, 9 * 3600) self.assertEqual(child_task1.total_logged_seconds, 9 * 3600) self.assertEqual(child_task2.total_logged_seconds, 12 * 3600)