def test_run_schduler(test_client, test_db): # Setting this to last year to avoid freezing time ready_schedule_time = "2020-05-03T13:20:00" ready_lines = "central" # In 10 years this test will break not_ready_schedule_time = "2032-05-03T13:20:00" not_ready_lines = "victoria" test_task_ready = Task(lines=ready_lines, schedule_time=ready_schedule_time, status=SCHEDULED_TASK_STATUS) test_task_not_ready = Task(lines=not_ready_lines, schedule_time=not_ready_schedule_time, status=SCHEDULED_TASK_STATUS) test_db.session.add(test_task_ready) test_db.session.add(test_task_not_ready) test_db.session.commit() fake_output = {"result": "big problems"} def mock_line_request(*args, **kwargs): return fake_output schedule.retrieve_line_data = MagicMock(side_effect=mock_line_request) run_scheduler() success = Task.query.filter(Task.status == SUCCEEDED_TASK_STATUS).all() assert len(success) == 1 assert success[0].lines == ready_lines assert success[0].result == fake_output
def test_task_to_half_json(): lines = "victoria,bakerloo" status = "scheduled" schedule_time = "2021-06-05T17:00:00" test_task = Task(lines=lines, status=status, schedule_time=schedule_time) test_json = test_task.to_full_json() assert test_json["lines"] == lines assert test_json["status"] == status assert test_json["schedule_time"] == schedule_time assert test_json["result"] is None
def test_get_all_tasks_multiple_tasks(test_client, test_db): lines = "victoria,bakerloo" status = "scheduled" test_task = Task(lines=lines, status=status) test_task_2 = Task(lines=lines, status=status) test_db.session.add(test_task) test_db.session.add(test_task_2) test_db.session.commit() response = test_client.get("/v1/tasks/") assert response.status_code == 200 assert len(response.json["tasks"]) == 2
def test_create_task(): lines = "victoria,bakerloo" status = "scheduled" schedule_time = "2021-06-05T17:00:00" test_task = Task(lines=lines, status=status, schedule_time=schedule_time) assert test_task.lines == lines assert test_task.status == status assert test_task.schedule_time == schedule_time
def create_new_task(): logger.info("Creating new task") lines = request.form.get("lines") line_validity = check_line_name_validity(lines) if line_validity: schedule_time = request.form.get("schedule_time", datetime.now()) task = Task(lines=lines, schedule_time=schedule_time, status=SCHEDULED_TASK_STATUS) db.session.add(task) db.session.commit() output = { "success": "Task has been created", "task": task.to_full_json() } else: output = {"failure": "Incorrect line name"} return jsonify(output)
def test_update_task(test_client, test_db): lines = "victoria,bakerloo" status = "scheduled" test_task = Task(lines=lines, status=status) test_db.session.add(test_task) test_db.session.commit() new_line = "central" response = test_client.put("/v1/tasks/1", data={"lines": new_line}) assert response.status_code == 200 assert response.json["task"]["lines"] == new_line
def test_update_task_with_results(test_client, test_db): line = "central" fake_output = {"result": "big problems"} test_task = Task(lines=line, status=SCHEDULED_TASK_STATUS) def mock_line_request(*args, **kwargs): return fake_output schedule.retrieve_line_data = MagicMock(side_effect=mock_line_request) test_task = update_task_with_results(test_task) assert test_task.result == fake_output
def test_get_one_task(test_client, test_db): lines = "victoria,bakerloo" status = "scheduled" test_task = Task(lines=lines, status=status) test_db.session.add(test_task) test_db.session.commit() response = test_client.get("/v1/tasks/1") assert response.status_code == 200 assert response.json["id"] == 1 assert response.json["lines"] == lines assert response.json["status"] == status
def test_check_schedule_for_tasks(test_client, test_db): # Setting this to last year to avoid freezing time ready_schedule_time = "2020-05-03T13:20:00" ready_lines = "central" # In 10 years this test will break not_ready_schedule_time = "2032-05-03T13:20:00" not_ready_lines = "victoria" test_task_ready = Task(lines=ready_lines, schedule_time=ready_schedule_time, status=SCHEDULED_TASK_STATUS) test_task_not_ready = Task(lines=not_ready_lines, schedule_time=not_ready_schedule_time, status=SCHEDULED_TASK_STATUS) test_db.session.add(test_task_ready) test_db.session.add(test_task_not_ready) test_db.session.commit() ready_tasks = check_schedule_for_tasks() assert len(ready_tasks) == 1 assert ready_tasks[0].lines == ready_lines