def test_load_element_max(): test_xml = ''' <test:MinMaxElementFixture xmlns:test="http://jaymes.biz/test"> <test:min>test1</test:min> <test:min>test2</test:min> <test:min>test3</test:min> <test:max>test4</test:max> <test:max>test5</test:max> </test:MinMaxElementFixture> ''' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, MinMaxElementFixture) assert hasattr(model, 'max') assert isinstance(model.max, list) assert len(model.max) == 2 assert model.max[0].get_value() == 'test4' assert model.max[1].get_value() == 'test5' with pytest.raises(MaximumElementException): test_xml = ''' <test:MinMaxElementFixture xmlns:test="http://jaymes.biz/test"> <test:min>test1</test:min> <test:min>test2</test:min> <test:min>test3</test:min> <test:max>test4</test:max> <test:max>test5</test:max> <test:max>test6</test:max> </test:MinMaxElementFixture> ''' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element)
def test_load_attribute_required(): test_xml = '<test:RequiredAttributeFixture xmlns:test="http://jaymes.biz/test" required_attribute="test"/>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, RequiredAttributeFixture) assert hasattr(model, 'required_attribute') assert model.required_attribute == 'test' with pytest.raises(RequiredAttributeException): test_xml = '<test:RequiredAttributeFixture xmlns:test="http://jaymes.biz/test"/>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element)
def test_is_nil(): test_xml = '<test:RootFixture xmlns:test="http://jaymes.biz/test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert model.get_value() is None assert model.is_nil()
def test_load_element_dict_value_class(): test_xml = ''' <test:DictElementFixture xmlns:test="http://jaymes.biz/test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <test:dict_value_class id="test1" tag="blue">text1</test:dict_value_class> <test:dict_value_class id="test2" tag="red">text2</test:dict_value_class> </test:DictElementFixture> ''' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, DictElementFixture) assert hasattr(model, 'dict_value_class') assert len(model.dict_value_class) == 2 assert 'test1' in model.dict_value_class assert isinstance(model.dict_value_class['test1'], DictValueElementFixture) assert model.dict_value_class['test1'].id == 'test1' assert model.dict_value_class['test1'].tag == 'blue' assert model.dict_value_class['test1'].get_value() == 'text1' assert 'test2' in model.dict_value_class assert isinstance(model.dict_value_class['test2'], DictValueElementFixture) assert model.dict_value_class['test2'].id == 'test2' assert model.dict_value_class['test2'].tag == 'red' assert model.dict_value_class['test2'].get_value() == 'text2'
def test_load_element_wildcard_in(): test_xml = ''' <test:WildcardElementInFixture xmlns:test2="http://jaymes.biz/test2" xmlns:test="http://jaymes.biz/test"> <test:wildcard_element>test1</test:wildcard_element> <test2:wildcard_element>test2</test2:wildcard_element> </test:WildcardElementInFixture> ''' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, WildcardElementInFixture) assert hasattr(model, 'test_elements') assert isinstance(model.test_elements, list) assert len(model.test_elements) == 1 assert hasattr(model, 'elements') assert isinstance(model.elements, list) assert len(model.elements) == 1 assert isinstance(model.test_elements[0], EnclosedFixture) assert model.test_elements[0].get_value() == 'test1' assert isinstance(model.elements[0], EnclosedFixture2) assert model.elements[0].get_value() == 'test2'
def test_in_and_out(): test_xml = '<test:InitFixture xmlns:test="http://jaymes.biz/test">' + \ '<test:list id="test1"/>' + \ '<test:list id="test2"/>' + \ '<test:list id="test3"/>' + \ '<test:dict id="test4"/>' + \ '<test:dict id="test5"/>' + \ '<test:dict id="test6"/>' + \ '<test:dict id="test7"/>' + \ '<test:dict id="test8"/>' + \ '<test:in_test id="test9"/>' + \ '<test:dash-test id="test10"/>' + \ '<test2:wildcard_element xmlns:test2="http://jaymes.biz/test2" id="test11"/>' + \ '<test:wildcard_element id="test12"/>' + \ '<test:dict id="test13"/>' + \ '<test:list id="test14"/>' + \ '</test:InitFixture>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) out_xml = model.produce().produce() print(test_xml) print(out_xml) assert out_xml == test_xml
def test_load_attribute_value_in_enum(): test_xml = '<test:RootFixture xmlns:test="http://jaymes.biz/test"><test:EnumValue>bravo</test:EnumValue></test:RootFixture>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, RootFixture) assert hasattr(model, 'EnumValue') assert model.EnumValue == 'bravo'
def test_load_attribute_no_default(): test_xml = '<test:AttributeFixture xmlns:test="http://jaymes.biz/test"/>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, AttributeFixture) assert hasattr(model, 'in_test') assert model.in_test is None
def test_load_attribute_dash(): test_xml = '<test:AttributeFixture xmlns:test="http://jaymes.biz/test" dash-attribute="test"/>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, AttributeFixture) assert hasattr(model, 'dash_attribute') assert model.dash_attribute == 'test'
def test_load_attribute_value_matches_pattern(): test_xml = '<test:RootFixture xmlns:test="http://jaymes.biz/test"><test:PatternValue>Bravo12</test:PatternValue></test:RootFixture>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, RootFixture) assert hasattr(model, 'PatternValue') assert model.PatternValue == 'Bravo12'
def test_load_root_model(): test_xml = '<test:RootFixture xmlns:test="http://jaymes.biz/test"/>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, RootFixture) with pytest.raises(UnknownNamespaceException): test_xml = '<test:RootFixture xmlns:test="http://jaymes.biz/derp"/>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) with pytest.raises(ElementMappingException): test_xml = '<test:Derp xmlns:test="http://jaymes.biz/test"/>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element)
def test_load_element_dict_value_type(): test_xml = ''' <test:DictElementFixture xmlns:test="http://jaymes.biz/test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <test:dict_value_type id="test1">test1</test:dict_value_type> <test:dict_value_type id="test2">test2</test:dict_value_type> </test:DictElementFixture> ''' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, DictElementFixture) assert hasattr(model, 'dict_value_type') assert len(model.dict_value_type) == 2 assert 'test1' in model.dict_value_type assert model.dict_value_type['test1'] == 'test1' assert 'test2' in model.dict_value_type assert model.dict_value_type['test2'] == 'test2'
def test_load_element_list_nil(): test_xml = ''' <test:ListElementFixture xmlns:test="http://jaymes.biz/test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <test:list_nil xsi:nil="true"/> <test:list_nil>test2</test:list_nil> </test:ListElementFixture> ''' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, ListElementFixture) assert hasattr(model, 'list_nil') assert isinstance(model.list_nil, list) assert len(model.list_nil) == 2 assert model.list_nil[0] is None assert isinstance(model.list_nil[1], EnclosedFixture) assert model.list_nil[1].get_value() == 'test2'
def test_load_element_list_type(): test_xml = ''' <test:ListElementFixture xmlns:test="http://jaymes.biz/test"> <test:list_type>1.1</test:list_type> <test:list_type>1.2</test:list_type> </test:ListElementFixture> ''' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, ListElementFixture) assert hasattr(model, 'list_type') assert isinstance(model.list_type, list) assert len(model.list_type) == 2 assert isinstance(model.list_type[0], float) assert model.list_type[0] == 1.1 assert isinstance(model.list_type[1], float) assert model.list_type[1] == 1.2
def test_load_element_list_class(): test_xml = ''' <test:ListElementFixture xmlns:test="http://jaymes.biz/test"> <test:list_class>test1</test:list_class> <test:list_class>test2</test:list_class> </test:ListElementFixture> ''' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert isinstance(model, ListElementFixture) assert hasattr(model, 'list_class') assert isinstance(model.list_class, list) assert len(model.list_class) == 2 assert isinstance(model.list_class[0], EnclosedFixture) assert model.list_class[0].get_value() == 'test1' assert isinstance(model.list_class[1], EnclosedFixture) assert model.list_class[1].get_value() == 'test2'
def test_load_attribute_value_not_matches_pattern(): with pytest.raises(PatternException): test_xml = '<test:RootFixture xmlns:test="http://jaymes.biz/test"><test:PatternValue>delta</test:PatternValue></test:RootFixture>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element)
def test_is_not_nil(): test_xml = '<test:RootFixture xmlns:test="http://jaymes.biz/test"/>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert not model.is_nil()
def test_class_for_element(): test_xml = '<test:RootFixture xmlns:test="http://jaymes.biz/test"/>' doc = expatriate.Document() doc.parse(test_xml) assert Model.class_for_element(doc.root_element) == RootFixture
def test_get_value(): test_xml = '<test:RootFixture xmlns:test="http://jaymes.biz/test">test</test:RootFixture>' doc = expatriate.Document() doc.parse(test_xml) model = Model.load(None, doc.root_element) assert model.get_value() == 'test'