def test_lookup(self, dt_mock, M): dt_mock.datetime.utcnow.side_effect = [ dt.datetime(2015, 02, 05, 11, 32), dt.datetime(2015, 02, 05, 11, 34), ] ret = M.Neighborhood.query.get.return_value cache = NeighborhoodCache(30) assert_equal(cache._data, {}) n = cache._lookup('/p/') M.Neighborhood.query.get.assert_called_once_with(url_prefix='/p/') assert_equal(n, ret) assert_equal(cache._data, { '/p/': { 'object': ret, 'ts': dt.datetime(2015, 02, 05, 11, 32), } }) # hits mongo every time n = cache._lookup('/p/') assert_equal(M.Neighborhood.query.get.call_count, 2) assert_equal(n, ret) assert_equal(cache._data, { '/p/': { 'object': ret, 'ts': dt.datetime(2015, 02, 05, 11, 34), } })
def test_lookup(self, dt_mock, M): dt_mock.datetime.utcnow.side_effect = [ dt.datetime(2015, 02, 05, 11, 32), dt.datetime(2015, 02, 05, 11, 34), ] ret = M.Neighborhood.query.get.return_value cache = NeighborhoodCache(30) assert_equal(cache._data, {}) n = cache._lookup('/p/') M.Neighborhood.query.get.assert_called_once_with(url_prefix='/p/') assert_equal(n, ret) assert_equal(cache._data, {'/p/': { 'object': ret, 'ts': dt.datetime(2015, 02, 05, 11, 32), }}) # hits mongo every time n = cache._lookup('/p/') assert_equal(M.Neighborhood.query.get.call_count, 2) assert_equal(n, ret) assert_equal(cache._data, {'/p/': { 'object': ret, 'ts': dt.datetime(2015, 02, 05, 11, 34), }})
def test_expired(self, dt_mock): dt_mock.timedelta = dt.timedelta # restore original _now = dt.datetime(2015, 02, 05, 11, 53) dt_mock.datetime.utcnow.return_value = _now cache = NeighborhoodCache(0) assert_equal(cache._expired({'ts': _now}), True) assert_equal(cache._expired({'ts': _now - dt.timedelta(seconds=1)}), True) cache = NeighborhoodCache(30) assert_equal(cache._expired({'ts': _now - dt.timedelta(seconds=29)}), False) assert_equal(cache._expired({'ts': _now - dt.timedelta(seconds=30)}), True)
def test_get(self, dt_mock, M): dt_mock.datetime.utcnow.side_effect = [ dt.datetime(2015, 02, 05, 11, 32), dt.datetime(2015, 02, 05, 11, 34), ] ret = M.Neighborhood.query.get.return_value cache = NeighborhoodCache(30) cache._expired = Mock(return_value=False) n = cache.get('/p/') M.Neighborhood.query.get.assert_called_once_with(url_prefix='/p/') assert_equal(n, ret) # don't hit mongo second time n = cache.get('/p/') assert_equal(M.Neighborhood.query.get.call_count, 1) assert_equal(n, ret) # and hits if cache is expired cache._expired.return_value = True n = cache.get('/p/') assert_equal(M.Neighborhood.query.get.call_count, 2) assert_equal(n, ret)