def test_fetch_monthly_template_usage_for_service_does_not_include_cancelled_status( sample_template): create_ft_notification_status(utc_date=date(2018, 3, 1), service=sample_template.service, template=sample_template, notification_status='cancelled', count=15) create_notification(template=sample_template, created_at=datetime.utcnow(), status='cancelled') results = fetch_monthly_template_usage_for_service( datetime(2018, 1, 1), datetime(2018, 3, 31), sample_template.service_id) assert len(results) == 0
def test_fetch_monthly_template_usage_for_service_does_join_to_notifications_if_today_is_not_in_date_range( sample_service): template_one = create_template(service=sample_service, template_type='sms', template_name='a') template_two = create_template(service=sample_service, template_type='email', template_name='b') create_ft_notification_status(utc_date=date(2018, 2, 1), service=template_two.service, template=template_two, count=15) create_ft_notification_status(utc_date=date(2018, 2, 2), service=template_one.service, template=template_one, count=20) create_ft_notification_status(utc_date=date(2018, 3, 1), service=template_one.service, template=template_one, count=3) create_notification(template=template_one, created_at=datetime.utcnow()) results = fetch_monthly_template_usage_for_service(datetime(2018, 1, 1), datetime(2018, 2, 20), template_one.service_id) assert len(results) == 2 assert results[0].template_id == template_one.id assert results[0].name == template_one.name assert results[ 0].is_precompiled_letter == template_one.is_precompiled_letter assert results[0].template_type == template_one.template_type assert results[0].month == 2 assert results[0].year == 2018 assert results[0].count == 20 assert results[1].template_id == template_two.id assert results[1].name == template_two.name assert results[ 1].is_precompiled_letter == template_two.is_precompiled_letter assert results[1].template_type == template_two.template_type assert results[1].month == 2 assert results[1].year == 2018 assert results[1].count == 15
def get_monthly_template_usage(service_id): try: start_date, end_date = get_financial_year( int(request.args.get('year', 'NaN'))) data = fetch_monthly_template_usage_for_service(start_date=start_date, end_date=end_date, service_id=service_id) stats = list() for i in data: stats.append({ 'template_id': str(i.template_id), 'name': i.name, 'type': i.template_type, 'month': i.month, 'year': i.year, 'count': i.count, 'is_precompiled_letter': i.is_precompiled_letter }) return jsonify(stats=stats), 200 except ValueError: raise InvalidRequest('Year must be a number', status_code=400)
def get_monthly_template_usage(service_id): try: start_date, end_date = get_financial_year( int(request.args.get("year", "NaN"))) data = fetch_monthly_template_usage_for_service(start_date=start_date, end_date=end_date, service_id=service_id) stats = list() for i in data: stats.append({ "template_id": str(i.template_id), "name": i.name, "type": i.template_type, "month": i.month, "year": i.year, "count": i.count, "is_precompiled_letter": i.is_precompiled_letter, }) return jsonify(stats=stats), 200 except ValueError: raise InvalidRequest("Year must be a number", status_code=400)
def test_fetch_monthly_template_usage_for_service(sample_service): template_one = create_template(service=sample_service, template_type='sms', template_name='a') template_two = create_template(service=sample_service, template_type='email', template_name='b') template_three = create_template(service=sample_service, template_type='letter', template_name='c') create_ft_notification_status(utc_date=date(2017, 12, 10), service=sample_service, template=template_two, count=3) create_ft_notification_status(utc_date=date(2017, 12, 10), service=sample_service, template=template_one, count=6) create_ft_notification_status(utc_date=date(2018, 1, 1), service=sample_service, template=template_one, count=4) create_ft_notification_status(utc_date=date(2018, 3, 1), service=sample_service, template=template_three, count=5) create_notification(template=template_three, created_at=datetime.utcnow() - timedelta(days=1)) create_notification(template=template_three, created_at=datetime.utcnow()) results = fetch_monthly_template_usage_for_service(datetime(2017, 4, 1), datetime(2018, 3, 31), sample_service.id) assert len(results) == 4 assert results[0].template_id == template_one.id assert results[0].name == template_one.name assert results[0].is_precompiled_letter is False assert results[0].template_type == template_one.template_type assert results[0].month == 12 assert results[0].year == 2017 assert results[0].count == 6 assert results[1].template_id == template_two.id assert results[1].name == template_two.name assert results[1].is_precompiled_letter is False assert results[1].template_type == template_two.template_type assert results[1].month == 12 assert results[1].year == 2017 assert results[1].count == 3 assert results[2].template_id == template_one.id assert results[2].name == template_one.name assert results[2].is_precompiled_letter is False assert results[2].template_type == template_one.template_type assert results[2].month == 1 assert results[2].year == 2018 assert results[2].count == 4 assert results[3].template_id == template_three.id assert results[3].name == template_three.name assert results[3].is_precompiled_letter is False assert results[3].template_type == template_three.template_type assert results[3].month == 3 assert results[3].year == 2018 assert results[3].count == 6