mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-03 01:41:05 -05:00
Changed reported_at to a date and included audit columns.
This commit is contained in:
@@ -23,19 +23,21 @@ def _get_notification_ids_for_references(references):
|
||||
@transactional
|
||||
def insert_or_update_returned_letters(references):
|
||||
data = _get_notification_ids_for_references(references)
|
||||
now = datetime.utcnow()
|
||||
for row in data:
|
||||
table = ReturnedLetter.__table__
|
||||
|
||||
stmt = insert(table).values(
|
||||
reported_at=now,
|
||||
reported_at=datetime.utcnow().date(),
|
||||
service_id=row.service_id,
|
||||
notification_id=row.id)
|
||||
notification_id=row.id,
|
||||
created_at=datetime.utcnow()
|
||||
)
|
||||
|
||||
stmt = stmt.on_conflict_do_update(
|
||||
index_elements=[table.c.notification_id],
|
||||
set_={
|
||||
'reported_at': now,
|
||||
'reported_at': datetime.utcnow().date(),
|
||||
'updated_at': datetime.utcnow()
|
||||
}
|
||||
)
|
||||
db.session.connection().execute(stmt)
|
||||
|
||||
@@ -2076,7 +2076,9 @@ class ReturnedLetter(db.Model):
|
||||
__tablename__ = 'returned_letters'
|
||||
|
||||
id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
||||
reported_at = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow)
|
||||
reported_at = db.Column(db.Date, nullable=False)
|
||||
service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'), unique=False, index=True, nullable=False)
|
||||
service = db.relationship(Service, backref=db.backref('returned_letters'))
|
||||
notification_id = db.Column(UUID(as_uuid=True), unique=True, nullable=False)
|
||||
created_at = db.Column(db.DateTime, nullable=False)
|
||||
updated_at = db.Column(db.DateTime, nullable=True, onupdate=datetime.datetime.utcnow)
|
||||
|
||||
@@ -16,9 +16,11 @@ down_revision = '0309_add_uq_key_row_number'
|
||||
def upgrade():
|
||||
op.create_table('returned_letters',
|
||||
sa.Column('id', postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column('reported_at', sa.DateTime(), nullable=False),
|
||||
sa.Column('reported_at', sa.Date(), nullable=False),
|
||||
sa.Column('service_id', postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column('notification_id', postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(), nullable=False),
|
||||
sa.Column('updated_at', sa.DateTime(), nullable=True),
|
||||
sa.ForeignKeyConstraint(['service_id'], ['services.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('notification_id')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import datetime, timedelta, date
|
||||
|
||||
from freezegun import freeze_time
|
||||
|
||||
@@ -37,16 +37,19 @@ def test_insert_or_update_returned_letters_updates(sample_letter_template):
|
||||
returned_letters = ReturnedLetter.query.all()
|
||||
assert len(returned_letters) == 2
|
||||
for x in returned_letters:
|
||||
assert x.reported_at == datetime(2019, 12, 9, 13, 30)
|
||||
assert x.reported_at == date(2019, 12, 9)
|
||||
assert x.created_at == datetime(2019, 12, 9, 13, 30)
|
||||
assert not x.updated_at
|
||||
assert x.notification_id in [notification.id, history.id]
|
||||
|
||||
with freeze_time('2019-12-10 14:20'):
|
||||
insert_or_update_returned_letters(['ref1', 'ref2'])
|
||||
|
||||
returned_letters = ReturnedLetter.query.all()
|
||||
assert len(returned_letters) == 2
|
||||
for x in returned_letters:
|
||||
assert x.reported_at == datetime(2019, 12, 10, 14, 20)
|
||||
assert x.reported_at == date(2019, 12, 10)
|
||||
assert x.created_at == datetime(2019, 12, 9, 13, 30)
|
||||
assert x.updated_at == datetime(2019, 12, 10, 14, 20)
|
||||
assert x.notification_id in [notification.id, history.id]
|
||||
|
||||
|
||||
@@ -93,7 +96,7 @@ def test_get_returned_letter_summary(sample_service):
|
||||
assert len(results) == 1
|
||||
|
||||
assert results[0].returned_letter_count == 2
|
||||
assert results[0].reported_at == now
|
||||
assert results[0].reported_at == now.date()
|
||||
|
||||
|
||||
def test_get_returned_letter_summary_orders_by_reported_at(sample_service):
|
||||
@@ -109,7 +112,7 @@ def test_get_returned_letter_summary_orders_by_reported_at(sample_service):
|
||||
results = get_returned_letter_summary(sample_service.id)
|
||||
|
||||
assert len(results) == 2
|
||||
assert results[0].reported_at == now
|
||||
assert results[0].reported_at == now.date()
|
||||
assert results[0].returned_letter_count == 3
|
||||
assert results[1].reported_at == last_month
|
||||
assert results[1].reported_at == last_month.date()
|
||||
assert results[1].returned_letter_count == 2
|
||||
|
||||
@@ -952,7 +952,8 @@ def create_returned_letter(service=None, reported_at=None):
|
||||
returned_letter = ReturnedLetter(
|
||||
service_id=service.id,
|
||||
reported_at=reported_at or datetime.utcnow(),
|
||||
notification_id=notification.id
|
||||
notification_id=notification.id,
|
||||
created_at=datetime.utcnow(),
|
||||
)
|
||||
|
||||
db.session.add(returned_letter)
|
||||
|
||||
Reference in New Issue
Block a user