def test_post(self): record = MockComplexJsonRecord() fs = FieldSelector(["name"]) fs.post(record, "Bobby") self.assertEqual(record.name, "Bobby") fs = FieldSelector(["children", 0, "name"]) fs.post(record, "Johnny") self.assertEqual(record.children[0].name, "Johnny") # Test addition to collection fs = FieldSelector(["children", 1, "name"]) fs.post(record, "Susan") self.assertEqual(record.children[1].name, "Susan") # Test invalid addition to collection fs = FieldSelector(["children", 9999, "name"]) with self.assertRaisesRegexp(ValueError, "FieldSelector set out of order"): fs.post(record, "Joker") # Test create of sub-Record fs = FieldSelector(["nested", "name"]) fs.put(record, "Nested") self.assertEqual(record.nested.name, "Nested")
def test_post(self): record = MockComplexJsonRecord() fs = FieldSelector(["name"]) fs.post(record, "Bobby") self.assertEqual(record.name, "Bobby") fs = FieldSelector(["children", 0, "name"]) fs.post(record, "Johnny") self.assertEqual(record.children[0].name, "Johnny") # Test addition to collection fs = FieldSelector(["children", 1, "name"]) fs.post(record, "Susan") self.assertEqual(record.children[1].name, "Susan") # Test invalid addition to collection fs = FieldSelector(["children", 9999, "name"]) with self.assertRaisesRegexp( ValueError, "FieldSelector set out of order" ): fs.post(record, "Joker") # Test create of sub-Record fs = FieldSelector(["nested", "name"]) fs.put(record, "Nested") self.assertEqual(record.nested.name, "Nested")
def test_delete(self): class MyObj(Record): foo = Property() bar = Property() class OtherObj(Record): objs = ListProperty(of=MyObj) mo = MyObj(foo="bar") fs1 = FieldSelector(["foo"]) self.assertEqual(fs1.get(mo), "bar") fs1.delete(mo) self.assertRaises(AttributeError, fs1.get, mo) oo = OtherObj(objs=[{"foo": "bar"}, {"foo": "frop"}]) fs2 = FieldSelector(["objs", 0, "foo"]) self.assertEqual(fs2.get(oo), "bar") fs2.delete(oo) self.assertRaises(AttributeError, fs2.get, mo) fs2.put(oo, "hey") fs3 = FieldSelector(["objs", None, "foo"]) self.assertEqual(fs3.get(oo), ["hey", "frop"]) fs3.delete(oo) self.assertEqual(oo, OtherObj(objs=[{}, {}])) oo = OtherObj(objs=[{"foo": "baz"}, {"bar": "quux"}]) self.assertEqual(fs3.get(oo), ["baz", None]) fs3.delete(oo) self.assertEqual(oo, OtherObj(objs=[{}, {"bar": "quux"}])) fs4 = FieldSelector(["objs", None, "bar", "foo"]) self.assertRaises(FieldSelectorException, fs4.get, oo) oo = OtherObj(objs=[{"foo": "baz"}, {"bar": MyObj(foo="bob")}]) self.assertEqual(fs4.get(oo), [None, "bob"]) fs4.delete(oo) self.assertRaises(FieldSelectorException, fs4.get, oo) fs5 = FieldSelector(["objs", 1]) fs5.delete(oo) self.assertEqual(oo, OtherObj(objs=[{"foo": "baz"}])) fs6 = FieldSelector(["objs", None]) fs6.delete(oo) self.assertEqual(oo, OtherObj(objs=[]))
def test_put(self): record = MockJsonRecord() # Test invalid FieldSelector fs = FieldSelector(["name"]) fs.put(record, "pass") # self.assertEqual(record.raw_data, {"children": [], 'name': 'pass'}) record = MockComplexJsonRecord() # Test creation of attribute fs = FieldSelector(["name"]) fs.put(record, "Bobby") self.assertEqual(record.name, "Bobby") # Test creation of collection and sub-Record fs = FieldSelector(["children", 0, "name"]) with self.assertRaises(FieldSelectorException): fs.put(record, "Johnny")