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