Example #1
0
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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
def convert_choice_name(name):
    name = to_const(force_text(name))
    try:
        assert_valid_name(name)
    except AssertionError:
        name = "A_%s" % name
    return name
Example #6
0
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
Example #8
0
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
Example #9
0
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)
Example #10
0
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)
Example #11
0
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
Example #12
0
def convert_choice_name(name):
    return to_const(force_text(name))