def test_complete_workflow_form_work_item(db, snapshot, work_item, answer, form_question, success, schema_executor): query = """ mutation CompleteWorkItem($input: CompleteWorkItemInput!) { completeWorkItem(input: $input) { workItem { status case { status } } clientMutationId } } """ inp = {"input": {"id": work_item.pk}} result = schema_executor(query, variables=inp) assert not bool(result.errors) == success if success: assert result.data["completeWorkItem"]["workItem"][ "status"] == to_const(models.WorkItem.STATUS_COMPLETED) assert result.data["completeWorkItem"]["workItem"]["case"][ "status"] == to_const(models.Case.STATUS_COMPLETED)
def test_skip_task_form_work_item(db, work_item, answer, form_question, schema_executor): query = """ mutation SkipWorkItem($input: SkipWorkItemInput!) { skipWorkItem(input: $input) { workItem { status case { status } } clientMutationId } } """ inp = {"input": {"id": work_item.pk}} result = schema_executor(query, variable_values=inp) # when skipping, both valid and invalid forms don't matter (contrary # to completion, where it DOES matter) assert not bool(result.errors) assert result.data["skipWorkItem"]["workItem"]["status"] == to_const( models.WorkItem.STATUS_SKIPPED) assert result.data["skipWorkItem"]["workItem"]["case"][ "status"] == to_const(models.Case.STATUS_COMPLETED)
def test_query_all_work_items_filter_status(db, work_item_factory, schema_executor): work_item_factory(status=models.WorkItem.STATUS_READY) work_item_factory(status=models.WorkItem.STATUS_COMPLETED) query = """ query WorkItems($status: WorkItemStatusArgument!) { allWorkItems(status: $status) { totalCount edges { node { status } } } } """ result = schema_executor( query, variable_values={"status": to_const(models.WorkItem.STATUS_READY)}) assert not result.errors assert len(result.data["allWorkItems"]["edges"]) == 1 assert result.data["allWorkItems"]["edges"][0]["node"][ "status"] == to_const(models.WorkItem.STATUS_READY)
def test_skip_multiple_instance_task_form_work_item( db, task_factory, work_item_factory, answer, form_question, work_item_status, success, schema_executor, ): task = task_factory(is_multiple_instance=True) work_item_1 = work_item_factory(task=task, child_case=None, status=work_item_status) work_item_2 = work_item_factory(task=task, child_case=None, case=work_item_1.case) query = """ mutation SkipWorkItem($input: SkipWorkItemInput!) { skipWorkItem(input: $input) { workItem { status case { status } } clientMutationId } } """ inp = {"input": {"id": work_item_1.pk}} result = schema_executor(query, variable_values=inp) assert bool(result.errors) != success if not success: assert "Only READY work items can be skipped" in str(result.errors[0]) else: assert result.data["skipWorkItem"]["workItem"]["status"] == to_const( models.WorkItem.STATUS_SKIPPED) assert result.data["skipWorkItem"]["workItem"]["case"][ "status"] == to_const(models.Case.STATUS_RUNNING) inp = {"input": {"id": work_item_2.pk}} result = schema_executor(query, variable_values=inp) assert not bool(result.errors) assert result.data["skipWorkItem"]["workItem"]["status"] == to_const( models.WorkItem.STATUS_SKIPPED) assert result.data["skipWorkItem"]["workItem"]["case"][ "status"] == to_const(models.Case.STATUS_COMPLETED)
def convert_choice_name(name): name = to_const(force_text(name)) try: assert_valid_name(name) except AssertionError: name = "A_%s" % name return name
def convert_choices(choices): for value, name in choices: if isinstance(name, (tuple, list)): for choice in convert_choices(name): yield choice else: yield to_const(str(name)), value
def convert_choice_name(name): name = to_const(force_text(name)) try: assert_valid_name(name) except AssertionError: name = "A_%s" % name return name
def convert_choices(choices): for value, name in choices: if isinstance(name, (tuple, list)): for choice in convert_choices(name): yield choice else: yield to_const(force_text(name)), value
def test_complete_workflow_form_work_item( db, work_item, answer, question_factory, answer_factory, answer_document_factory, form_question, success, schema_executor, ): table_question = question_factory(type=Question.TYPE_TABLE) table_answer = answer_factory(question=table_question, document=answer.document, value=None) answer_document = answer_document_factory(answer=table_answer) answer_document.document.answers.add(answer_factory()) query = """ mutation CompleteWorkItem($input: CompleteWorkItemInput!) { completeWorkItem(input: $input) { workItem { status case { status } } clientMutationId } } """ inp = {"input": {"id": work_item.pk}} result = schema_executor(query, variable_values=inp) assert not bool(result.errors) == success if success: assert result.data["completeWorkItem"]["workItem"][ "status"] == to_const(models.WorkItem.STATUS_COMPLETED) assert result.data["completeWorkItem"]["workItem"]["case"][ "status"] == to_const(models.Case.STATUS_COMPLETED)
def test_complete_multiple_instance_task_form_work_item( db, task_factory, work_item_factory, answer, form_question, schema_executor): task = task_factory(is_multiple_instance=True) work_item_1 = work_item_factory(task=task, child_case=None) work_item_2 = work_item_factory(task=task, child_case=None, case=work_item_1.case) query = """ mutation CompleteWorkItem($input: CompleteWorkItemInput!) { completeWorkItem(input: $input) { workItem { status case { status } } clientMutationId } } """ inp = {"input": {"id": work_item_1.pk}} result = schema_executor(query, variable_values=inp) assert not bool(result.errors) assert result.data["completeWorkItem"]["workItem"]["status"] == to_const( models.WorkItem.STATUS_COMPLETED) assert result.data["completeWorkItem"]["workItem"]["case"][ "status"] == to_const(models.Case.STATUS_RUNNING) inp = {"input": {"id": work_item_2.pk}} result = schema_executor(query, variable_values=inp) assert not bool(result.errors) assert result.data["completeWorkItem"]["workItem"]["status"] == to_const( models.WorkItem.STATUS_COMPLETED) assert result.data["completeWorkItem"]["workItem"]["case"][ "status"] == to_const(models.Case.STATUS_COMPLETED)
def extract_serializer_input_fields(serializer_class, instance): serializer = serializer_class(instance) result = {} for key, value in serializer.data.items(): field = serializer.fields[key] if isinstance(field, fields.JSONField) and key == "meta": value = json.dumps(value) elif isinstance(field, fields.ChoiceField): value = to_const(value) result[to_camel_case(key)] = value result["clientMutationId"] = "testid" return result
def convert_choice_name(name): return to_const(force_text(name))