def test_derive_transfer_extracts_requesting_practice_ods():
    conversation = build_parsed_conversation(request_started=build_message(from_party_ods="A12345"))

    actual = derive_transfer(conversation)

    expected_ods = "A12345"
    assert actual.requesting_practice_ods == expected_ods
def test_derive_transfer_doesnt_extract_error_code_given_pending_request_completed_ack():
    conversation = build_parsed_conversation(request_completed_ack=None)

    actual = derive_transfer(conversation)

    expected_error = None

    assert actual.error_code == expected_error
def test_derive_transfer_extracts_error_code():
    conversation = build_parsed_conversation(request_completed_ack=build_message(error_code=99))

    actual = derive_transfer(conversation)

    expected_error = 99

    assert actual.error_code == expected_error
def test_derive_transfer_extracts_conversation_id():
    conversation = build_parsed_conversation(id="1234")

    actual = derive_transfer(conversation)

    expected_conversation_id = "1234"

    assert actual.conversation_id == expected_conversation_id
def test_derive_transfer_produces_no_sla_given_pending_ehr_completed():
    conversation = build_parsed_conversation(
        request_started=build_message(), request_completed=None, request_completed_ack=None,
    )
    actual = derive_transfer(conversation)

    expected_sla_duration = None

    assert actual.sla_duration == expected_sla_duration
def test_derive_transfer_flags_pending_request_completed_as_pending():
    conversation = build_parsed_conversation(
        request_started=build_message(), request_completed=None, request_completed_ack=None
    )

    actual = derive_transfer(conversation)

    expected_pending = True

    assert actual.pending == expected_pending
def test_derive_transfer_flags_completed_conversation_as_not_pending():
    conversation = build_parsed_conversation(
        request_started=build_message(),
        request_completed=build_message(),
        request_completed_ack=build_message(),
    )

    actual = derive_transfer(conversation)

    expected_pending = False

    assert actual.pending == expected_pending
def test_derive_transfer_produces_sla_of_successful_conversation():
    conversation = build_parsed_conversation(
        request_completed=build_message(
            time=datetime(year=2020, month=6, day=1, hour=12, minute=42, second=0),
        ),
        request_completed_ack=build_message(
            time=datetime(year=2020, month=6, day=1, hour=13, minute=52, second=0), error_code=None
        ),
    )

    actual = derive_transfer(conversation)

    expected_sla_duration = timedelta(hours=1, minutes=10)

    assert actual.sla_duration == expected_sla_duration