make sure we update both statuses when updating notification history

This commit is contained in:
Leo Hemsted
2017-05-09 11:09:16 +01:00
parent 7e52fa4d13
commit 4ff4717fdf
2 changed files with 24 additions and 7 deletions

View File

@@ -895,6 +895,10 @@ class NotificationHistory(db.Model, HistoryModel):
history.status = notification.status
return history
def update_from_original(self, original):
super().update_from_original(original)
self.status = original.status
@hybrid_property
def status(self):
return self._status_enum

View File

@@ -839,22 +839,35 @@ def test_update_notification(sample_notification):
def test_update_notification_with_no_notification_status(sample_notification):
# specifically, it has an old enum status, but not a new status (because the upgrade script has just run)
sample_notification._status_fkey = None
sample_notification._enum_status = 'created'
dao_update_notification(sample_notification)
assert sample_notification.status == 'created'
assert sample_notification._enum_status == 'created'
assert sample_notification._status_fkey == None
update_dict = {'_status_enum': 'created', '_status_fkey': None}
Notification.query.filter(Notification.id == sample_notification.id).update(update_dict)
# now lets update the status to failed - both columns should now be populated
sample_notification.status = 'failed'
dao_update_notification(sample_notification)
notification_from_db = Notification.query.get(sample_notification.id)
assert notification_from_db.status == 'failed'
assert notification_from_db._status_enum == 'failed'
assert notification_from_db._status_fkey == 'failed'
def test_updating_notification_with_no_notification_status_updates_notification_history(sample_notification):
# same as above, but with notification history
update_dict = {'_status_enum': 'created', '_status_fkey': None}
Notification.query.filter(Notification.id == sample_notification.id).update(update_dict)
NotificationHistory.query.filter(NotificationHistory.id == sample_notification.id).update(update_dict)
# now lets update the notification's status to failed - both columns should now be populated on the history object
sample_notification.status = 'failed'
dao_update_notification(sample_notification)
hist_from_db = NotificationHistory.query.get(sample_notification.id)
assert hist_from_db.status == 'failed'
assert hist_from_db._status_enum == 'failed'
assert hist_from_db._status_fkey == 'failed'
@freeze_time("2016-01-10 12:00:00.000000")
def test_should_delete_notifications_after_seven_days(notify_db, notify_db_session):
assert len(Notification.query.all()) == 0