Skip to content

Commit ed4f649

Browse files
committed
Add tests for convert_span_tables_to_tr_td()
1 parent 1fe6e5f commit ed4f649

File tree

1 file changed

+249
-0
lines changed

1 file changed

+249
-0
lines changed

tests/test_preprocess_cssless.py

Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,252 @@ def test_preprocess_html_merge_cssless2(self):
5353

5454
self.assertEqual(test, expected)
5555
os.remove(dst_path)
56+
57+
class TestConvertSpanTablesToTrTd(unittest.TestCase):
58+
59+
def setUp(self):
60+
self.maxDiff = None
61+
62+
def assert_processes_table(self, input, expected_output):
63+
input = '<html><body>{0}</body></html>'.format(input)
64+
expected_output = '<html><body>{0}</body></html>'.format(expected_output)
65+
66+
parser = etree.HTMLParser()
67+
root = etree.fromstring(input, parser)
68+
69+
convert_span_tables_to_tr_td(root)
70+
71+
output = etree.tostring(root, encoding=str, method='xml')
72+
73+
self.assertEqual(expected_output, output)
74+
75+
def test_normal_table(self):
76+
input = '''\
77+
<div>
78+
<one_more_block>
79+
<span style="border:solid 1.5px red; display:table; padding:2px">
80+
<span style="display:table-row;">
81+
<span style="border:solid 1px green; display:table-cell; padding:1.5px">1</span>
82+
<span style="border:none; display:table-cell; padding:1.5px">2</span>
83+
</span>
84+
</span>
85+
</one_more_block>
86+
</div>
87+
'''
88+
89+
expected = '''\
90+
<div>
91+
<one_more_block>
92+
<table style="border: solid 1.5px red;padding: 2px">
93+
<tr>
94+
<td style="border: solid 1px green;padding: 1.5px">1</td>
95+
<td style="border: none;padding: 1.5px">2</td>
96+
</tr>
97+
</table>
98+
</one_more_block>
99+
</div>
100+
'''
101+
self.assert_processes_table(input, expected)
102+
103+
104+
def test_wraps_table_row_text(self):
105+
input = '''\
106+
<div>
107+
<one_more_block>
108+
<span style="border:solid 1.5px red; display:table; padding:2px">
109+
<span style="display:table-row;">little text</span>
110+
</span>
111+
</one_more_block>
112+
</div>
113+
'''
114+
115+
expected = '''\
116+
<div>
117+
<one_more_block>
118+
<table style="border: solid 1.5px red;padding: 2px">
119+
<tr><td>little text</td></tr>
120+
</table>
121+
</one_more_block>
122+
</div>
123+
'''
124+
self.assert_processes_table(input, expected)
125+
126+
def test_wraps_into_td_table_row_children(self):
127+
input = '''\
128+
<div>
129+
<one_more_block>
130+
<span style="border:solid 1.5px red; display:table; padding:2px">
131+
<span style="display:table-row;">
132+
<span>blabla</span>
133+
<span>blabla2</span>
134+
</span>
135+
</span>
136+
</one_more_block>
137+
</div>
138+
'''
139+
140+
expected = '''\
141+
<div>
142+
<one_more_block>
143+
<table style="border: solid 1.5px red;padding: 2px">
144+
<tr><td>
145+
<span>blabla</span>
146+
<span>blabla2</span>
147+
</td></tr>
148+
</table>
149+
</one_more_block>
150+
</div>
151+
'''
152+
self.assert_processes_table(input, expected)
153+
154+
155+
def test_wraps_into_td_table_row_children_with_tags(self):
156+
input = '''\
157+
<div>
158+
<one_more_block>
159+
<span style="border:solid 1.5px red; display:table; padding:2px">
160+
<span style="display:table-row;">
161+
<span>
162+
<div>bla</div>
163+
</span>
164+
<span>blabla2</span>
165+
</span>
166+
</span>
167+
</one_more_block>
168+
</div>
169+
'''
170+
171+
expected = '''\
172+
<div>
173+
<one_more_block>
174+
<table style="border: solid 1.5px red;padding: 2px">
175+
<tr><td>
176+
<span>
177+
<div>bla</div>
178+
</span>
179+
<span>blabla2</span>
180+
</td></tr>
181+
</table>
182+
</one_more_block>
183+
</div>
184+
'''
185+
self.assert_processes_table(input, expected)
186+
187+
def test_does_not_wrap_into_td_children_when_not_in_table_row(self):
188+
input = '''\
189+
<div>
190+
<one_more_block>
191+
<span style="border:solid 1.5px red; display:table; padding:2px">
192+
<span>
193+
<span style="display:table-cell;">2</span>
194+
</span>
195+
</span>
196+
</one_more_block>
197+
</div>
198+
'''
199+
200+
expected = '''\
201+
<div>
202+
<one_more_block>
203+
<table style="border: solid 1.5px red;padding: 2px">
204+
<span>
205+
<span style="display:table-cell;">2</span>
206+
</span>
207+
</table>
208+
</one_more_block>
209+
</div>
210+
'''
211+
self.assert_processes_table(input, expected)
212+
213+
def test_does_not_wrap_children_when_sibling_is_td(self):
214+
input = '''\
215+
<div>
216+
<one_more_block>
217+
<span style="border:solid 1.5px red; display:table; padding:2px">
218+
<span style="display:table-row;">
219+
<span>1</span>
220+
<span style="display:table-cell;">2</span>
221+
</span>
222+
</span>
223+
</one_more_block>
224+
</div>
225+
'''
226+
227+
expected = '''\
228+
<div>
229+
<one_more_block>
230+
<table style="border: solid 1.5px red;padding: 2px">
231+
<tr>
232+
<span>1</span>
233+
<td>2</td>
234+
</tr>
235+
</table>
236+
</one_more_block>
237+
</div>
238+
'''
239+
self.assert_processes_table(input, expected)
240+
241+
def test_does_not_convert_tr_when_parent_is_not_table(self):
242+
input = '''\
243+
<div>
244+
<one_more_block>
245+
<span style="border:solid 1.5px red; display:table; padding:2px">
246+
<span style="display:table-row;">
247+
<span style="display:table-row;">
248+
blabla
249+
</span>
250+
</span>
251+
</span>
252+
</one_more_block>
253+
</div>
254+
'''
255+
256+
expected = '''\
257+
<div>
258+
<one_more_block>
259+
<table style="border: solid 1.5px red;padding: 2px">
260+
<tr>
261+
<span style="display:table-row;">
262+
blabla
263+
</span>
264+
</tr>
265+
</table>
266+
</one_more_block>
267+
</div>
268+
'''
269+
self.assert_processes_table(input, expected)
270+
271+
def test_does_not_convert_td_when_parent_is_not_tr(self):
272+
input = '''\
273+
<div>
274+
<one_more_block>
275+
<span style="border:solid 1.5px red; display:table; padding:2px">
276+
<span style="display:table-cell;">
277+
<span style="display:table-cell;">
278+
blabla
279+
</span>
280+
</span>
281+
</span>
282+
</one_more_block>
283+
</div>
284+
'''
285+
286+
expected = '''\
287+
<div>
288+
<one_more_block>
289+
<table style="border: solid 1.5px red;padding: 2px">
290+
<span style="display:table-cell;">
291+
<span style="display:table-cell;">
292+
blabla
293+
</span>
294+
</span>
295+
</table>
296+
</one_more_block>
297+
</div>
298+
'''
299+
self.assert_processes_table(input, expected)
300+
</table>
301+
</one_more_block>
302+
</div>
303+
'''
304+
self.assert_processes_table(input, expected)

0 commit comments

Comments
 (0)