def test_expand_fragments(): """Testcase for expanding XML fragments (ticket #145).""" template = """<div xmlns:py="http://purl.org/kid/ns#" py:replace="stream" />""" t = Template("""\ <div xmlns:py="http://purl.org/kid/ns#"> <div py:for="i in range(3)"> <p>Hello World #$i</p> </div> </div>""") s = t.serialize(fragment=True) expected = """<div> <div> <p>Hello World #0</p> </div><div> <p>Hello World #1</p> </div><div> <p>Hello World #2</p> </div> </div>""" assert s == expected stream = ElementStream(t.transform()).expand() t2 = Template(source=template, stream=stream) s2 = t2.serialize(fragment=True) assert s2 == s t = Template("""\ <div xmlns:py="http://purl.org/kid/ns#" py:for="i in range(3)"> <p>Hello World #$i</p> </div>""") s = t.serialize(fragment=True) expected = """<div> <p>Hello World #0</p> </div><div> <p>Hello World #1</p> </div><div> <p>Hello World #2</p> </div>""" assert s == expected stream = ElementStream(t.transform()).expand() t2 = Template(source=template, stream=stream) s2 = t2.serialize(fragment=True) assert s2 == s t = Template("""\ <div xmlns:py="http://purl.org/kid/ns#"> <div py:strip="True"> <p>Hello World</p> </div> </div>""") s = t.serialize(fragment=True) expected = """<div> <p>Hello World</p> </div>""" assert s == expected stream = ElementStream(t.transform()).expand() t2 = Template(source=template, stream=stream) s2 = t2.serialize(fragment=True) assert s2 == s t = Template("""\ <div xmlns:py="http://purl.org/kid/ns#" py:strip="True"> <p>Hello World</p> </div>""") s = t.serialize(fragment=True).strip() expected = """<p>Hello World</p>""" assert s == expected stream = ElementStream(t.transform()).expand() t2 = Template(source=template, stream=stream) s2 = t2.serialize(fragment=True).strip() assert s2 == s