@@ -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