Example #1
0
def get_providers():
    data = dao_get_provider_stats()

    provider_details = [{
        "id":
        row.id,
        "display_name":
        row.display_name,
        "identifier":
        row.identifier,
        "priority":
        row.priority,
        "notification_type":
        row.notification_type,
        "active":
        row.active,
        "updated_at":
        row.updated_at,
        "supports_international":
        row.supports_international,
        "created_by_name":
        row.created_by_name,
        "current_month_billable_sms":
        row.current_month_billable_sms,
    } for row in data]

    return jsonify(provider_details=provider_details)
Example #2
0
def test_dao_get_provider_stats(notify_db_session):
    service_1 = create_service(service_name="1")
    service_2 = create_service(service_name="2")
    sms_template_1 = create_template(service_1, "sms")
    sms_template_2 = create_template(service_2, "sms")

    create_ft_billing("2017-06-05", "sms", sms_template_2, service_1, provider="mmg", billable_unit=4)
    create_ft_billing("2018-05-31", "sms", sms_template_1, service_1, provider="sns", billable_unit=1)
    create_ft_billing(
        "2018-06-01",
        "sms",
        sms_template_1,
        service_1,
        provider="sns",
        rate_multiplier=2,
        billable_unit=1,
    )
    create_ft_billing("2018-06-03", "sms", sms_template_2, service_1, provider="mmg", billable_unit=4)
    create_ft_billing("2018-06-15", "sms", sms_template_1, service_2, provider="mmg", billable_unit=1)
    create_ft_billing("2018-06-28", "sms", sms_template_2, service_2, provider="sns", billable_unit=2)

    provider = get_provider_details_by_identifier("pinpoint")
    provider.priority = 50
    dao_update_provider_details(provider)

    result = dao_get_provider_stats()

    assert len(result) == 7

    assert result[0].identifier == "ses"
    assert result[0].display_name == "AWS SES"
    assert result[0].created_by_name is None
    assert result[0].current_month_billable_sms == 0

    assert result[1].identifier == "sns"
    assert result[1].display_name == "AWS SNS"
    assert result[1].supports_international is False
    assert result[1].active is True
    assert result[1].current_month_billable_sms == 4

    assert result[2].identifier == "mmg"
    assert result[2].notification_type == "sms"
    assert result[2].supports_international is True
    assert result[2].active is False
    assert result[2].current_month_billable_sms == 5

    assert result[3].identifier == "firetext"
    assert result[3].active is False
    assert result[3].current_month_billable_sms == 0

    assert result[4].identifier == "loadtesting"
    assert result[4].active is False
    assert result[4].current_month_billable_sms == 0
    assert result[4].supports_international is False

    assert result[5].identifier == "pinpoint"
    assert result[5].notification_type == "sms"
    assert result[5].supports_international is False
    assert result[5].active is False
    assert result[5].current_month_billable_sms == 0
Example #3
0
def get_providers():
    data = dao_get_provider_stats()

    provider_details = [{
        'id':
        row.id,
        'display_name':
        row.display_name,
        'identifier':
        row.identifier,
        'priority':
        row.priority,
        'notification_type':
        row.notification_type,
        'active':
        row.active,
        'updated_at':
        row.updated_at,
        'supports_international':
        row.supports_international,
        'created_by_name':
        row.created_by_name,
        'current_month_billable_sms':
        row.current_month_billable_sms
    } for row in data]

    return jsonify(provider_details=provider_details)
def test_dao_get_provider_stats(notify_db_session):
    service_1 = create_service(service_name='1')
    service_2 = create_service(service_name='2')
    sms_template_1 = create_template(service_1, 'sms')
    sms_template_2 = create_template(service_2, 'sms')

    create_ft_billing('2017-06-05',
                      sms_template_2,
                      provider='firetext',
                      billable_unit=4)
    create_ft_billing('2018-05-31',
                      sms_template_1,
                      provider='mmg',
                      billable_unit=1)
    create_ft_billing('2018-06-01',
                      sms_template_1,
                      provider='mmg',
                      rate_multiplier=2,
                      billable_unit=1)
    create_ft_billing('2018-06-03',
                      sms_template_2,
                      provider='firetext',
                      billable_unit=4)
    create_ft_billing('2018-06-15',
                      sms_template_1,
                      provider='firetext',
                      billable_unit=1)
    create_ft_billing('2018-06-28',
                      sms_template_2,
                      provider='mmg',
                      billable_unit=2)

    result = dao_get_provider_stats()

    assert len(result) == 4

    assert result[0].identifier == 'ses'
    assert result[0].display_name == 'AWS SES'
    assert result[0].created_by_name is None
    assert result[0].current_month_billable_sms == 0

    assert result[1].identifier == 'firetext'
    assert result[1].notification_type == 'sms'
    assert result[1].supports_international is False
    assert result[1].active is True
    assert result[1].current_month_billable_sms == 5

    assert result[2].identifier == 'mmg'
    assert result[2].display_name == 'MMG'
    assert result[2].supports_international is True
    assert result[2].active is True
    assert result[2].current_month_billable_sms == 4

    assert result[3].identifier == 'dvla'
    assert result[3].current_month_billable_sms == 0
    assert result[3].supports_international is False
