def test_pruning_instance_flush(self, session): cache = M.repository.ModelCache(max_queries=3, max_instances=2) # ensure cache doesn't store None instances tree1 = mock.Mock(spec=['_id', '_val'], _id='tree1', val='bar') tree2 = mock.Mock(spec=['_id', '_val'], _id='tree2', val='fuz') tree3 = mock.Mock(spec=['_id', '_val'], _id='tree3', val='qux') cache.set(M.repository.Tree, {'_id': 'tree1'}, tree1) cache.set(M.repository.Tree, {'_id': 'tree2'}, tree2) cache.set(M.repository.Tree, {'_id': 'tree3'}, tree3) self.assertEqual(cache._query_cache[M.repository.Tree], { (('_id', 'tree1'),): 'tree1', (('_id', 'tree2'),): 'tree2', (('_id', 'tree3'),): 'tree3', }) self.assertEqual(cache._instance_cache[M.repository.Tree], { 'tree2': tree2, 'tree3': tree3, }) session.assert_called_once_with(tree1) session.return_value.flush.assert_called_once_with(tree1) session.return_value.expunge.assert_called_once_with(tree1)