1
1
import json
2
+ import os
2
3
from contextlib import contextmanager
3
4
4
5
import pytest
@@ -40,8 +41,8 @@ def test_value_from_datadict(self, client, upload_file):
40
41
with open (upload_file ) as f :
41
42
uploaded_file = default_storage .save ('test.jpg' , f )
42
43
response = client .post (reverse ('upload' ), {
43
- 'file' : uploaded_file ,
44
- 's3file' : 'file'
44
+ 'file' : json . dumps ([ uploaded_file ]) ,
45
+ 's3file' : '[" file"]' ,
45
46
})
46
47
47
48
assert response .status_code == 201
@@ -133,7 +134,7 @@ def test_no_js_error(self, driver, live_server):
133
134
134
135
def test_file_insert (self , request , driver , live_server , upload_file , freeze ):
135
136
driver .get (live_server + self .url )
136
- file_input = driver .find_element_by_xpath ('//input[@type =\' file\' ]' )
137
+ file_input = driver .find_element_by_xpath ('//input[@name =\' file\' ]' )
137
138
file_input .send_keys (upload_file )
138
139
assert file_input .get_attribute ('name' ) == 'file'
139
140
with wait_for_page_load (driver , timeout = 10 ):
@@ -146,7 +147,7 @@ def test_file_insert(self, request, driver, live_server, upload_file, freeze):
146
147
147
148
def test_file_insert_submit_value (self , driver , live_server , upload_file , freeze ):
148
149
driver .get (live_server + self .url )
149
- file_input = driver .find_element_by_xpath ('//input[@type =\' file\' ]' )
150
+ file_input = driver .find_element_by_xpath ('//input[@name =\' file\' ]' )
150
151
file_input .send_keys (upload_file )
151
152
assert file_input .get_attribute ('name' ) == 'file'
152
153
save_button = driver .find_element_by_xpath ('//input[@name=\' save\' ]' )
@@ -155,7 +156,7 @@ def test_file_insert_submit_value(self, driver, live_server, upload_file, freeze
155
156
assert 'save' in driver .page_source
156
157
157
158
driver .get (live_server + self .url )
158
- file_input = driver .find_element_by_xpath ('//input[@type =\' file\' ]' )
159
+ file_input = driver .find_element_by_xpath ('//input[@name =\' file\' ]' )
159
160
file_input .send_keys (upload_file )
160
161
assert file_input .get_attribute ('name' ) == 'file'
161
162
save_button = driver .find_element_by_xpath ('//button[@name=\' save_continue\' ]' )
@@ -166,7 +167,7 @@ def test_file_insert_submit_value(self, driver, live_server, upload_file, freeze
166
167
167
168
def test_progress (self , driver , live_server , upload_file , freeze ):
168
169
driver .get (live_server + self .url )
169
- file_input = driver .find_element_by_xpath ('//input[@type =\' file\' ]' )
170
+ file_input = driver .find_element_by_xpath ('//input[@name =\' file\' ]' )
170
171
file_input .send_keys (upload_file )
171
172
assert file_input .get_attribute ('name' ) == 'file'
172
173
save_button = driver .find_element_by_xpath ('//input[@name=\' save\' ]' )
@@ -175,14 +176,33 @@ def test_progress(self, driver, live_server, upload_file, freeze):
175
176
assert 'save' in driver .page_source
176
177
177
178
driver .get (live_server + self .url )
178
- file_input = driver .find_element_by_xpath ('//input[@type =\' file\' ]' )
179
+ file_input = driver .find_element_by_xpath ('//input[@name =\' file\' ]' )
179
180
file_input .send_keys (upload_file )
180
181
assert file_input .get_attribute ('name' ) == 'file'
181
182
save_button = driver .find_element_by_xpath ('//button[@name=\' save_continue\' ]' )
182
183
with wait_for_page_load (driver , timeout = 10 ):
183
184
save_button .click ()
184
185
response = json .loads (driver .find_elements_by_css_selector ('pre' )[0 ].text )
185
- assert response ['progress' ] == '1'
186
+ assert response ['POST' ]['progress' ] == '1'
187
+
188
+ def test_multi_file (self , driver , live_server , freeze ,
189
+ upload_file , another_upload_file , yet_another_upload_file ):
190
+ driver .get (live_server + self .url )
191
+ file_input = driver .find_element_by_xpath ('//input[@name=\' file\' ]' )
192
+ file_input .send_keys (' \n ' .join ([upload_file , another_upload_file ]))
193
+ file_input = driver .find_element_by_xpath ('//input[@name=\' other_file\' ]' )
194
+ file_input .send_keys (yet_another_upload_file )
195
+ save_button = driver .find_element_by_xpath ('//input[@name=\' save\' ]' )
196
+ with wait_for_page_load (driver , timeout = 10 ):
197
+ save_button .click ()
198
+ response = json .loads (driver .find_elements_by_css_selector ('pre' )[0 ].text )
199
+ assert response ['FILES' ] == {
200
+ 'file' : [
201
+ os .path .basename (upload_file ),
202
+ os .path .basename (another_upload_file ),
203
+ ],
204
+ 'other_file' : [os .path .basename (yet_another_upload_file )]
205
+ }
186
206
187
207
def test_media (self ):
188
208
assert ClearableFileInput ().media ._js == ['s3file/js/s3file.js' ]
0 commit comments