def test_get_value_indexable_object(self): class Test(object): def __init__(self, value): self.value = value def __getitem__(self, n): if type(n) is int: if n < 3: return n raise IndexError raise TypeError obj = Test("hi") assert fields.get_value("value", obj) == "hi"
def test_get_value_obj(self, mocker): assert fields.get_value("foo", mocker.Mock(foo=42)) == 42
def test_get_value_int_indexable_nested_tuple(self): assert fields.get_value('bar.0.val', {'bar': [{'val': 42}]}) == 42
def test_get_value_no_value(self): assert fields.get_value("foo", {"foo": 42}) == 42
def test_get_value_int_indexable_tuple(self): assert fields.get_value('bar.0', {'bar': (42, 43)}) == 42
def test_get_value_int_indexable_tuple_with_str(self): assert fields.get_value('bar.abc', {'bar': (42, 43)}) is None
def test_get_value_int_indexable_list_with_str(self): assert fields.get_value('bar.abc', {'bar': [42]}) is None
def test_get_value_int_indexable_list(self): assert fields.get_value('bar.0', {'bar': [42]}) == 42
def test_get_value(self): assert fields.get_value('foo', {'foo': 42}) == 42