def test_proxy_setitem_to_data_dict(self): model = self.ModelTest(a=1) model.set({'b': 2, 'c': 3}) self.assertEqual(model._data, {'a': 1, 'b': 2, 'c': 3}) model.set({'c': 4}) self.assertEqual(model._data['c'], 4) self.assertEqual(model.c, 4)
def test_get(self): model = self.ModelTest() model.set(a=1) self.assertEqual(model.get('a'), 1) self.assertEqual(model.a, 1) model._data['a'] = 2 self.assertEqual(model.get('a'), 2) self.assertIs(model.get('b'), None) with self.assertRaises(AttributeError): model.b
def test_update(self): model = self.ModelTest(a=1, b=2) model.upsert() retrieved_model = self.ModelTest.collection.find_one({'a': 1}) self.assertEqual(retrieved_model['b'], model.b) model.set(b=4) model.upsert() self.assertEqual(self.ModelTest.collection.find({'a': 1}).count(), 1) retrieved_model = self.ModelTest.collection.find_one({'a': 1}) self.assertEqual(retrieved_model['b'], 4) self.assertEqual(retrieved_model['_id'], model._id)
def test_partial_update(self): model = self.ModelTest(a=1, b=2, c=3) model.upsert() retrieved_doc = self.ModelTest.collection.find_one( {'a': 1, 'b': 2, 'c': 3}) _id = retrieved_doc['_id'] model = self.ModelTest({'_id': _id}) model.set(a=5) model.set(b=6) self.assertNotIn('c', model._data) model.upsert() retrieved_doc = self.ModelTest.collection.find_one({'_id': _id}) self.assertEqual(retrieved_doc, {'a': 5, 'b': 6, 'c': 3, '_id': _id})
def test_set(self): model = self.ModelTest() with self.assertRaises(ValueError): model.set() model.set({'a': 1}) model2 = self.ModelTest() model2.set(a=1) self.assertEqual(model._data, model2._data) model.set({'a': 1, 'b': 2}) self.assertEqual(model.get('a'), 1) self.assertEqual(model._data['b'], 2) self.assertEqual(model._data, {'a': 1, 'b': 2}) model.set(c=3, d=4) self.assertEqual(model.get('c'), 3) self.assertEqual(model.d, 4)
def test_data_property_setter(self): model = self.ModelTest() model.set({'a': 1, 'b': 2, 'c': 3}) self.assertEqual(model._data, {'a': 1, 'b': 2, 'c': 3}) model.set({'a': 2, 'd': 4}) self.assertEqual(model._data, {'a': 2, 'b': 2, 'c': 3, 'd': 4})
def test_data_property_getter(self): model = self.ModelTest({'a': 1}, b=2) model.set({'c': 3}) self.assertEqual(model._data, {'a': 1, 'b': 2, 'c': 3}) self.assertEqual(model.get('a'), 1) self.assertEqual(model.b, 2)