def test_update_statement_daily_to_daily(session): """Assert that going from daily to daily creates a new record.""" bcol_account = factory_premium_payment_account() bcol_account.save() payment = factory_payment() payment.save() i = factory_invoice(payment_account=bcol_account) i.save() factory_invoice_reference(i.id).save() factory_statement_settings(payment_account_id=bcol_account.id, frequency=StatementFrequency.DAILY.value) # update to weekly payment_account = PaymentAccount.find_by_id(bcol_account.id) statement_settings = StatementSettingsService.update_statement_settings(payment_account.auth_account_id, StatementFrequency.DAILY.value) assert statement_settings is not None assert statement_settings.get('frequency') == StatementFrequency.DAILY.value assert statement_settings.get('to_date') is None # daily to daily - assert daily should start by tomorow assert statement_settings.get('from_date') == (datetime.today() + timedelta(days=1)).strftime('%Y-%m-%d') # daily to daily - assert current active one is stil daily ending today current_statement_settings = StatementSettingsModel.find_active_settings(payment_account.auth_account_id, datetime.today()) assert current_statement_settings is not None assert current_statement_settings.frequency == StatementFrequency.DAILY.value assert current_statement_settings.to_date == datetime.today().date()
def test_update_statement_monthly(session): """Assert that the statement settings by id works.""" bcol_account = factory_premium_payment_account() bcol_account.save() payment = factory_payment() payment.save() i = factory_invoice(payment_account=bcol_account) i.save() factory_invoice_reference(i.id).save() factory_statement_settings(payment_account_id=bcol_account.id, frequency=StatementFrequency.MONTHLY.value) # update to weekly payment_account = PaymentAccount.find_by_id(bcol_account.id) statement_settings = StatementSettingsService.update_statement_settings( payment_account.auth_account_id, StatementFrequency.WEEKLY.value) assert statement_settings is not None assert statement_settings.get( 'frequency') == StatementFrequency.WEEKLY.value assert statement_settings.get('to_date') is None # monthly to weekly - assert weekly should start by next week first day end_of_month_date = get_first_and_last_dates_of_month( datetime.today().month, datetime.today().year)[1] assert statement_settings.get('from_date') == ( end_of_month_date + timedelta(days=1)).strftime(DT_SHORT_FORMAT) # monthly to weekly - assert current active one is stil monthly ending end of the week current_statement_settings = StatementSettingsModel.find_active_settings( payment_account.auth_account_id, datetime.today()) assert current_statement_settings is not None assert current_statement_settings.frequency == StatementFrequency.MONTHLY.value assert current_statement_settings.to_date == end_of_month_date.date() # travel to next week and see whats active with freeze_time(end_of_month_date + timedelta(days=2)): next_week_statement_settings = StatementSettingsModel.find_active_settings( payment_account.auth_account_id, datetime.today()) assert next_week_statement_settings is not None assert next_week_statement_settings.frequency == StatementFrequency.WEEKLY.value assert next_week_statement_settings.to_date is None