@@ -31,12 +31,10 @@ def test_create_instance_with_file(self):
31
31
32
32
33
33
def test_form_ok (self ):
34
- uploaded_file = SimpleUploadedFile (
35
- name = 'the_file.png' ,
36
- content = self ._get_sample_file ('image2k.png' ).read (),
37
- content_type = 'image/png' ,
38
- )
39
- form = TestModelForm (data = {}, files = {'the_file' : uploaded_file })
34
+ form = self ._create_bound_test_model_form (form_class = TestModelForm ,
35
+ orig_filename = 'image2k.png' ,
36
+ dest_filename = 'the_file.png' ,
37
+ content_type = 'image/png' )
40
38
self .assertTrue (form .is_valid ())
41
39
instance = form .save ()
42
40
@@ -45,62 +43,55 @@ def test_form_ok(self):
45
43
instance .the_file .delete ()
46
44
instance .delete ()
47
45
48
-
49
46
def test_form_invalid_size (self ):
50
- uploaded_file = SimpleUploadedFile (
51
- name = 'the_file.png' ,
52
- content = self ._get_sample_file ('image15k.png' ).read (),
53
- content_type = 'image/png' ,
54
- )
55
- form = TestModelForm (data = {}, files = {'the_file' : uploaded_file })
47
+ form = self ._create_bound_test_model_form (form_class = TestModelForm ,
48
+ orig_filename = 'image15k.png' ,
49
+ dest_filename = 'the_file.png' ,
50
+ content_type = 'image/png' )
56
51
self .assertFalse (form .is_valid ())
57
52
self .assertEqual (len (form .errors ), 1 )
58
53
self .assertEqual (len (form .errors ['the_file' ]), 1 )
54
+ self .assertEqual (form .errors ['the_file' ][0 ], u'Please keep filesize under 10.0 KB. Current filesize 14.2 KB' )
59
55
60
56
61
57
def test_form_invalid_filetype (self ):
62
- uploaded_file = SimpleUploadedFile (
63
- name = 'the_file.pdf' ,
64
- content = self ._get_sample_file ('document1k.pdf' ).read (),
65
- content_type = 'application/pdf' ,
66
- )
67
- form = TestModelForm (data = {}, files = {'the_file' : uploaded_file })
58
+ form = self ._create_bound_test_model_form (form_class = TestModelForm ,
59
+ orig_filename = 'document1k.pdf' ,
60
+ dest_filename = 'the_file.pdf' ,
61
+ content_type = 'application/pdf' )
68
62
self .assertFalse (form .is_valid ())
69
63
self .assertEqual (len (form .errors ), 1 )
70
64
self .assertEqual (len (form .errors ['the_file' ]), 1 )
65
+ self .assertEqual (form .errors ['the_file' ][0 ], u'Filetype application/pdf not supported.' )
71
66
72
67
73
68
def test_form_invalid_filetype_and_size (self ):
74
- uploaded_file = SimpleUploadedFile (
75
- name = 'the_file.pdf' ,
76
- content = self ._get_sample_file ('document15k.pdf' ).read (),
77
- content_type = 'application/pdf' ,
78
- )
79
- form = TestModelForm (data = {}, files = {'the_file' : uploaded_file })
69
+ form = self ._create_bound_test_model_form (form_class = TestModelForm ,
70
+ orig_filename = 'document15k.pdf' ,
71
+ dest_filename = 'the_file.pdf' ,
72
+ content_type = 'application/pdf' )
80
73
self .assertFalse (form .is_valid ())
81
74
self .assertEqual (len (form .errors ), 1 )
82
75
self .assertEqual (len (form .errors ['the_file' ]), 1 )
76
+ self .assertEqual (form .errors ['the_file' ][0 ], u'Filetype application/pdf not supported.' )
83
77
84
78
85
79
def test_form_fake_filetype (self ):
86
- uploaded_file = SimpleUploadedFile (
87
- name = 'the_file.png' ,
88
- content = self ._get_sample_file ('document1k.pdf' ).read (),
89
- content_type = 'image/png' ,
90
- )
91
- form = TestModelForm (data = {}, files = {'the_file' : uploaded_file })
80
+ form = self ._create_bound_test_model_form (form_class = TestModelForm ,
81
+ orig_filename = 'document1k.pdf' ,
82
+ dest_filename = 'the_file.pdf' ,
83
+ content_type = 'image/png' )
92
84
self .assertFalse (form .is_valid ())
93
85
self .assertEqual (len (form .errors ), 1 )
94
86
self .assertEqual (len (form .errors ['the_file' ]), 1 )
87
+ self .assertEqual (form .errors ['the_file' ][0 ], u'Filetype application/pdf not supported.' )
95
88
96
89
97
90
def test_form_no_validate (self ):
98
- uploaded_file = SimpleUploadedFile (
99
- name = 'the_file.pdf' ,
100
- content = self ._get_sample_file ('document15k.pdf' ).read (),
101
- content_type = 'application/pdf' ,
102
- )
103
- form = TestModelNoValidateForm (data = {}, files = {'the_file' : uploaded_file })
91
+ form = self ._create_bound_test_model_form (form_class = TestModelNoValidateForm ,
92
+ orig_filename = 'document15k.pdf' ,
93
+ dest_filename = 'the_file.pdf' ,
94
+ content_type = 'application/pdf' )
104
95
self .assertTrue (form .is_valid ())
105
96
instance = form .save ()
106
97
@@ -111,7 +102,7 @@ def test_form_no_validate(self):
111
102
112
103
113
104
def test_form_null_file (self ):
114
- form = TestModelNoValidateForm ( data = {}, files = {} )
105
+ form = self . _create_bound_test_model_form ( form_class = TestModelNoValidateForm )
115
106
self .assertTrue (form .is_valid ())
116
107
instance = form .save ()
117
108
@@ -121,7 +112,7 @@ def test_form_null_file(self):
121
112
122
113
123
114
def test_quota_empty (self ):
124
- container = TestContainer . objects . create (name = 'container1' )
115
+ container = self . _create_container (name = 'container1' )
125
116
126
117
quota = FileQuota ()
127
118
quota .update (container .test_elements .all (), 'the_file' )
@@ -132,11 +123,10 @@ def test_quota_empty(self):
132
123
133
124
134
125
def test_quota_one_file (self ):
135
- container = TestContainer .objects .create (name = 'container1' )
136
- element = TestElement .objects .create (
137
- container = container ,
138
- the_file = File (self ._get_sample_file ('image2k.png' ), 'the_file.png' )
139
- )
126
+ container = self ._create_container (name = 'container' )
127
+ element = self ._add_element (container = container ,
128
+ orig_filename = 'image2k.png' ,
129
+ dest_filename = 'the_file.png' )
140
130
141
131
quota = FileQuota ()
142
132
quota .update (container .test_elements .all (), 'the_file' )
@@ -149,20 +139,17 @@ def test_quota_one_file(self):
149
139
150
140
151
141
def test_quota_several_files_several_containers (self ):
152
- container1 = TestContainer .objects .create (name = 'container1' )
153
- element1 = TestElement .objects .create (
154
- container = container1 ,
155
- the_file = File (self ._get_sample_file ('image2k.png' ), 'the_file1.png' )
156
- )
157
- element2 = TestElement .objects .create (
158
- container = container1 ,
159
- the_file = File (self ._get_sample_file ('image15k.png' ), 'the_file2.png' )
160
- )
161
- container2 = TestContainer .objects .create (name = 'container2' )
162
- element3 = TestElement .objects .create (
163
- container = container2 ,
164
- the_file = File (self ._get_sample_file ('document15k.pdf' ), 'the_file3.pdf' )
165
- )
142
+ container1 = self ._create_container (name = 'container1' )
143
+ element1 = self ._add_element (container = container1 ,
144
+ orig_filename = 'image2k.png' ,
145
+ dest_filename = 'the_file1.png' )
146
+ element2 = self ._add_element (container = container1 ,
147
+ orig_filename = 'image15k.png' ,
148
+ dest_filename = 'the_file2.png' )
149
+ container2 = self ._create_container (name = 'container2' )
150
+ element3 = self ._add_element (container = container2 ,
151
+ orig_filename = 'document15k.pdf' ,
152
+ dest_filename = 'the_file3.pdf' )
166
153
167
154
quota = FileQuota (max_usage = 20000 )
168
155
quota .update (container1 .test_elements .all (), 'the_file' )
@@ -182,16 +169,15 @@ def test_quota_several_files_several_containers(self):
182
169
def test_quota_exceeds (self ):
183
170
quota = FileQuota (max_usage = 1000 )
184
171
185
- container = TestContainer . objects . create (name = 'container1' )
172
+ container = self . _create_container (name = 'container1' )
186
173
quota .update (container .test_elements .all (), 'the_file' )
187
174
self .assertEqual (quota .current_usage , 0 )
188
175
self .assertFalse (quota .exceeds ())
189
176
self .assertTrue (quota .exceeds (2120 ))
190
177
191
- element = TestElement .objects .create (
192
- container = container ,
193
- the_file = File (self ._get_sample_file ('image2k.png' ), 'the_file.png' )
194
- )
178
+ element = self ._add_element (container = container ,
179
+ orig_filename = 'image2k.png' ,
180
+ dest_filename = 'the_file.png' )
195
181
quota .update (container .test_elements .all (), 'the_file' )
196
182
self .assertEqual (quota .current_usage , 2120 )
197
183
self .assertTrue (quota .exceeds ())
@@ -202,17 +188,16 @@ def test_quota_exceeds(self):
202
188
203
189
204
190
def test_form_quota_check (self ):
205
- container = TestContainer . objects . create (name = 'container1' )
191
+ container = self . _create_container (name = 'container1' )
206
192
207
- form1 = TestElementForm (container = container )
193
+ form1 = self . _create_unbound_test_element_form (container = container )
208
194
self .assertFalse (form1 .exceeds_quota ())
209
195
210
- element = TestElement .objects .create (
211
- container = container ,
212
- the_file = File (self ._get_sample_file ('image15k.png' ), 'the_file.png' )
213
- )
196
+ element = self ._add_element (container = container ,
197
+ orig_filename = 'image15k.png' ,
198
+ dest_filename = 'the_file.png' )
214
199
215
- form2 = TestElementForm (container = container )
200
+ form2 = self . _create_unbound_test_element_form (container = container )
216
201
self .assertTrue (form2 .exceeds_quota ())
217
202
218
203
element .the_file .delete ()
@@ -221,43 +206,32 @@ def test_form_quota_check(self):
221
206
222
207
223
208
def test_form_quota_ok (self ):
224
- container = TestContainer .objects .create (name = 'container1' )
225
-
226
- uploaded_file = SimpleUploadedFile (
227
- name = 'the_file.png' ,
228
- content = self ._get_sample_file ('image2k.png' ).read (),
229
- content_type = 'image/png' ,
230
- )
231
- form = TestElementForm (
232
- container = container ,
233
- data = {},
234
- files = {'the_file' : uploaded_file }
235
- )
209
+ container = self ._create_container (name = 'container1' )
236
210
211
+ form = self ._create_bound_test_element_form (container = container ,
212
+ orig_filename = 'image2k.png' ,
213
+ dest_filename = 'the_file.png' ,
214
+ content_type = 'image/png' )
237
215
self .assertTrue (form .is_valid ())
238
216
239
217
container .delete ()
240
218
241
219
242
220
def test_form_quota_exceeded (self ):
243
- container = TestContainer .objects .create (name = 'container1' )
244
- element = TestElement .objects .create (
245
- container = container ,
246
- the_file = File (self ._get_sample_file ('image2k.png' ), 'the_file.png' )
247
- )
248
-
249
- uploaded_file = SimpleUploadedFile (
250
- name = 'the_file.png' ,
251
- content = self ._get_sample_file ('image15k.png' ).read (),
252
- content_type = 'image/png' ,
253
- )
254
- form = TestElementForm (
255
- container = container ,
256
- data = {},
257
- files = {'the_file' : uploaded_file }
258
- )
259
-
221
+ container = self ._create_container (name = 'container1' )
222
+ element = self ._add_element (container = container ,
223
+ orig_filename = 'image2k.png' ,
224
+ dest_filename = 'the_file.png' )
225
+
226
+ form = self ._create_bound_test_element_form (container = container ,
227
+ orig_filename = 'image15k.png' ,
228
+ dest_filename = 'the_file.png' ,
229
+ content_type = 'image/png' )
260
230
self .assertFalse (form .is_valid ())
231
+ self .assertEqual (len (form .errors ), 1 )
232
+ self .assertEqual (len (form .errors ['the_file' ]), 1 )
233
+ self .assertEqual (form .errors ['the_file' ][0 ],
234
+ u'Please keep the total uploaded files under 9.8 KB. With this file, the total would be 16.3 KB' )
261
235
262
236
element .the_file .delete ()
263
237
element .delete ()
@@ -279,3 +253,47 @@ def _check_file_url(self, filefield, filename):
279
253
def _get_file_url (self , filename ):
280
254
return os .path .join (MEDIA_ROOT , prefix , filename )
281
255
256
+
257
+ def _create_bound_test_model_form (self , form_class , orig_filename = None ,
258
+ dest_filename = None , content_type = None ):
259
+ if orig_filename and dest_filename and content_type :
260
+ uploaded_file = SimpleUploadedFile (
261
+ name = dest_filename ,
262
+ content = self ._get_sample_file (orig_filename ).read (),
263
+ content_type = content_type ,
264
+ )
265
+ files = {'the_file' : uploaded_file }
266
+ else :
267
+ files = {}
268
+ form = form_class (data = {}, files = files )
269
+ return form
270
+
271
+
272
+ def _create_container (self , name ):
273
+ return TestContainer .objects .create (name = name )
274
+
275
+
276
+ def _add_element (self , container , orig_filename , dest_filename ):
277
+ return container .test_elements .create (
278
+ the_file = File (self ._get_sample_file (orig_filename ), dest_filename )
279
+ )
280
+
281
+
282
+ def _create_unbound_test_element_form (self , container ):
283
+ return TestElementForm (container = container )
284
+
285
+
286
+ def _create_bound_test_element_form (self , container , orig_filename = None ,
287
+ dest_filename = None , content_type = None ):
288
+ if orig_filename and dest_filename and content_type :
289
+ uploaded_file = SimpleUploadedFile (
290
+ name = dest_filename ,
291
+ content = self ._get_sample_file (orig_filename ).read (),
292
+ content_type = content_type ,
293
+ )
294
+ files = {'the_file' : uploaded_file }
295
+ else :
296
+ files = {}
297
+ form = TestElementForm (container = container , data = {}, files = files )
298
+ return form
299
+
0 commit comments