def test_fetch_notification_status_totals_for_all_services_works_in_bst(
        notify_db_session
):
    service_1 = create_service(service_name='service_1')
    sms_template = create_template(service=service_1, template_type=SMS_TYPE)
    email_template = create_template(service=service_1, template_type=EMAIL_TYPE)

    create_notification(sms_template, created_at=datetime(2018, 4, 20, 12, 0, 0), status='delivered')
    create_notification(sms_template, created_at=datetime(2018, 4, 21, 11, 0, 0), status='created')
    create_notification(sms_template, created_at=datetime(2018, 4, 21, 12, 0, 0), status='delivered')
    create_notification(email_template, created_at=datetime(2018, 4, 21, 13, 0, 0), status='delivered')
    create_notification(email_template, created_at=datetime(2018, 4, 21, 14, 0, 0), status='delivered')

    results = sorted(
        fetch_notification_status_totals_for_all_services(
            start_date=date(2018, 4, 21), end_date=date(2018, 4, 21)),
        key=lambda x: (x.notification_type, x.status)
    )

    assert len(results) == 3

    assert results[0].notification_type == 'email'
    assert results[0].status == 'delivered'
    assert results[0].count == 2

    assert results[1].notification_type == 'sms'
    assert results[1].status == 'created'
    assert results[1].count == 1

    assert results[2].notification_type == 'sms'
    assert results[2].status == 'delivered'
    assert results[2].count == 1
示例#2
0
def test_fetch_notification_status_totals_for_all_services(
        notify_db_session, start_date, end_date, expected_email,
        expected_letters, expected_sms, expected_created_sms):
    set_up_data()

    results = sorted(fetch_notification_status_totals_for_all_services(
        start_date=date(2018, 10, start_date),
        end_date=date(2018, 10, end_date)),
                     key=lambda x: (x.notification_type, x.status))

    assert len(results) == 4

    assert results[0].notification_type == 'email'
    assert results[0].status == 'delivered'
    assert results[0].count == expected_email

    assert results[1].notification_type == 'letter'
    assert results[1].status == 'delivered'
    assert results[1].count == expected_letters

    assert results[2].notification_type == 'sms'
    assert results[2].status == 'created'
    assert results[2].count == expected_created_sms

    assert results[3].notification_type == 'sms'
    assert results[3].status == 'delivered'
    assert results[3].count == expected_sms
示例#3
0
def get_platform_stats():
    if request.args:
        validate(request.args, platform_stats_request)

    # If start and end date are not set, we are expecting today's stats.
    today = str(datetime.utcnow().date())

    start_date = datetime.strptime(request.args.get('start_date', today), '%Y-%m-%d').date()
    end_date = datetime.strptime(request.args.get('end_date', today), '%Y-%m-%d').date()
    data = fetch_notification_status_totals_for_all_services(start_date=start_date, end_date=end_date)
    stats = format_admin_stats(data)

    return jsonify(stats)