import cElementTree as et from tgwebservices.iconv import _get_single_value, handle_json_params class Person(object): name = str age = int married = False def test_complex_conversion_simple_class(): tree = et.fromstring("""

Super Value Menu 17 no

""") val = _get_single_value(tree, Person) print val assert isinstance(val, Person) assert val.age == 17 assert val.name == "Super Value Menu" print val.married assert val.married == False class Family1(object): lastname = str members = [str] def test_complex_conversion_with_list(): tree = et.fromstring(""" Brady Mike Carol Greg Peter Bobby Marsha Jan Cindy """) val = _get_single_value(tree, Family1) assert val.lastname == "Brady" print val.members assert len(val.members) == 8 assert val.members[2] == "Greg" class Family2(object): lastname = str members = [Person] def test_complex_with_list_of_instances(): tree = et.fromstring(""" Brady Mike 42 Carol 40 Greg 17 Peter 13 Bobby 8 Marsha 16 Jan 13 Cindy 7 """) val = _get_single_value(tree, Family2) assert val.lastname == "Brady" print val.members assert len(val.members) == 8 def test_list_of_bools(): tree = et.fromstring(""" no false yes False true """) val = _get_single_value(tree, [bool]) print val assert len(val) == 5 def test_json_conversion_of_class(): input_types = {"person" : Person} data = {"person" : {"name" : "Fred", "age" : 99}} kw = handle_json_params(data, input_types) assert isinstance(kw["person"], Person) print kw["person"].age assert kw["person"].age == 99 assert kw["person"].name == "Fred" def test_json_conversion_of_nested_class(): input_types = {"family" : Family2} data = {"family" : {"lastname" : "Brady", "members" : [{"name" : "Mike", "age" : 42}, {"name" : "Carol", "age" : 40}] }} kw = handle_json_params(data, input_types) assert isinstance(kw["family"], Family2) assert len(kw["family"].members) == 2 assert kw["family"].members[0].name == "Mike" assert kw["family"].members[0].age == 42