Ejemplo n.º 1
0
def test_fetch_notification_status_for_service_for_day(notify_db_session):
    service_1 = create_service(service_name='service_1')
    service_2 = create_service(service_name='service_2')

    create_template(service=service_1)
    create_template(service=service_2)

    # too early
    create_notification(service_1.templates[0],
                        created_at=datetime(2018, 5, 31, 22, 59, 0))

    # included
    create_notification(service_1.templates[0],
                        created_at=datetime(2018, 5, 31, 23, 0, 0))
    create_notification(service_1.templates[0],
                        created_at=datetime(2018, 6, 1, 22, 59, 0))
    create_notification(service_1.templates[0],
                        created_at=datetime(2018, 6, 1, 12, 0, 0),
                        key_type=KEY_TYPE_TEAM)
    create_notification(service_1.templates[0],
                        created_at=datetime(2018, 6, 1, 12, 0, 0),
                        status='delivered')

    # test key
    create_notification(service_1.templates[0],
                        created_at=datetime(2018, 6, 1, 12, 0, 0),
                        key_type=KEY_TYPE_TEST)

    # wrong service
    create_notification(service_2.templates[0],
                        created_at=datetime(2018, 6, 1, 12, 0, 0))

    # tomorrow (somehow)
    create_notification(service_1.templates[0],
                        created_at=datetime(2018, 6, 1, 23, 0, 0))

    results = sorted(fetch_notification_status_for_service_for_day(
        datetime(2018, 6, 1), service_1.id),
                     key=lambda x: x.notification_status)
    assert len(results) == 2

    assert results[0].month == datetime(2018, 6, 1, 0, 0)
    assert results[0].notification_type == 'sms'
    assert results[0].notification_status == 'created'
    assert results[0].count == 3

    assert results[1].month == datetime(2018, 6, 1, 0, 0)
    assert results[1].notification_type == 'sms'
    assert results[1].notification_status == 'delivered'
    assert results[1].count == 1
Ejemplo n.º 2
0
def get_monthly_notification_stats(service_id):
    # check service_id validity
    dao_fetch_service_by_id(service_id)

    try:
        year = int(request.args.get('year', 'NaN'))
    except ValueError:
        raise InvalidRequest('Year must be a number', status_code=400)

    start_date, end_date = get_financial_year(year)

    data = statistics.create_empty_monthly_notification_status_stats_dict(year)

    stats = fetch_notification_status_for_service_by_month(start_date, end_date, service_id)
    statistics.add_monthly_notification_status_stats(data, stats)

    now = datetime.utcnow()
    if end_date > now:
        todays_deltas = fetch_notification_status_for_service_for_day(convert_utc_to_bst(now), service_id=service_id)
        statistics.add_monthly_notification_status_stats(data, todays_deltas)

    return jsonify(data=data)