def test_edit_task_time_valid(): """ Edit the time of a single task in a valid way, i.e. it doesn't interfere with other tasks. """ # Set up case. Note that we have to manually set the base date of the session in # order to access the task, since it has a hard-coded date. session = Session("example", load=True) session.base_date = session.current_schedules()[0].tasks[0].start_time.date() session.base_date -= timedelta(days=session.base_date.weekday()) planned = True day = 4 task_index = 0 new_values = {"start_time": datetime(2020, 5, 1, hour=13)} # Store pre-insert session values. pre_history_pos = session.history_pos pre_edit_history = list(session.edit_history) original_task = session.get_task(planned=planned, day=day, task_index=task_index) new_task = deepcopy(original_task) new_task.start_time = new_values["start_time"] # Edit task. session.edit_task( planned=planned, day=day, task_index=task_index, new_values=new_values, ) # Test session values. assert session.history_pos == pre_history_pos + 1 assert len(session.edit_history) == len(pre_edit_history) + 1 assert session.edit_history[:-1] == pre_edit_history assert pre_edit_history[-1][0].tasks[0] == original_task assert session.edit_history[-1][0].tasks[0] == new_task assert session.edit_history[-1][1] == pre_edit_history[-1][1]
def test_delete_task_full(): """ Test deleting task from a full schedule. """ # Construct session. Note that we have to manually set the base date of the session in # order to access the task, since it has a hard-coded date. session = Session("example", load=True) session.base_date = session.current_schedules( )[0].tasks[0].start_time.date() session.base_date -= timedelta(days=session.base_date.weekday()) planned = True day = 5 task_index = 0 # Store pre-delete session values. pre_history_pos = session.history_pos pre_edit_history = list(session.edit_history) original_task = session.get_task(planned=planned, day=day, task_index=task_index) # Delete task. session.delete_task(planned=planned, day=day, task_index=task_index) # Test session values. assert session.history_pos == pre_history_pos + 1 assert len(session.edit_history) == len(pre_edit_history) + 1 assert session.edit_history[:-1] == pre_edit_history assert pre_edit_history[-1][0].tasks[2] == original_task assert session.edit_history[-1][0].tasks == list_exclude( pre_edit_history[-1][0].tasks, 2) assert session.edit_history[-1][1] == pre_edit_history[-1][1]
def test_move_tasks_full(): """ Test moving multiple tasks in a full schedule. """ # Construct session. Note that we have to manually set the base date of the session in # order to access the task, since it has a hard-coded date. session = Session("example", load=True) session.base_date = session.current_schedules( )[0].tasks[0].start_time.date() session.base_date -= timedelta(days=session.base_date.weekday()) planned = True day = 4 start_task_index = 0 end_task_index = 2 # Store pre-move session values. pre_history_pos = session.history_pos pre_edit_history = list(session.edit_history) original_tasks = [ session.get_task(planned=planned, day=day, task_index=i) for i in range(start_task_index, end_task_index) ] # Move tasks. session.move_tasks( planned=planned, day=day, start_task_index=start_task_index, end_task_index=end_task_index, time_delta=timedelta(hours=2), ) # Test session values. edited_tasks = [deepcopy(task) for task in original_tasks] edited_tasks[0].start_time = datetime(2020, 5, 1, hour=14) edited_tasks[0].end_time = datetime(2020, 5, 1, hour=15, minute=30) edited_tasks[1].start_time = datetime(2020, 5, 1, hour=15, minute=30) edited_tasks[1].end_time = datetime(2020, 5, 1, hour=16, minute=30) assert session.history_pos == pre_history_pos + 1 assert len(session.edit_history) == len(pre_edit_history) + 1 assert session.edit_history[:-1] == pre_edit_history assert pre_edit_history[-1][0].tasks[0:2] == original_tasks assert session.edit_history[-1][0].tasks[0:2] == edited_tasks assert session.edit_history[-1][0].tasks[2:] == pre_edit_history[-1][ 0].tasks[2:] assert session.edit_history[-1][1] == pre_edit_history[-1][1]