Skip to content

Commit 20ebf9d

Browse files
committed
fix: Fixed cron job and added tests - EVent Invoice Due Marking
1 parent e35f8f1 commit 20ebf9d

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

app/api/helpers/scheduled_jobs.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import pytz
44
from dateutil.relativedelta import relativedelta
55
from flask import render_template
6+
from sqlalchemy import update
67

78
from app.api.helpers.db import safe_query, save_to_db
89
from app.api.helpers.mail import send_email_after_event, send_email_for_monthly_fee_payment, \
@@ -164,12 +165,12 @@ def expire_pending_tickets():
164165
def event_invoices_mark_due():
165166
from app import current_app as app
166167
with app.app_context():
167-
db.session.query(EventInvoice).\
168+
db.session.query(EventInvoice).join(Event).\
168169
filter(EventInvoice.status == 'upcoming',
169-
EventInvoice.event.ends_at >= datetime.datetime.now(),
170+
Event.ends_at >= datetime.datetime.now(),
170171
(EventInvoice.created_at + datetime.timedelta(days=30) <=
171172
datetime.datetime.now())).\
172-
update({'status': 'due'})
173+
update({'status': 'due'}, synchronize_session=False)
173174

174175
db.session.commit()
175176

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import unittest
2+
import datetime
3+
4+
from app import current_app as app, db
5+
from app.factories.event_invoice import EventInvoiceFactory
6+
from app.api.helpers.db import save_to_db
7+
from app.models.event_invoice import EventInvoice
8+
from app.factories.event import EventFactoryBasic
9+
from app.api.helpers.scheduled_jobs import event_invoices_mark_due
10+
11+
from tests.all.integration.setup_database import Setup
12+
from tests.all.integration.utils import OpenEventTestCase
13+
14+
15+
class TestScheduledJobs(OpenEventTestCase):
16+
def setUp(self):
17+
self.app = Setup.create_app()
18+
19+
def test_event_invoices_mark_due(self):
20+
"""Method to test marking of event invoices as due"""
21+
22+
with app.test_request_context():
23+
event_invoice_obj = EventInvoiceFactory(event__ends_at=datetime.datetime(2019, 7, 20))
24+
save_to_db(event_invoice_obj)
25+
event_invoices_mark_due()
26+
status = db.session.query(EventInvoice).\
27+
filter(EventInvoice.id == event_invoice_obj.id).first().status
28+
self.assertEqual(status, "due")
29+
30+
31+
if __name__ == '__main__':
32+
unittest.main()

0 commit comments

Comments
 (0)