Skip to content

Commit 2afce3b

Browse files
authored
test: Added test for created_at (#6728)
1 parent 197cf33 commit 2afce3b

File tree

10 files changed

+77
-10
lines changed

10 files changed

+77
-10
lines changed

app/factories/attendee.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ class Meta:
2424
event_id = 1
2525
ticket_id = None
2626
order_id = None
27-
created_at = common.date_
2827
modified_at = common.date_
2928

3029

app/factories/role_invite.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ class Meta:
1414
event = factory.RelatedFactory(EventFactoryBasic)
1515
role = factory.RelatedFactory(RoleFactory)
1616
email = common.email_
17-
created_at = common.date_
1817
hash = common.string_
1918
status = common.string_
2019
role_name = common.string_

app/factories/session.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ class Meta:
2727
audio_url = common.url_
2828
signup_url = common.url_
2929
state = "accepted"
30-
created_at = common.date_
3130
submitted_at = common.date_
3231
is_mail_sent = True
3332
event_id = 1
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import factory
2+
3+
from app.models.user_token_blacklist import UserTokenBlackListTime, db
4+
5+
6+
class UserTokenBlacklistFactory(factory.alchemy.SQLAlchemyModelFactory):
7+
class Meta:
8+
model = UserTokenBlackListTime
9+
sqlalchemy_session = db.session
10+
11+
user_id = 1

app/models/access_code.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from dataclasses import dataclass
22
from datetime import datetime
3-
3+
from sqlalchemy.sql import func
44
from app.models import db
55
from app.models.base import SoftDeletionModel
66

@@ -29,7 +29,7 @@ class AccessCode(SoftDeletionModel):
2929
db.Integer, db.ForeignKey('tickets.id', ondelete='CASCADE')
3030
)
3131
event_id: int = db.Column(db.Integer, db.ForeignKey('events.id', ondelete='CASCADE'))
32-
created_at: datetime = db.Column(db.DateTime(timezone=True))
32+
created_at: datetime = db.Column(db.DateTime(timezone=True), default=func.now())
3333
marketer_id: int = db.Column(
3434
db.Integer, db.ForeignKey('users.id', ondelete='CASCADE')
3535
)

app/models/discount_code.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from datetime import datetime
2-
2+
from sqlalchemy.sql import func
33
from app.models import db
44
from app.models.base import SoftDeletionModel
55

@@ -23,7 +23,7 @@ class DiscountCode(SoftDeletionModel):
2323
valid_till = db.Column(db.DateTime(timezone=True), nullable=True)
2424
event_id = db.Column(db.Integer, db.ForeignKey('events.id', ondelete='CASCADE'))
2525
event = db.relationship('Event', backref='discount_codes', foreign_keys=[event_id])
26-
created_at = db.Column(db.DateTime(timezone=True))
26+
created_at = db.Column(db.DateTime(timezone=True), default=func.now())
2727
marketer_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'))
2828
marketer = db.relationship('User', backref='discount_codes_')
2929

app/models/role_invite.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import random
22
from datetime import datetime, timedelta
3-
3+
from sqlalchemy.sql import func
44
import pytz
55
from sqlalchemy.schema import UniqueConstraint
66

@@ -31,7 +31,7 @@ class RoleInvite(SoftDeletionModel):
3131
role = db.relationship("Role")
3232

3333
hash = db.Column(db.String)
34-
created_at = db.Column(db.DateTime(timezone=True))
34+
created_at = db.Column(db.DateTime(timezone=True), default=func.now())
3535
status = db.Column(db.String, default="pending")
3636

3737
def __init__(

tests/all/integration/api/helpers/test_csv_jobs_util.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def test_export_sessions_with_details_csv(self):
6565
long_abstract='long_abstract',
6666
comments='comment',
6767
level='level',
68+
created_at=common.date_,
6869
)
6970
db.session.commit()
7071
field_data = export_sessions_csv([test_session])

tests/all/integration/api/helpers/test_scheduled_jobs.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
delete_ticket_holders_no_order_id,
55
event_invoices_mark_due,
66
)
7+
import app.factories.common as common
78
from app.factories.attendee import AttendeeFactory
89
from app.factories.event_invoice import EventInvoiceFactory
910
from app.models import db
@@ -39,7 +40,7 @@ def test_delete_ticket_holders_with_no_order_id(self):
3940
"""Method to test deleting ticket holders with no order id after expiry time"""
4041

4142
with self.app.test_request_context():
42-
attendee = AttendeeFactory()
43+
attendee = AttendeeFactory(created_at=common.date_)
4344
db.session.commit()
4445
attendee_id = attendee.id
4546
delete_ticket_holders_no_order_id()
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import unittest
2+
from app.models import db
3+
from datetime import datetime, timedelta, timezone
4+
from app.factories.session import SessionFactory
5+
from app.factories.user import UserFactory
6+
from app.factories.event import EventFactoryBasic
7+
from app.factories.access_code import AccessCodeFactory
8+
from app.factories.event_invoice import EventInvoiceFactory
9+
from app.factories.attendee import AttendeeFactory
10+
from app.factories.discount_code import DiscountCodeFactory
11+
from app.factories.order import OrderFactory
12+
from app.factories.role_invite import RoleInviteFactory
13+
from app.factories.user_token_blacklist import UserTokenBlacklistFactory
14+
from tests.all.integration.utils import OpenEventTestCase
15+
16+
17+
class TestCreatedatValidation(OpenEventTestCase):
18+
def test_createdat(self):
19+
""" Validate time : Tests if created_at is set to current time in all models
20+
"""
21+
with self.app.test_request_context():
22+
model_factories = [
23+
UserFactory,
24+
EventInvoiceFactory,
25+
AccessCodeFactory,
26+
EventFactoryBasic,
27+
OrderFactory,
28+
RoleInviteFactory,
29+
DiscountCodeFactory,
30+
AttendeeFactory,
31+
SessionFactory,
32+
UserTokenBlacklistFactory,
33+
]
34+
models_with_utcnow = [
35+
AttendeeFactory,
36+
DiscountCodeFactory,
37+
EventInvoiceFactory,
38+
]
39+
for model_factory in model_factories:
40+
with self.subTest(model_factory=model_factory):
41+
test_model = model_factory()
42+
db.session.commit()
43+
if model_factory in models_with_utcnow:
44+
current_time = datetime.utcnow().astimezone()
45+
else:
46+
current_time = datetime.now(timezone.utc).astimezone()
47+
createdat_db = test_model.created_at
48+
time_diff = current_time - createdat_db
49+
allowed_time_lag = timedelta(milliseconds=250)
50+
message = "created_at not set" " to current time in {} \n".format(
51+
model_factory
52+
)
53+
self.assertLessEqual(time_diff, allowed_time_lag, message)
54+
55+
56+
if __name__ == "__main__":
57+
unittest.main()

0 commit comments

Comments
 (0)