コード例 #1
0
def test__my_requests__search__task_status_type(client, faker, loggedin_user):
    matching = faker.get_test_task(
        requestor=loggedin_user, current_status_type=TaskStatusType.get_done())
    non_matching = faker.get_test_task(
        requestor=loggedin_user,
        current_status_type=TaskStatusType.get_awaiting_information())

    resp = _get(client,
                _url(task_status_type_id=TaskStatusType.get_done().id),
                loggedin_user,
                has_form=True)

    assert_results(resp, [matching])
コード例 #2
0
def test__my_jobs__search__task_status_type(client, faker, loggedin_user):
    s = faker.service_details(owners=[loggedin_user])

    matching = faker.get_test_owned_task(
        current_status_type=TaskStatusType.get_done(), owner=loggedin_user)
    non_matching = faker.get_test_owned_task(
        current_status_type=TaskStatusType.get_awaiting_information(),
        owner=loggedin_user)

    resp = _get(client,
                _url(task_status_type_id=TaskStatusType.get_done().id),
                loggedin_user,
                has_form=True)

    assert_results(resp, [matching])
コード例 #3
0
def test__my_jobs__update_status(client, faker, n, loggedin_user):
    actual_status = TaskStatusType.get_created()
    task = faker.get_test_owned_task(owner=loggedin_user, current_status_type=actual_status)

    statuses = cycle(TaskStatusType.query.all())
    history = []

    for x in range(n):
        history.append({
            'status': next(statuses),
            'notes': faker.pystr(min_chars=5, max_chars=10),
        })
        task.status_history.append(TaskStatus(
            task=task,
            notes=history[-1]['notes'],
            task_status_type=history[-1]['status']
        ))

        db.session.add(task)
        db.session.commit()

        resp = client.get(_url(task_id=task.id))

        assert resp.status_code == status.HTTP_200_OK
        assert len(resp.soup.find_all("li", "list-group-item")) == len(history)

        for h, li in zip(reversed(history), resp.soup.find_all("li", "list-group-item")):
            assert li.find("h1").find(string=re.compile(h['status'].name)) is not None
            assert li.find("p").find(string=re.compile(h['notes'])) is not None
コード例 #4
0
ファイル: task.py プロジェクト: LCBRU/lbrc_services
def cancel_request():
    cancel_request_form = ConfirmForm()

    update_task_status(cancel_request_form.id.data,
                       TaskStatusType.get_cancelled(), 'Cancelled by user')

    return redirect(request.args.get('prev', ''))
コード例 #5
0
def test__my_jobs__update_status__not_owner(client, faker, loggedin_user):
    user2 = faker.get_test_user()

    task = faker.get_test_owned_task(owner=user2)

    st = TaskStatusType.get_in_progress()
    notes = faker.pystr(min_chars=5, max_chars=10)

    resp = _update_status_post(client, task, st, notes)
    assert resp.status_code == status.HTTP_403_FORBIDDEN
コード例 #6
0
def test__my_jobs__update_status(client, faker, loggedin_user):
    task = faker.get_test_owned_task(owner=loggedin_user)

    st = TaskStatusType.get_in_progress()
    notes = faker.pystr(min_chars=5, max_chars=10)

    resp = _update_status_post(client, task, st, notes)

    assert TaskStatus.query.filter(TaskStatus.task_id == task.id).count() == 1
    ts = TaskStatus.query.filter(TaskStatus.task_id == task.id).one()
    assert ts.task_status_type_id == st.id
    assert ts.task_id == task.id
    assert ts.notes == notes
コード例 #7
0
def test__my_jobs__search__task_status__pages(client, faker, jobs,
                                              loggedin_user):
    matching = [
        faker.get_test_owned_task(
            current_status_type=TaskStatusType.get_done(),
            owner=loggedin_user,
            requestor=loggedin_user) for _ in range(jobs)
    ]
    unmatching = [
        faker.get_test_owned_task(
            current_status_type=TaskStatusType.get_awaiting_information(),
            owner=loggedin_user,
            requestor=loggedin_user) for _ in range(100)
    ]

    assert__page_navigation(
        client,
        'ui.my_jobs', {
            '_external': False,
            'task_status_type_id': TaskStatusType.get_done().id
        },
        jobs,
        form=MyJobsSearchForm())
コード例 #8
0
def assert__task(expected_task, user, data=None, files=None):
    if data is None:
        data = []
    if files is None:
        files = []

    a = _get_actual_task()

    assert a.name == expected_task.name
    assert a.organisation_id == expected_task.organisation_id
    assert a.organisation_description == expected_task.organisation_description
    assert a.service_id == expected_task.service_id
    assert a.requestor == user
    assert a.current_status_type == TaskStatusType.get_created()
    assert len(a.status_history) == 1
    s = a.status_history[0]
    assert s.task == a
    assert len(s.notes) > 0
    assert s.task_status_type == TaskStatusType.get_created()

    assert len(a.files) == len(files)
    for da, de in zip(a.files, files):
        assert da.task == a
        assert da.field == de['field']
        assert da.filename == de['file'].filename
        assert len(da.local_filepath) > 0

        assert Path(da.local_filepath).is_file()

        with open(da.local_filepath, 'r') as f:
            assert f.read() == de['file'].content

    assert len(a.data) == len(data)
    for da, de in zip(a.data, data):
        assert da.task == a
        assert da.field == de['field']
        assert da.value == de['value']
コード例 #9
0
ファイル: faker.py プロジェクト: LCBRU/lbrc_services
    def task_details(
        self,
        name=None,
        service=None,
        requestor=None,
        current_status_type=None,
        organisation=None,
        organisation_description=None,
    ):
        result = Task()

        if current_status_type is None:
            result.current_status_type_id = TaskStatusType.get_created().id
        else:
            result.current_status_type_id = current_status_type.id

        if organisation is None:
            result.organisation_id = Organisation.get_organisation(
                Organisation.CARDIOVASCULAR).id
        else:
            result.organisation_id = organisation.id

        if name is None:
            result.name = self.generator.pystr(min_chars=5, max_chars=10)
        else:
            result.name = name

        if service is None:
            result.service = self.service_details()
        elif service.id is None:
            result.service = service
        else:
            result.service_id = service.id

        if requestor is None:
            result.requestor = self.user_details()
        elif requestor.id is None:
            result.requestor = requestor
        else:
            result.requestor_id = requestor.id

        if organisation_description is None:
            result.organisation_description = ''

        return result
コード例 #10
0
ファイル: task.py プロジェクト: LCBRU/lbrc_services
def create_task(service_id):
    service = Service.query.get_or_404(service_id)

    form = get_create_task_form(service)

    if form.validate_on_submit():
        task = Task(
            service=service,
            current_status_type=TaskStatusType.get_created(),
        )

        save_task(task, form, 'created')

        return redirect(url_for("ui.index"))

    return render_template(
        "ui/task/create.html",
        form=form,
        service=service,
        other_organisation=Organisation.get_other(),
        allow_requestor_selection=current_user.service_owner,
        allow_assignee_selection=current_user.service_owner,
    )