def test_get(self): record = MockJsonRecord({ "age": 5, "children": [{ "name": "foo" }, { "name": "bar" }], "name": "case1", }) # test valid field selectors fs = FieldSelector(["name"]) self.assertEqual(fs.get(record), "case1") fs = FieldSelector(["age"]) self.assertEqual(fs.get(record), 5) fs = FieldSelector(["children"]) self.assertEqual(len(fs.get(record)), 2) fs = FieldSelector(["children", 1]) self.assertEqual(fs.get(record).name, "bar") self.assertEqual(fs.get(record), MockChildRecord({"name": "bar"})) fs = FieldSelector(["children", 1, "name"]) self.assertEqual(fs.get(record), "bar") fs = FieldSelector(["children", None, "name"]) self.assertEqual(fs.get(record), ["foo", "bar"]) # test invalid selectors fs = FieldSelector(["bad_name"]) # bad property name with self.assertRaisesRegexp( FieldSelectorException, "Could not find property specified " "by name: bad_name"): fs.get(record) self.assertIsNone(fs.get_or_none(record)) fs = FieldSelector(["children", 10]) # bad index with self.assertRaisesRegexp( FieldSelectorException, "Could not find Record specified by " "index: 10"): fs.get(record) self.assertIsNone(fs.get_or_none(record)) # bad nested property name fs = FieldSelector(["children", 1, "bad_name"]) with self.assertRaisesRegexp( FieldSelectorException, "Could not find property specified " "by name: bad_name"): fs.get(record) self.assertIsNone(fs.get_or_none(record)) # bad property name fs = FieldSelector(["bad_name"]) with self.assertRaises(AttributeError): fs.get(record) self.assertIsNone(fs.get_or_none(record)) # bad index fs = FieldSelector(["children", 10]) with self.assertRaises(KeyError): fs.get(record) # bad nested property name fs = FieldSelector(["children", 1, "bad_name"], ) with self.assertRaises(AttributeError): fs.get(record) self.assertIsNone(fs.get_or_none(record))
def test_get(self): record = MockJsonRecord( { "age": 5, "children": [{"name": "foo"}, {"name": "bar"}], "name": "case1", } ) # test valid field selectors fs = FieldSelector(["name"]) self.assertEqual(fs.get(record), "case1") fs = FieldSelector(["age"]) self.assertEqual(fs.get(record), 5) fs = FieldSelector(["children"]) self.assertEqual(len(fs.get(record)), 2) fs = FieldSelector(["children", 1]) self.assertEqual(fs.get(record).name, "bar") self.assertEqual(fs.get(record), MockChildRecord({"name": "bar"})) fs = FieldSelector(["children", 1, "name"]) self.assertEqual(fs.get(record), "bar") fs = FieldSelector(["children", None, "name"]) self.assertEqual(fs.get(record), ["foo", "bar"]) # test invalid selectors fs = FieldSelector(["bad_name"]) # bad property name with self.assertRaisesRegexp( FieldSelectorException, "Could not find property specified " "by name: bad_name" ): fs.get(record) self.assertIsNone(fs.get_or_none(record)) fs = FieldSelector(["children", 10]) # bad index with self.assertRaisesRegexp( FieldSelectorException, "Could not find Record specified by " "index: 10" ): fs.get(record) self.assertIsNone(fs.get_or_none(record)) # bad nested property name fs = FieldSelector(["children", 1, "bad_name"]) with self.assertRaisesRegexp( FieldSelectorException, "Could not find property specified " "by name: bad_name" ): fs.get(record) self.assertIsNone(fs.get_or_none(record)) # bad property name fs = FieldSelector(["bad_name"]) with self.assertRaises(AttributeError): fs.get(record) self.assertIsNone(fs.get_or_none(record)) # bad index fs = FieldSelector(["children", 10]) with self.assertRaises(KeyError): fs.get(record) # bad nested property name fs = FieldSelector( ["children", 1, "bad_name"], ) with self.assertRaises(AttributeError): fs.get(record) self.assertIsNone(fs.get_or_none(record))