def test_dao_get_provider_stats_counts_billable_sms_within_last_month(setup_provider_details):
    sms_provider = next((provider for provider in setup_provider_details if provider.notification_type == 'sms'), None)

    service = create_service(service_name='1')
    sms_template = create_template(service, 'sms')

    create_ft_billing('2018-06-05', 'sms', sms_template, service, provider=sms_provider.identifier, billable_unit=4)

    results = dao_get_provider_stats()

    sms_provider_result = next((result for result in results if result.identifier == sms_provider.identifier), None)

    assert sms_provider_result.current_month_billable_sms == 4
def test_dao_get_provider_stats(notify_db_session):
    service_1 = create_service(service_name='1')
    service_2 = create_service(service_name='2')
    sms_template_1 = create_template(service_1, 'sms')
    sms_template_2 = create_template(service_2, 'sms')

    create_ft_billing('2017-06-05', 'sms', sms_template_2, service_1, provider='mmg', billable_unit=4)
    create_ft_billing('2018-05-31', 'sms', sms_template_1, service_1, provider='sns', billable_unit=1)
    create_ft_billing('2018-06-01', 'sms', sms_template_1, service_1, provider='sns',
                      rate_multiplier=2, billable_unit=1)
    create_ft_billing('2018-06-03', 'sms', sms_template_2, service_1, provider='mmg', billable_unit=4)
    create_ft_billing('2018-06-15', 'sms', sms_template_1, service_2, provider='mmg', billable_unit=1)
    create_ft_billing('2018-06-28', 'sms', sms_template_2, service_2, provider='sns', billable_unit=2)

    provider = get_provider_details_by_identifier('pinpoint')
    provider.priority = 50
    dao_update_provider_details(provider)

    result = dao_get_provider_stats()

    assert len(result) == 7

    assert result[0].identifier == 'ses'
    assert result[0].display_name == 'AWS SES'
    assert result[0].created_by_name is None
    assert result[0].current_month_billable_sms == 0

    assert result[1].identifier == 'sns'
    assert result[1].display_name == 'AWS SNS'
    assert result[1].supports_international is False
    assert result[1].active is True
    assert result[1].current_month_billable_sms == 4

    assert result[2].identifier == 'mmg'
    assert result[2].notification_type == 'sms'
    assert result[2].supports_international is True
    assert result[2].active is True
    assert result[2].current_month_billable_sms == 5

    assert result[3].identifier == 'firetext'
    assert result[3].current_month_billable_sms == 0

    assert result[4].identifier == 'loadtesting'
    assert result[4].current_month_billable_sms == 0
    assert result[4].supports_international is False

    assert result[5].identifier == 'pinpoint'
    assert result[5].notification_type == 'sms'
    assert result[5].supports_international is False
    assert result[5].active is True
    assert result[5].current_month_billable_sms == 0
def test_dao_get_provider_stats_returns_data_in_type_and_identifier_order(setup_provider_details):
    all_provider_details = setup_provider_details
    result = dao_get_provider_stats()
    assert len(result) == len(all_provider_details)

    [prioritised_email_provider, deprioritised_email_provider, prioritised_sms_provider, _, _] = setup_provider_details

    assert result[0].identifier == prioritised_email_provider.identifier
    assert result[0].display_name == prioritised_email_provider.display_name

    assert result[1].identifier == deprioritised_email_provider.identifier
    assert result[1].display_name == deprioritised_email_provider.display_name

    assert result[2].identifier == prioritised_sms_provider.identifier
    assert result[2].display_name == prioritised_sms_provider.display_name