def test_write_conflict(self): initial = ChangeRevFakeModelDB(name=uuid.uuid4().hex, context={'a': 1}) # Prep record created = self.access.add_or_update(initial) self.assertEqual(initial.rev, 1) doc_id = created.id # Get two separate instances of the document. retrieved1 = self.access.get_by_id(doc_id) retrieved2 = self.access.get_by_id(doc_id) # Test update on instance 1, expect success retrieved1 = self.access.update(retrieved1, context={'a': 2}) updated = self.access.get_by_id(doc_id) self.assertNotEqual(created.rev, updated.rev) self.assertEqual(retrieved1.rev, updated.rev) self.assertDictEqual(retrieved1.context, updated.context) # Test update on instance 2, expect race error self.assertRaises(db_exc.StackStormDBObjectWriteConflictError, self.access.update, retrieved2, context={ 'a': 1, 'b': 2 })
def test_crud(self): initial = ChangeRevFakeModelDB(name=uuid.uuid4().hex, context={'a': 1}) # Test create created = self.access.add_or_update(initial) self.assertEqual(initial.rev, 1) doc_id = created.id # Test read retrieved = self.access.get_by_id(doc_id) self.assertDictEqual(created.context, retrieved.context) # Test update retrieved = self.access.update(retrieved, context={'a': 2}) updated = self.access.get_by_id(doc_id) self.assertNotEqual(created.rev, updated.rev) self.assertEqual(retrieved.rev, updated.rev) self.assertDictEqual(retrieved.context, updated.context) # Test add or update retrieved.context = {'a': 1, 'b': 2} retrieved = self.access.add_or_update(retrieved) updated = self.access.get_by_id(doc_id) self.assertNotEqual(created.rev, updated.rev) self.assertEqual(retrieved.rev, updated.rev) self.assertDictEqual(retrieved.context, updated.context) # Test delete created.delete() self.assertRaises(db_exc.StackStormDBObjectNotFoundError, self.access.get_by_id, doc_id)
def tearDown(self): ChangeRevFakeModelDB.drop_collection() super(TestChangeRevision, self).tearDown()