From c4f6b60cda9d1d6acdc85d7997f15660340b0c34 Mon Sep 17 00:00:00 2001 From: Rob Young Date: Sat, 24 May 2014 17:16:34 +0100 Subject: [PATCH] Set '_updated_at' when a record is saved The '_updated_at' should when the record was last updated. This was missed in the earlier save work. --- backdrop/core/storage/mongo.py | 2 +- tests/core/storage/test_mongo.py | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/backdrop/core/storage/mongo.py b/backdrop/core/storage/mongo.py index d10ec1e0..ac362a3c 100644 --- a/backdrop/core/storage/mongo.py +++ b/backdrop/core/storage/mongo.py @@ -8,7 +8,6 @@ from bson import Code from .. import timeutils -from ... import statsd logger = logging.getLogger(__name__) @@ -83,4 +82,5 @@ def empty(self, data_set_id): self._coll(data_set_id).remove({}) def save(self, data_set_id, record): + record['_updated_at'] = timeutils.now() self._coll(data_set_id).save(record) diff --git a/tests/core/storage/test_mongo.py b/tests/core/storage/test_mongo.py index be0cdf10..5254abe6 100644 --- a/tests/core/storage/test_mongo.py +++ b/tests/core/storage/test_mongo.py @@ -5,7 +5,10 @@ amount of setup and mocking. Small unit tests are in doctest format in the module itself. """ -from hamcrest import assert_that, is_, has_item, has_entries, is_not +import datetime + +from hamcrest import assert_that, is_, has_item, has_entries, is_not, \ + has_entry, instance_of from nose.tools import assert_raises from mock import Mock @@ -26,6 +29,9 @@ def setup(self): def teardown(self): self.mongo.drop_database('backdrop_test') + def _save(self, dataset_id, **kwargs): + self.db[dataset_id].save(kwargs) + # ALIVE def test_alive_returns_true_if_mongo_is_up(self): assert_that(self.engine.alive(), is_(True)) @@ -69,9 +75,6 @@ def test_create_fails_if_collection_already_exists(self): assert_raises(CollectionInvalid, self.engine.create_dataset, 'foo_bar', 0) - def _save(self, dataset_id, **kwargs): - self.db[dataset_id].save(kwargs) - # GET LAST UPDATED def test_get_last_udpated(self): self._save('foo_bar', _id='first', _updated_at=d_tz(2013, 3, 1)) @@ -101,6 +104,12 @@ def test_save_a_record(self): assert_that(self.db['foo_bar'].count(), is_(1)) + def test_save_a_record_adds_an_updated_at(self): + self.engine.save('foo_bar', {'_id': 'first'}) + + assert_that(self.db['foo_bar'].find_one(), + has_entry('_updated_at', instance_of(datetime.datetime))) + class TestReconnectingSave(object): def test_reconnecting_save_retries(self):