5
5
6
6
import os .path
7
7
8
- from models import TestModel , TestModelNoValidate
9
- from forms import TestModelForm , TestModelNoValidateForm
8
+ from validatedfile .models import FileQuota
9
+
10
+ from models import TestModel , TestModelNoValidate , TestContainer , TestElement
11
+ from forms import TestModelForm , TestModelNoValidateForm , TestElementForm
10
12
11
13
class ValidatedFileFieldTest (TestCase ):
12
14
@@ -15,14 +17,12 @@ class ValidatedFileFieldTest(TestCase):
15
17
16
18
def test_create_empty_instance (self ):
17
19
instance = TestModel .objects .create ()
18
- instance .save ()
19
20
20
21
21
22
def test_create_instance_with_file (self ):
22
23
instance = TestModel .objects .create (
23
24
the_file = File (self ._get_sample_file ('image2k.png' ), 'the_file.png' )
24
25
)
25
- instance .save ()
26
26
27
27
self ._check_file_url (instance .the_file , 'the_file.png' )
28
28
@@ -120,6 +120,107 @@ def test_form_null_file(self):
120
120
instance .delete ()
121
121
122
122
123
+ def test_quota_empty (self ):
124
+ container = TestContainer .objects .create (name = 'container1' )
125
+
126
+ quota = FileQuota (container .test_elements .all (), 'the_file' )
127
+ self .assertEqual (quota .current_usage (), 0 )
128
+
129
+ container .delete ()
130
+
131
+
132
+ def test_quota_one_file (self ):
133
+ container = TestContainer .objects .create (name = 'container1' )
134
+ element = TestElement .objects .create (
135
+ container = container ,
136
+ the_file = File (self ._get_sample_file ('image2k.png' ), 'the_file.png' )
137
+ )
138
+
139
+ quota = FileQuota (container .test_elements .all (), 'the_file' )
140
+ self .assertEqual (quota .current_usage (), 2120 )
141
+
142
+ element .the_file .delete ()
143
+ element .delete ()
144
+ container .delete ()
145
+
146
+
147
+ def test_quota_several_files_several_containers (self ):
148
+ container1 = TestContainer .objects .create (name = 'container1' )
149
+ element1 = TestElement .objects .create (
150
+ container = container1 ,
151
+ the_file = File (self ._get_sample_file ('image2k.png' ), 'the_file1.png' )
152
+ )
153
+ element2 = TestElement .objects .create (
154
+ container = container1 ,
155
+ the_file = File (self ._get_sample_file ('image15k.png' ), 'the_file2.png' )
156
+ )
157
+ container2 = TestContainer .objects .create (name = 'container2' )
158
+ element3 = TestElement .objects .create (
159
+ container = container2 ,
160
+ the_file = File (self ._get_sample_file ('document15k.pdf' ), 'the_file3.pdf' )
161
+ )
162
+
163
+ quota = FileQuota (container1 .test_elements .all (), 'the_file' )
164
+ self .assertEqual (quota .current_usage (), 16706 )
165
+
166
+ element1 .the_file .delete ()
167
+ element2 .the_file .delete ()
168
+ element3 .the_file .delete ()
169
+ element1 .delete ()
170
+ element2 .delete ()
171
+ element3 .delete ()
172
+ container1 .delete ()
173
+ container2 .delete ()
174
+
175
+
176
+ def test_form_quota_ok (self ):
177
+ container = TestContainer .objects .create (name = 'container1' )
178
+
179
+ quota = FileQuota (container .test_elements .all (), 'the_file' )
180
+ uploaded_file = SimpleUploadedFile (
181
+ name = 'the_file.png' ,
182
+ content = self ._get_sample_file ('image2k.png' ).read (),
183
+ content_type = 'image/png' ,
184
+ )
185
+ form = TestElementForm (
186
+ container = container ,
187
+ quota = quota ,
188
+ data = {},
189
+ files = {'the_file' : uploaded_file }
190
+ )
191
+
192
+ self .assertTrue (form .is_valid ())
193
+
194
+ container .delete ()
195
+
196
+
197
+ def test_form_quota_exceeded (self ):
198
+ container = TestContainer .objects .create (name = 'container1' )
199
+ element = TestElement .objects .create (
200
+ container = container ,
201
+ the_file = File (self ._get_sample_file ('image2k.png' ), 'the_file.png' )
202
+ )
203
+
204
+ quota = FileQuota (container .test_elements .all (), 'the_file' )
205
+ uploaded_file = SimpleUploadedFile (
206
+ name = 'the_file.png' ,
207
+ content = self ._get_sample_file ('image15k.png' ).read (),
208
+ content_type = 'image/png' ,
209
+ )
210
+ form = TestElementForm (
211
+ container = container ,
212
+ quota = quota ,
213
+ data = {},
214
+ files = {'the_file' : uploaded_file }
215
+ )
216
+
217
+ self .assertFalse (form .is_valid ())
218
+
219
+ element .the_file .delete ()
220
+ element .delete ()
221
+ container .delete ()
222
+
223
+
123
224
# Utilities
124
225
125
226
def _get_sample_file (self , filename ):
0 commit comments