|
5 | 5 | from io import BytesIO
|
6 | 6 | import tempfile
|
7 | 7 | import shutil
|
8 |
| -import six |
9 | 8 | from six.moves.urllib.parse import urlparse
|
10 | 9 |
|
11 | 10 | from zope.interface.verify import verifyObject
|
@@ -187,10 +186,22 @@ def assertExportedJsonLines(self, items, rows, settings=None):
|
187 | 186 | rows = [{k: v for k, v in row.items() if v} for row in rows]
|
188 | 187 | self.assertEqual(rows, parsed)
|
189 | 188 |
|
| 189 | + @defer.inlineCallbacks |
| 190 | + def assertExportedXml(self, items, rows, settings=None): |
| 191 | + settings = settings or {} |
| 192 | + settings.update({'FEED_FORMAT': 'xml'}) |
| 193 | + data = yield self.exported_data(items, settings) |
| 194 | + rows = [{k: v for k, v in row.items() if v} for row in rows] |
| 195 | + import lxml.etree |
| 196 | + root = lxml.etree.fromstring(data) |
| 197 | + got_rows = [{e.tag: e.text for e in it} for it in root.findall('item')] |
| 198 | + self.assertEqual(rows, got_rows) |
| 199 | + |
190 | 200 | @defer.inlineCallbacks
|
191 | 201 | def assertExported(self, items, header, rows, settings=None, ordered=True):
|
192 | 202 | yield self.assertExportedCsv(items, header, rows, settings, ordered)
|
193 | 203 | yield self.assertExportedJsonLines(items, rows, settings)
|
| 204 | + yield self.assertExportedXml(items, rows, settings) |
194 | 205 |
|
195 | 206 | @defer.inlineCallbacks
|
196 | 207 | def test_export_items(self):
|
|
0 commit comments