mirror of
https://github.com/GSA/notifications-api.git
synced 2026-07-23 09:29:43 -04:00
Use real letter_rates in tests
Added the letter_rate table to the list of tables which does not get deleted after each test run and changed the tests to use the real letter rates. Also removed the letter rate DAO since this was only being used in tests, so was no longer needed.
This commit is contained in:
@@ -1,23 +0,0 @@
|
||||
from app import db
|
||||
from app.dao.dao_utils import transactional
|
||||
from app.models import LetterRate
|
||||
|
||||
|
||||
@transactional
|
||||
def dao_create_letter_rate(letter_rate):
|
||||
db.session.add(letter_rate)
|
||||
|
||||
|
||||
def get_letter_rates_for_daterange(date, crown, sheet_count, post_class='second'):
|
||||
rates = LetterRate.query.filter(
|
||||
LetterRate.start_date <= date
|
||||
).filter((LetterRate.end_date == None) | # noqa
|
||||
(LetterRate.end_date > date)
|
||||
).filter(
|
||||
LetterRate.crown == crown
|
||||
).filter(
|
||||
LetterRate.sheet_count == sheet_count
|
||||
).filter(
|
||||
LetterRate.post_class == post_class
|
||||
).all()
|
||||
return rates
|
||||
@@ -17,7 +17,6 @@ from tests.app.db import (
|
||||
create_rate,
|
||||
create_monthly_billing_entry,
|
||||
create_annual_billing,
|
||||
create_letter_rate,
|
||||
create_template,
|
||||
create_service,
|
||||
create_ft_billing
|
||||
@@ -47,8 +46,6 @@ def test_get_yearly_billing_summary_returns_correct_breakdown(client, sample_tem
|
||||
template=sample_template, created_at=IN_JUN_2016,
|
||||
billable_units=2, rate_multiplier=3, status='delivered'
|
||||
)
|
||||
create_letter_rate(crown=False, start_date=IN_MAY_2016, end_date=IN_JUN_2016)
|
||||
create_letter_rate(crown=False, start_date=IN_JUN_2016, rate=0.41)
|
||||
|
||||
letter_template = create_template(service=sample_template.service, template_type=LETTER_TYPE)
|
||||
create_notification(template=letter_template, created_at=IN_MAY_2016, status='delivered', billable_units=1)
|
||||
@@ -76,7 +73,7 @@ def test_get_yearly_billing_summary_returns_correct_breakdown(client, sample_tem
|
||||
'notification_type': LETTER_TYPE,
|
||||
'billing_units': 2,
|
||||
'rate': 0,
|
||||
'letter_total': 0.72
|
||||
'letter_total': 0.66
|
||||
})
|
||||
_assert_dict_equals(resp_json[2], {
|
||||
'notification_type': SMS_TYPE,
|
||||
|
||||
@@ -11,7 +11,6 @@ from app.models import (
|
||||
)
|
||||
from decimal import Decimal
|
||||
import pytest
|
||||
from app.dao.letter_rate_dao import dao_create_letter_rate
|
||||
from app.models import LetterRate, Rate
|
||||
from app import db
|
||||
from freezegun import freeze_time
|
||||
@@ -316,38 +315,20 @@ def test_create_nightly_billing_consolidate_from_3_days_delta(
|
||||
assert records[-1].bst_date == date(2018, 1, 14)
|
||||
|
||||
|
||||
def test_get_rate_for_letter_latest(notify_db, notify_db_session):
|
||||
letter_rate = LetterRate(start_date=datetime(2017, 12, 1),
|
||||
rate=Decimal(0.33),
|
||||
crown=True,
|
||||
sheet_count=1,
|
||||
post_class='second')
|
||||
|
||||
dao_create_letter_rate(letter_rate)
|
||||
letter_rate = LetterRate(start_date=datetime(2016, 12, 1),
|
||||
end_date=datetime(2017, 12, 1),
|
||||
rate=Decimal(0.30),
|
||||
crown=True,
|
||||
sheet_count=1,
|
||||
post_class='second')
|
||||
dao_create_letter_rate(letter_rate)
|
||||
|
||||
def test_get_rate_for_letter_latest(notify_db_session):
|
||||
non_letter_rates = [(r.notification_type, r.valid_from, r.rate) for r in
|
||||
Rate.query.order_by(desc(Rate.valid_from)).all()]
|
||||
letter_rates = [(r.start_date, r.crown, r.sheet_count, r.rate) for r in
|
||||
LetterRate.query.order_by(desc(LetterRate.start_date)).all()]
|
||||
|
||||
# letter rates should be passed into the get_rate function as a tuple of start_date, crown, sheet_count & rate
|
||||
new_letter_rate = (datetime(2017, 12, 1), True, 1, Decimal(0.33))
|
||||
old_letter_rate = (datetime(2016, 12, 1), True, 1, Decimal(0.30))
|
||||
letter_rates = [new_letter_rate, old_letter_rate]
|
||||
|
||||
rate = get_rate(non_letter_rates, letter_rates, LETTER_TYPE, datetime(2018, 1, 1), True, 1)
|
||||
assert rate == Decimal(0.33)
|
||||
|
||||
|
||||
def test_get_rate_for_sms_and_email(notify_db, notify_db_session):
|
||||
letter_rate = LetterRate(start_date=datetime(2017, 12, 1),
|
||||
rate=Decimal(0.33),
|
||||
crown=True,
|
||||
sheet_count=1,
|
||||
post_class='second')
|
||||
dao_create_letter_rate(letter_rate)
|
||||
sms_rate = Rate(valid_from=datetime(2017, 12, 1),
|
||||
rate=Decimal(0.15),
|
||||
notification_type=SMS_TYPE)
|
||||
|
||||
@@ -18,7 +18,6 @@ from tests.app.db import (
|
||||
create_template,
|
||||
create_notification,
|
||||
create_rate,
|
||||
create_letter_rate
|
||||
)
|
||||
|
||||
|
||||
@@ -223,18 +222,16 @@ def test_get_rates_for_billing(notify_db_session):
|
||||
create_rate(start_date=datetime.utcnow(), value=12, notification_type='email')
|
||||
create_rate(start_date=datetime.utcnow(), value=22, notification_type='sms')
|
||||
create_rate(start_date=datetime.utcnow(), value=33, notification_type='email')
|
||||
create_letter_rate(start_date=datetime.utcnow())
|
||||
non_letter_rates, letter_rates = get_rates_for_billing()
|
||||
|
||||
assert len(non_letter_rates) == 3
|
||||
assert len(letter_rates) == 1
|
||||
assert len(letter_rates) == 10
|
||||
|
||||
|
||||
def test_get_rate(notify_db_session):
|
||||
create_rate(start_date=datetime.utcnow(), value=1.2, notification_type='email')
|
||||
create_rate(start_date=datetime.utcnow(), value=2.2, notification_type='sms')
|
||||
create_rate(start_date=datetime.utcnow(), value=3.3, notification_type='email')
|
||||
create_letter_rate(start_date=datetime.utcnow(), rate=4.4)
|
||||
non_letter_rates, letter_rates = get_rates_for_billing()
|
||||
rate = get_rate(non_letter_rates=non_letter_rates, letter_rates=letter_rates, notification_type='sms',
|
||||
date=datetime.utcnow())
|
||||
@@ -245,7 +242,7 @@ def test_get_rate(notify_db_session):
|
||||
date=datetime.utcnow())
|
||||
|
||||
assert rate == 2.2
|
||||
assert letter_rate == Decimal('4.4')
|
||||
assert letter_rate == Decimal('0.3')
|
||||
|
||||
|
||||
def test_fetch_monthly_billing_for_year(notify_db_session):
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
from datetime import datetime
|
||||
|
||||
from decimal import Decimal
|
||||
|
||||
from app.dao.letter_rate_dao import dao_create_letter_rate, get_letter_rates_for_daterange
|
||||
from app.models import LetterRate
|
||||
|
||||
|
||||
def test_dao_create_letter_rate(notify_db_session):
|
||||
letter_rate = LetterRate(start_date=datetime(2017, 12, 1),
|
||||
rate=0.33,
|
||||
crown=True,
|
||||
sheet_count=1,
|
||||
post_class='second')
|
||||
|
||||
dao_create_letter_rate(letter_rate)
|
||||
|
||||
rates = LetterRate.query.all()
|
||||
assert len(rates) == 1
|
||||
|
||||
|
||||
def test_get_letter_rates_for_daterange(notify_db_session):
|
||||
letter_rate = LetterRate(start_date=datetime(2017, 12, 1),
|
||||
rate=0.33,
|
||||
crown=True,
|
||||
sheet_count=1,
|
||||
post_class='second')
|
||||
|
||||
dao_create_letter_rate(letter_rate)
|
||||
letter_rate = LetterRate(start_date=datetime(2016, 12, 1),
|
||||
end_date=datetime(2017, 12, 1),
|
||||
rate=0.30,
|
||||
crown=True,
|
||||
sheet_count=1,
|
||||
post_class='second')
|
||||
|
||||
dao_create_letter_rate(letter_rate)
|
||||
|
||||
results = get_letter_rates_for_daterange(date=datetime(2017, 12, 2), crown=True, sheet_count=1, post_class='second')
|
||||
assert len(results) == 1
|
||||
assert results[0].rate == Decimal('0.33')
|
||||
@@ -18,7 +18,7 @@ from tests.app.db import (
|
||||
create_service,
|
||||
create_template,
|
||||
create_monthly_billing_entry,
|
||||
create_letter_rate)
|
||||
)
|
||||
|
||||
FEB_2016_MONTH_START = datetime(2016, 2, 1)
|
||||
FEB_2016_MONTH_END = datetime(2016, 2, 29, 23, 59, 59, 99999)
|
||||
@@ -154,7 +154,6 @@ def test_add_monthly_billing_for_single_month_populates_correctly(
|
||||
):
|
||||
create_rate(start_date=JAN_2017_MONTH_START, value=0.0158, notification_type=SMS_TYPE)
|
||||
letter_template = sample_letter_template(sample_template.service)
|
||||
create_letter_rate(crown=False)
|
||||
create_notification(
|
||||
template=sample_template, created_at=JAN_2017_MONTH_START,
|
||||
billable_units=1, rate_multiplier=2, status='delivered'
|
||||
@@ -201,8 +200,8 @@ def test_add_monthly_billing_for_single_month_populates_correctly(
|
||||
"billing_units": 1,
|
||||
"rate_multiplier": 1,
|
||||
"international": False,
|
||||
"rate": 0.31,
|
||||
"total_cost": 1 * 0.31
|
||||
"rate": 0.33,
|
||||
"total_cost": 1 * 0.33
|
||||
})
|
||||
|
||||
|
||||
@@ -286,7 +285,6 @@ def test_add_monthly_billing_with_multiple_rates_populate_correctly(
|
||||
create_notification(template=sample_email_template, created_at=JAN_2017_MONTH_START, status='delivered')
|
||||
create_notification(template=letter_template, created_at=JAN_2017_MONTH_START, status='delivered',
|
||||
billable_units=1)
|
||||
create_letter_rate(start_date=JAN_2017_MONTH_START, crown=False)
|
||||
|
||||
create_or_update_monthly_billing(service_id=sample_template.service_id, billing_month=JAN_2017_MONTH_START)
|
||||
|
||||
@@ -329,8 +327,8 @@ def test_add_monthly_billing_with_multiple_rates_populate_correctly(
|
||||
"billing_units": 1,
|
||||
"rate_multiplier": 1,
|
||||
"international": False,
|
||||
"rate": 0.31,
|
||||
"total_cost": 0.31
|
||||
"rate": 0.33,
|
||||
"total_cost": 0.33
|
||||
})
|
||||
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ from app.models import (
|
||||
Rate,
|
||||
SMS_TYPE,
|
||||
)
|
||||
from tests.app.db import create_notification, create_rate, create_letter_rate, create_template, create_service
|
||||
from tests.app.db import create_notification, create_rate, create_template, create_service
|
||||
|
||||
|
||||
def test_get_rates_for_daterange(notify_db, notify_db_session):
|
||||
@@ -217,7 +217,6 @@ def test_get_monthly_billing_data_where_start_date_before_rate_returns_empty(
|
||||
def test_billing_letter_data_per_month_query(
|
||||
notify_db_session
|
||||
):
|
||||
create_letter_rate()
|
||||
service = create_service()
|
||||
template = create_template(service=service, template_type='letter')
|
||||
create_notification(template=template, billable_units=1, created_at=datetime(2017, 2, 1, 13, 21),
|
||||
@@ -232,5 +231,5 @@ def test_billing_letter_data_per_month_query(
|
||||
end_date=datetime(2017, 2, 28))
|
||||
|
||||
assert len(results) == 1
|
||||
assert results[0].rate == 0.31
|
||||
assert results[0].rate == 0.3
|
||||
assert results[0].billing_units == 3
|
||||
|
||||
@@ -32,7 +32,6 @@ from app.models import (
|
||||
SMS_TYPE,
|
||||
KEY_TYPE_NORMAL,
|
||||
AnnualBilling,
|
||||
LetterRate,
|
||||
InvitedOrganisationUser,
|
||||
FactBilling,
|
||||
FactNotificationStatus,
|
||||
@@ -475,28 +474,6 @@ def create_annual_billing(
|
||||
return annual_billing
|
||||
|
||||
|
||||
def create_letter_rate(
|
||||
start_date=datetime(2017, 1, 1, 00, 00, 00),
|
||||
end_date=None,
|
||||
sheet_count=1,
|
||||
rate=0.31,
|
||||
crown=True,
|
||||
post_class='second'
|
||||
):
|
||||
rate = LetterRate(
|
||||
start_date=start_date,
|
||||
end_date=end_date,
|
||||
sheet_count=sheet_count,
|
||||
rate=rate,
|
||||
crown=crown,
|
||||
post_class=post_class
|
||||
)
|
||||
db.session.add(rate)
|
||||
db.session.commit()
|
||||
|
||||
return rate
|
||||
|
||||
|
||||
def create_organisation(name='test_org_1', active=True):
|
||||
data = {
|
||||
'name': name,
|
||||
|
||||
@@ -105,7 +105,8 @@ def notify_db_session(notify_db):
|
||||
"notification_status_types",
|
||||
"service_permission_types",
|
||||
"auth_type",
|
||||
"invite_status_type"]:
|
||||
"invite_status_type",
|
||||
"letter_rates"]:
|
||||
notify_db.engine.execute(tbl.delete())
|
||||
notify_db.session.commit()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user