def test_returns_failed_transfer_count():
    transfer_count = an_integer(7, 10)
    failed_transfer_count = an_integer(2, 4)
    transfers = build_transfers(transfer_count=transfer_count,
                                failed_transfer_count=failed_transfer_count)
    national_metrics = calculate_national_metrics(transfers)
    assert national_metrics.failed_transfer_count == failed_transfer_count
def test_returns_integrated_transfer_count():
    transfer_count = an_integer(7, 10)
    integrated_transfer_count = an_integer(2, 4)
    transfers = build_transfers(
        transfer_count=transfer_count,
        integrated_transfer_count=integrated_transfer_count)
    national_metrics = calculate_national_metrics(transfers)
    assert national_metrics.integrated.transfer_count == integrated_transfer_count
def test_returns_pending_transfer_count_given_only_pending_transfers():
    transfers = [a_pending_transfer(), a_pending_transfer()]

    national_metrics = calculate_national_metrics(transfers)

    expected_pending_transfer_count = 2

    assert national_metrics.pending_transfer_count == expected_pending_transfer_count
def test_returns_pending_transfer_count_default_given_no_transfers():
    transfers = []

    national_metrics = calculate_national_metrics(transfers)

    expected_pending_transfer_count = 0

    assert national_metrics.pending_transfer_count == expected_pending_transfer_count
def calculate_national_metrics_data(
        transfers: List[Transfer],
        time_range: DateTimeRange) -> NationalMetricsPresentation:
    national_metrics = calculate_national_metrics(transfers=transfers)
    return construct_national_metrics(
        national_metrics=national_metrics,
        year=time_range.start.year,
        month=time_range.start.month,
    )
def test_returns_integrated_transfer_count_defaults_given_no_successful_transfers(
):
    transfer_count = an_integer(2, 10)
    transfers = build_transfers(transfer_count=transfer_count)
    national_metrics = calculate_national_metrics(transfers)
    assert national_metrics.integrated.transfer_count == 0
    assert national_metrics.integrated.within_3_days == 0
    assert national_metrics.integrated.within_8_days == 0
    assert national_metrics.integrated.beyond_8_days == 0
def test_returns_pending_transfer_count_given_a_mixture_of_transfers():
    transfers = [
        a_pending_transfer(),
        a_failed_transfer(),
        an_integrated_transfer()
    ]

    national_metrics = calculate_national_metrics(transfers)

    expected_pending_transfer_count = 1

    assert national_metrics.pending_transfer_count == expected_pending_transfer_count
def test_returns_integrated_transfer_count_by_sla_duration(
        sla_duration, expected):
    transfer_count = an_integer(7, 10)
    integrated_transfer_count = 2
    transfers = build_transfers(
        transfer_count=transfer_count,
        integrated_transfer_count=integrated_transfer_count,
        sla_duration=sla_duration,
    )
    national_metrics = calculate_national_metrics(transfers)
    assert national_metrics.integrated.within_3_days == expected[
        "within_3_days"]
    assert national_metrics.integrated.within_8_days == expected[
        "within_8_days"]
    assert national_metrics.integrated.beyond_8_days == expected[
        "beyond_8_days"]
def test_returns_failed_transfer_count_default_given_no_transfers():
    national_metrics = calculate_national_metrics([])
    assert national_metrics.failed_transfer_count == 0
def test_returns_initiated_transfer_count():
    initiated_transfer_count = an_integer(2, 10)
    transfers = build_transfers(transfer_count=initiated_transfer_count)
    national_metrics = calculate_national_metrics(transfers)
    assert national_metrics.initiated_transfer_count == initiated_transfer_count