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) 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() ] 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) db.session.add(sms_rate) email_rate = Rate(valid_from=datetime(2017, 12, 1), rate=Decimal(0), notification_type=EMAIL_TYPE) db.session.add(email_rate) 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()] rate = get_rate(non_letter_rates, letter_rates, SMS_TYPE, datetime(2018, 1, 1)) assert rate == Decimal(0.15) rate = get_rate(non_letter_rates, letter_rates, EMAIL_TYPE, datetime(2018, 1, 1)) assert rate == Decimal(0)
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')
def create_letter_rate(start_date=None, end_date=None, crown=True, sheet_count=1, rate=0.33, post_class='second'): if start_date is None: start_date = datetime(2016, 1, 1) rate = LetterRate( id=uuid.uuid4(), start_date=start_date, end_date=end_date, crown=crown, sheet_count=sheet_count, rate=rate, post_class=post_class ) db.session.add(rate) db.session.commit() return rate
def create_letter_rate( start_date=datetime(2016, 12, 31, 13, 00, 00), # 2017-01-01 00:00 AEDT 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