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)