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])
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])
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
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', ''))
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
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
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())
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']
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
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, )