예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
파일: api.py 프로젝트: alisezer/line-check
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)
예제 #6
0
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
예제 #7
0
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
예제 #8
0
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
예제 #9
0
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