-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathtest_zip.py
81 lines (62 loc) · 2.26 KB
/
test_zip.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from itertable import (
ZipFileLoader,
ZipNetLoader,
CsvParser,
ExcelParser,
TupleMapper,
BaseIter,
)
from .base import IterTestCase
from itertable.exceptions import LoadFailed
import httpretty
class CsvZipFileIter(ZipFileLoader, CsvParser, TupleMapper, BaseIter):
inner_binary = False
class ExcelZipFileIter(ZipFileLoader, ExcelParser, TupleMapper, BaseIter):
inner_binary = True
class CsvZipNetIter(ZipNetLoader, CsvParser, TupleMapper, BaseIter):
url = "http://example.com/testcsv.zip"
inner_binary = False
class ExcelZipNetIter(ZipNetLoader, ExcelParser, TupleMapper, BaseIter):
url = "http://example.com/testxlsx.zip"
inner_binary = True
class ZipFileTestCase(IterTestCase):
def test_csv_zip(self):
filename = self.get_filename("testcsv", "zip")
instance = CsvZipFileIter(filename=filename)
self.check_instance(instance)
def test_xlsx_zip(self):
filename = self.get_filename("testxlsx", "zip")
instance = ExcelZipFileIter(filename=filename)
self.check_instance(instance)
def test_multi_zip(self):
filename = self.get_filename("testmulti", "zip")
with self.assertRaises(LoadFailed) as cm:
CsvZipFileIter(filename=filename)
self.assertEqual(str(cm.exception), "Multiple Inner Files!")
def test_multi_zip_name(self):
filename = self.get_filename("testmulti", "zip")
instance = CsvZipFileIter(filename=filename, inner_filename="test.csv")
self.check_instance(instance)
class NetZipFileTestCase(IterTestCase):
def setUp(self):
httpretty.enable()
self.register_url("testcsv")
self.register_url("testxlsx")
def register_url(self, name):
filename = self.get_filename(name, "zip")
zipfile = open(filename, "rb")
zipdata = zipfile.read()
zipfile.close()
httpretty.register_uri(
httpretty.GET,
"http://example.com/%s.zip" % name,
body=zipdata,
content_type="application/zip",
)
def tearDown(self):
httpretty.disable()
httpretty.reset()
def test_load_zip(self):
self.check_instance(CsvZipNetIter())
def test_xlsx_zip(self):
self.check_instance(ExcelZipNetIter())