mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-01 07:35:34 -05:00
Merge pull request #3528 from alphagov/tidy-up-usage-tests-181934027
Minor refactorings to usage API tests
This commit is contained in:
@@ -1,15 +1,11 @@
|
|||||||
from calendar import monthrange
|
from datetime import date, datetime
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from freezegun import freeze_time
|
from freezegun import freeze_time
|
||||||
|
|
||||||
from app.billing.rest import update_free_sms_fragment_limit_data
|
from app.billing.rest import update_free_sms_fragment_limit_data
|
||||||
from app.dao.annual_billing_dao import dao_get_free_sms_fragment_limit_for_year
|
from app.dao.annual_billing_dao import dao_get_free_sms_fragment_limit_for_year
|
||||||
from app.dao.date_util import (
|
from app.dao.date_util import get_current_financial_year_start_year
|
||||||
get_current_financial_year_start_year,
|
|
||||||
get_month_start_and_end_date_in_utc,
|
|
||||||
)
|
|
||||||
from tests.app.db import (
|
from tests.app.db import (
|
||||||
create_annual_billing,
|
create_annual_billing,
|
||||||
create_ft_billing,
|
create_ft_billing,
|
||||||
@@ -125,35 +121,18 @@ def test_update_free_sms_fragment_limit_data(client, sample_service):
|
|||||||
assert annual_billing.free_sms_fragment_limit == 9999
|
assert annual_billing.free_sms_fragment_limit == 9999
|
||||||
|
|
||||||
|
|
||||||
def set_up_monthly_data():
|
def test_get_yearly_usage_by_monthly_from_ft_billing(admin_request, notify_db_session):
|
||||||
service = create_service()
|
service = create_service()
|
||||||
|
create_annual_billing(service_id=service.id, free_sms_fragment_limit=1, financial_year_start=2016)
|
||||||
|
|
||||||
sms_template = create_template(service=service, template_type="sms")
|
sms_template = create_template(service=service, template_type="sms")
|
||||||
email_template = create_template(service=service, template_type="email")
|
email_template = create_template(service=service, template_type="email")
|
||||||
letter_template = create_template(service=service, template_type="letter")
|
letter_template = create_template(service=service, template_type="letter")
|
||||||
|
|
||||||
for month in range(1, 13):
|
for dt in (date(2016, 4, 28), date(2016, 11, 10), date(2017, 2, 26)):
|
||||||
mon = str(month).zfill(2)
|
create_ft_billing(bst_date=dt, template=sms_template, rate=0.0162)
|
||||||
for day in range(1, monthrange(2016, month)[1] + 1):
|
create_ft_billing(bst_date=dt, template=email_template, billable_unit=0, rate=0)
|
||||||
d = str(day).zfill(2)
|
create_ft_billing(bst_date=dt, template=letter_template, rate=0.33, postage='second')
|
||||||
create_ft_billing(bst_date='2016-{}-{}'.format(mon, d),
|
|
||||||
template=sms_template,
|
|
||||||
billable_unit=1,
|
|
||||||
rate=0.162)
|
|
||||||
create_ft_billing(bst_date='2016-{}-{}'.format(mon, d),
|
|
||||||
template=email_template,
|
|
||||||
rate=0)
|
|
||||||
create_ft_billing(bst_date='2016-{}-{}'.format(mon, d),
|
|
||||||
template=letter_template,
|
|
||||||
billable_unit=1,
|
|
||||||
rate=0.33,
|
|
||||||
postage='second')
|
|
||||||
|
|
||||||
create_annual_billing(service_id=service.id, free_sms_fragment_limit=4, financial_year_start=2016)
|
|
||||||
return service
|
|
||||||
|
|
||||||
|
|
||||||
def test_get_yearly_usage_by_monthly_from_ft_billing(admin_request, notify_db_session):
|
|
||||||
service = set_up_monthly_data()
|
|
||||||
|
|
||||||
json_response = admin_request.get(
|
json_response = admin_request.get(
|
||||||
'billing.get_yearly_usage_by_monthly_from_ft_billing',
|
'billing.get_yearly_usage_by_monthly_from_ft_billing',
|
||||||
@@ -161,7 +140,7 @@ def test_get_yearly_usage_by_monthly_from_ft_billing(admin_request, notify_db_se
|
|||||||
year=2016
|
year=2016
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(json_response) == 18
|
assert len(json_response) == 6 # 3 billed months for SMS and letters
|
||||||
|
|
||||||
email_rows = [row for row in json_response if row['notification_type'] == 'email']
|
email_rows = [row for row in json_response if row['notification_type'] == 'email']
|
||||||
assert len(email_rows) == 0
|
assert len(email_rows) == 0
|
||||||
@@ -171,57 +150,26 @@ def test_get_yearly_usage_by_monthly_from_ft_billing(admin_request, notify_db_se
|
|||||||
|
|
||||||
assert letter_row["month"] == "April"
|
assert letter_row["month"] == "April"
|
||||||
assert letter_row["notification_type"] == "letter"
|
assert letter_row["notification_type"] == "letter"
|
||||||
assert letter_row["billing_units"] == 30
|
assert letter_row["billing_units"] == 1
|
||||||
assert letter_row["chargeable_units"] == 30
|
assert letter_row["chargeable_units"] == 1
|
||||||
assert letter_row["notifications_sent"] == 30
|
assert letter_row["notifications_sent"] == 1
|
||||||
assert letter_row["rate"] == 0.33
|
assert letter_row["rate"] == 0.33
|
||||||
assert letter_row["postage"] == "second"
|
assert letter_row["postage"] == "second"
|
||||||
assert letter_row["cost"] == 9.9
|
assert letter_row["cost"] == 0.33
|
||||||
assert letter_row["free_allowance_used"] == 0
|
assert letter_row["free_allowance_used"] == 0
|
||||||
assert letter_row["charged_units"] == 30
|
assert letter_row["charged_units"] == 1
|
||||||
|
|
||||||
assert sms_row["month"] == "April"
|
assert sms_row["month"] == "April"
|
||||||
assert sms_row["notification_type"] == "sms"
|
assert sms_row["notification_type"] == "sms"
|
||||||
assert sms_row["billing_units"] == 30
|
assert sms_row["billing_units"] == 1
|
||||||
assert sms_row["chargeable_units"] == 30
|
assert sms_row["chargeable_units"] == 1
|
||||||
assert sms_row["notifications_sent"] == 30
|
assert sms_row["notifications_sent"] == 1
|
||||||
assert sms_row["rate"] == 0.162
|
assert sms_row["rate"] == 0.0162
|
||||||
assert sms_row["postage"] == "none"
|
assert sms_row["postage"] == "none"
|
||||||
# free allowance is 4, so (30 - 4) * 0.162
|
# free allowance is 1
|
||||||
assert sms_row["cost"] == 4.212
|
assert sms_row["cost"] == 0
|
||||||
assert sms_row["free_allowance_used"] == 4
|
assert sms_row["free_allowance_used"] == 1
|
||||||
assert sms_row["charged_units"] == 26
|
assert sms_row["charged_units"] == 0
|
||||||
|
|
||||||
|
|
||||||
def set_up_yearly_data():
|
|
||||||
service = create_service()
|
|
||||||
sms_template = create_template(service=service, template_type="sms")
|
|
||||||
email_template = create_template(service=service, template_type="email")
|
|
||||||
letter_template = create_template(service=service, template_type="letter")
|
|
||||||
|
|
||||||
for month in range(1, 13):
|
|
||||||
mon = str(month).zfill(2)
|
|
||||||
for day in range(1, monthrange(2016, month)[1] + 1):
|
|
||||||
d = str(day).zfill(2)
|
|
||||||
create_ft_billing(bst_date='2016-{}-{}'.format(mon, d),
|
|
||||||
template=sms_template,
|
|
||||||
rate=0.0162)
|
|
||||||
create_ft_billing(bst_date='2016-{}-{}'.format(mon, d),
|
|
||||||
template=sms_template,
|
|
||||||
rate_multiplier=2,
|
|
||||||
rate=0.0162)
|
|
||||||
create_ft_billing(bst_date='2016-{}-{}'.format(mon, d),
|
|
||||||
template=email_template,
|
|
||||||
billable_unit=0,
|
|
||||||
rate=0)
|
|
||||||
create_ft_billing(bst_date='2016-{}-{}'.format(mon, d),
|
|
||||||
template=letter_template,
|
|
||||||
rate=0.33,
|
|
||||||
postage='second')
|
|
||||||
start_date, end_date = get_month_start_and_end_date_in_utc(datetime(2016, int(mon), 1))
|
|
||||||
|
|
||||||
create_annual_billing(service_id=service.id, free_sms_fragment_limit=4, financial_year_start=2016)
|
|
||||||
return service
|
|
||||||
|
|
||||||
|
|
||||||
def test_get_yearly_billing_usage_summary_from_ft_billing_returns_400_if_missing_year(admin_request, sample_service):
|
def test_get_yearly_billing_usage_summary_from_ft_billing_returns_400_if_missing_year(admin_request, sample_service):
|
||||||
@@ -247,7 +195,17 @@ def test_get_yearly_billing_usage_summary_from_ft_billing_returns_empty_list_if_
|
|||||||
|
|
||||||
|
|
||||||
def test_get_yearly_billing_usage_summary_from_ft_billing(admin_request, notify_db_session):
|
def test_get_yearly_billing_usage_summary_from_ft_billing(admin_request, notify_db_session):
|
||||||
service = set_up_yearly_data()
|
service = create_service()
|
||||||
|
create_annual_billing(service_id=service.id, free_sms_fragment_limit=1, financial_year_start=2016)
|
||||||
|
|
||||||
|
sms_template = create_template(service=service, template_type="sms")
|
||||||
|
email_template = create_template(service=service, template_type="email")
|
||||||
|
letter_template = create_template(service=service, template_type="letter")
|
||||||
|
|
||||||
|
for dt in (date(2016, 4, 28), date(2016, 11, 10), date(2017, 2, 26)):
|
||||||
|
create_ft_billing(bst_date=dt, template=sms_template, rate=0.0162)
|
||||||
|
create_ft_billing(bst_date=dt, template=email_template, billable_unit=0, rate=0)
|
||||||
|
create_ft_billing(bst_date=dt, template=letter_template, rate=0.33, postage='second')
|
||||||
|
|
||||||
json_response = admin_request.get(
|
json_response = admin_request.get(
|
||||||
'billing.get_yearly_billing_usage_summary_from_ft_billing',
|
'billing.get_yearly_billing_usage_summary_from_ft_billing',
|
||||||
@@ -258,9 +216,9 @@ def test_get_yearly_billing_usage_summary_from_ft_billing(admin_request, notify_
|
|||||||
assert len(json_response) == 3
|
assert len(json_response) == 3
|
||||||
|
|
||||||
assert json_response[0]['notification_type'] == 'email'
|
assert json_response[0]['notification_type'] == 'email'
|
||||||
assert json_response[0]['billing_units'] == 275
|
assert json_response[0]['billing_units'] == 3
|
||||||
assert json_response[0]['chargeable_units'] == 0
|
assert json_response[0]['chargeable_units'] == 0
|
||||||
assert json_response[0]['notifications_sent'] == 275
|
assert json_response[0]['notifications_sent'] == 3
|
||||||
assert json_response[0]['rate'] == 0
|
assert json_response[0]['rate'] == 0
|
||||||
assert json_response[0]['letter_total'] == 0
|
assert json_response[0]['letter_total'] == 0
|
||||||
assert json_response[0]['cost'] == 0
|
assert json_response[0]['cost'] == 0
|
||||||
@@ -268,21 +226,21 @@ def test_get_yearly_billing_usage_summary_from_ft_billing(admin_request, notify_
|
|||||||
assert json_response[0]['charged_units'] == 0
|
assert json_response[0]['charged_units'] == 0
|
||||||
|
|
||||||
assert json_response[1]['notification_type'] == 'letter'
|
assert json_response[1]['notification_type'] == 'letter'
|
||||||
assert json_response[1]['billing_units'] == 275
|
assert json_response[1]['billing_units'] == 3
|
||||||
assert json_response[1]['chargeable_units'] == 275
|
assert json_response[1]['chargeable_units'] == 3
|
||||||
assert json_response[1]['notifications_sent'] == 275
|
assert json_response[1]['notifications_sent'] == 3
|
||||||
assert json_response[1]['rate'] == 0.33
|
assert json_response[1]['rate'] == 0.33
|
||||||
assert json_response[1]['letter_total'] == 90.75
|
assert json_response[1]['letter_total'] == 0.99
|
||||||
assert json_response[1]['cost'] == 90.75
|
assert json_response[1]['cost'] == 0.99
|
||||||
assert json_response[1]['free_allowance_used'] == 0
|
assert json_response[1]['free_allowance_used'] == 0
|
||||||
assert json_response[1]['charged_units'] == 275
|
assert json_response[1]['charged_units'] == 3
|
||||||
|
|
||||||
assert json_response[2]['notification_type'] == 'sms'
|
assert json_response[2]['notification_type'] == 'sms'
|
||||||
assert json_response[2]['billing_units'] == 825
|
assert json_response[2]['billing_units'] == 3
|
||||||
assert json_response[2]['chargeable_units'] == 825
|
assert json_response[2]['chargeable_units'] == 3
|
||||||
assert json_response[2]['notifications_sent'] == 550
|
assert json_response[2]['notifications_sent'] == 3
|
||||||
assert json_response[2]['rate'] == 0.0162
|
assert json_response[2]['rate'] == 0.0162
|
||||||
assert json_response[2]['letter_total'] == 0
|
assert json_response[2]['letter_total'] == 0
|
||||||
assert json_response[2]['cost'] == 13.3002
|
assert json_response[2]['cost'] == 0.0324
|
||||||
assert json_response[2]['free_allowance_used'] == 4
|
assert json_response[2]['free_allowance_used'] == 1
|
||||||
assert json_response[2]['charged_units'] == 821
|
assert json_response[2]['charged_units'] == 2
|
||||||
|
|||||||
@@ -50,18 +50,13 @@ def set_up_yearly_data():
|
|||||||
for dt in (date(2016, 3, 31), date(2017, 4, 1)):
|
for dt in (date(2016, 3, 31), date(2017, 4, 1)):
|
||||||
create_ft_billing(bst_date=dt, template=sms_template, rate=0.163)
|
create_ft_billing(bst_date=dt, template=sms_template, rate=0.163)
|
||||||
create_ft_billing(bst_date=dt, template=email_template, rate=0, billable_unit=0)
|
create_ft_billing(bst_date=dt, template=email_template, rate=0, billable_unit=0)
|
||||||
create_ft_billing(bst_date=dt, template=letter_template, rate=0.34, postage='second')
|
|
||||||
create_ft_billing(bst_date=dt, template=letter_template, rate=0.31, postage='second')
|
create_ft_billing(bst_date=dt, template=letter_template, rate=0.31, postage='second')
|
||||||
|
|
||||||
start_date = date(2016, 4, 1)
|
# a selection of dates that represent the extreme ends of the financial year
|
||||||
end_date = date(2017, 4, 1)
|
# and some arbitrary dates in between
|
||||||
|
for dt in (date(2016, 4, 1), date(2016, 4, 29), date(2017, 2, 6), date(2017, 3, 31)):
|
||||||
for n in range((end_date - start_date).days):
|
|
||||||
dt = start_date + timedelta(days=n)
|
|
||||||
|
|
||||||
create_ft_billing(bst_date=dt, template=sms_template, rate=0.162)
|
create_ft_billing(bst_date=dt, template=sms_template, rate=0.162)
|
||||||
create_ft_billing(bst_date=dt, template=email_template, rate=0, billable_unit=0)
|
create_ft_billing(bst_date=dt, template=email_template, rate=0, billable_unit=0)
|
||||||
create_ft_billing(bst_date=dt, template=letter_template, rate=0.33, postage='second')
|
|
||||||
create_ft_billing(bst_date=dt, template=letter_template, rate=0.30, postage='second')
|
create_ft_billing(bst_date=dt, template=letter_template, rate=0.30, postage='second')
|
||||||
|
|
||||||
return service
|
return service
|
||||||
@@ -426,15 +421,15 @@ def test_get_rate_for_letters_when_page_count_is_zero(notify_db_session):
|
|||||||
|
|
||||||
def test_fetch_monthly_billing_for_year(notify_db_session):
|
def test_fetch_monthly_billing_for_year(notify_db_session):
|
||||||
service = set_up_yearly_data()
|
service = set_up_yearly_data()
|
||||||
create_annual_billing(service_id=service.id, free_sms_fragment_limit=10, financial_year_start=2016)
|
create_annual_billing(service_id=service.id, free_sms_fragment_limit=1, financial_year_start=2016)
|
||||||
results = fetch_monthly_billing_for_year(service.id, 2016)
|
results = fetch_monthly_billing_for_year(service.id, 2016)
|
||||||
|
|
||||||
assert len(results) == 48
|
assert len(results) == 9 # 3 billed months for each type
|
||||||
|
|
||||||
assert str(results[0].month) == "2016-04-01"
|
assert str(results[0].month) == "2016-04-01"
|
||||||
assert results[0].notification_type == 'email'
|
assert results[0].notification_type == 'email'
|
||||||
assert results[0].notifications_sent == 30
|
assert results[0].notifications_sent == 2
|
||||||
assert results[0].billable_units == 30
|
assert results[0].billable_units == 2
|
||||||
assert results[0].chargeable_units == 0
|
assert results[0].chargeable_units == 0
|
||||||
assert results[0].rate == Decimal('0')
|
assert results[0].rate == Decimal('0')
|
||||||
assert results[0].cost == Decimal('0')
|
assert results[0].cost == Decimal('0')
|
||||||
@@ -443,37 +438,27 @@ def test_fetch_monthly_billing_for_year(notify_db_session):
|
|||||||
|
|
||||||
assert str(results[1].month) == "2016-04-01"
|
assert str(results[1].month) == "2016-04-01"
|
||||||
assert results[1].notification_type == 'letter'
|
assert results[1].notification_type == 'letter'
|
||||||
assert results[1].notifications_sent == 30
|
assert results[1].notifications_sent == 2
|
||||||
assert results[1].billable_units == 30
|
assert results[1].billable_units == 2
|
||||||
assert results[1].chargeable_units == 30
|
assert results[1].chargeable_units == 2
|
||||||
assert results[1].rate == Decimal('0.30')
|
assert results[1].rate == Decimal('0.30')
|
||||||
assert results[1].cost == Decimal('9')
|
assert results[1].cost == Decimal('0.60')
|
||||||
assert results[1].free_allowance_used == 0
|
assert results[1].free_allowance_used == 0
|
||||||
assert results[1].charged_units == 30
|
assert results[1].charged_units == 2
|
||||||
|
|
||||||
assert str(results[1].month) == "2016-04-01"
|
assert str(results[2].month) == "2016-04-01"
|
||||||
assert results[2].notification_type == 'letter'
|
assert results[2].notification_type == 'sms'
|
||||||
assert results[2].notifications_sent == 30
|
assert results[2].notifications_sent == 2
|
||||||
assert results[2].billable_units == 30
|
assert results[2].billable_units == 2
|
||||||
assert results[2].chargeable_units == 30
|
assert results[2].chargeable_units == 2
|
||||||
assert results[2].rate == Decimal('0.33')
|
assert results[2].rate == Decimal('0.162')
|
||||||
assert results[2].cost == Decimal('9.9')
|
# free allowance is 1
|
||||||
assert results[2].free_allowance_used == 0
|
assert results[2].cost == Decimal('0.162')
|
||||||
assert results[2].charged_units == 30
|
assert results[2].free_allowance_used == 1
|
||||||
|
assert results[2].charged_units == 1
|
||||||
|
|
||||||
assert str(results[3].month) == "2016-04-01"
|
assert str(results[3].month) == "2017-02-01"
|
||||||
assert results[3].notification_type == 'sms'
|
assert str(results[8].month) == "2017-03-01"
|
||||||
assert results[3].notifications_sent == 30
|
|
||||||
assert results[3].billable_units == 30
|
|
||||||
assert results[3].chargeable_units == 30
|
|
||||||
assert results[3].rate == Decimal('0.162')
|
|
||||||
# free allowance is 10, so (30 - 10) * 0.162
|
|
||||||
assert results[3].cost == Decimal('3.24')
|
|
||||||
assert results[3].free_allowance_used == 10
|
|
||||||
assert results[3].charged_units == 20
|
|
||||||
|
|
||||||
assert str(results[4].month) == "2016-05-01"
|
|
||||||
assert str(results[47].month) == "2017-03-01"
|
|
||||||
|
|
||||||
|
|
||||||
def test_fetch_monthly_billing_for_year_variable_rates(notify_db_session):
|
def test_fetch_monthly_billing_for_year_variable_rates(notify_db_session):
|
||||||
@@ -552,10 +537,10 @@ def test_fetch_billing_totals_for_year(notify_db_session):
|
|||||||
create_annual_billing(service_id=service.id, free_sms_fragment_limit=1000, financial_year_start=2016)
|
create_annual_billing(service_id=service.id, free_sms_fragment_limit=1000, financial_year_start=2016)
|
||||||
results = fetch_billing_totals_for_year(service_id=service.id, year=2016)
|
results = fetch_billing_totals_for_year(service_id=service.id, year=2016)
|
||||||
|
|
||||||
assert len(results) == 4
|
assert len(results) == 3
|
||||||
assert results[0].notification_type == 'email'
|
assert results[0].notification_type == 'email'
|
||||||
assert results[0].notifications_sent == 365
|
assert results[0].notifications_sent == 4
|
||||||
assert results[0].billable_units == 365
|
assert results[0].billable_units == 4
|
||||||
assert results[0].chargeable_units == 0
|
assert results[0].chargeable_units == 0
|
||||||
assert results[0].rate == Decimal('0')
|
assert results[0].rate == Decimal('0')
|
||||||
assert results[0].cost == Decimal('0')
|
assert results[0].cost == Decimal('0')
|
||||||
@@ -563,31 +548,22 @@ def test_fetch_billing_totals_for_year(notify_db_session):
|
|||||||
assert results[0].charged_units == 0
|
assert results[0].charged_units == 0
|
||||||
|
|
||||||
assert results[1].notification_type == 'letter'
|
assert results[1].notification_type == 'letter'
|
||||||
assert results[1].notifications_sent == 365
|
assert results[1].notifications_sent == 4
|
||||||
assert results[1].billable_units == 365
|
assert results[1].billable_units == 4
|
||||||
assert results[1].chargeable_units == 365
|
assert results[1].chargeable_units == 4
|
||||||
assert results[1].rate == Decimal('0.3')
|
assert results[1].rate == Decimal('0.3')
|
||||||
assert results[1].cost == Decimal('109.5')
|
assert results[1].cost == Decimal('1.2')
|
||||||
assert results[1].free_allowance_used == 0
|
assert results[1].free_allowance_used == 0
|
||||||
assert results[1].charged_units == 365
|
assert results[1].charged_units == 4
|
||||||
|
|
||||||
assert results[2].notification_type == 'letter'
|
assert results[2].notification_type == 'sms'
|
||||||
assert results[2].notifications_sent == 365
|
assert results[2].notifications_sent == 4
|
||||||
assert results[2].billable_units == 365
|
assert results[2].billable_units == 4
|
||||||
assert results[2].chargeable_units == 365
|
assert results[2].chargeable_units == 4
|
||||||
assert results[2].rate == Decimal('0.33')
|
assert results[2].rate == Decimal('0.162')
|
||||||
assert results[2].cost == Decimal('120.45')
|
assert results[2].cost == Decimal('0')
|
||||||
assert results[2].free_allowance_used == 0
|
assert results[2].free_allowance_used == 4
|
||||||
assert results[2].charged_units == 365
|
assert results[2].charged_units == 0
|
||||||
|
|
||||||
assert results[3].notification_type == 'sms'
|
|
||||||
assert results[3].notifications_sent == 365
|
|
||||||
assert results[3].billable_units == 365
|
|
||||||
assert results[3].chargeable_units == 365
|
|
||||||
assert results[3].rate == Decimal('0.162')
|
|
||||||
assert results[3].cost == Decimal('0')
|
|
||||||
assert results[3].free_allowance_used == 365
|
|
||||||
assert results[3].charged_units == 0
|
|
||||||
|
|
||||||
|
|
||||||
def test_fetch_billing_totals_for_year_uses_current_annual_billing(notify_db_session):
|
def test_fetch_billing_totals_for_year_uses_current_annual_billing(notify_db_session):
|
||||||
@@ -601,7 +577,7 @@ def test_fetch_billing_totals_for_year_uses_current_annual_billing(notify_db_ses
|
|||||||
if result.notification_type == 'sms'
|
if result.notification_type == 'sms'
|
||||||
)
|
)
|
||||||
|
|
||||||
assert result.chargeable_units == 365
|
assert result.chargeable_units == 4
|
||||||
assert result.cost > 0
|
assert result.cost > 0
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user