11import json
2+ import os
23from contextlib import contextmanager
34
45import pytest
@@ -40,8 +41,8 @@ def test_value_from_datadict(self, client, upload_file):
4041 with open (upload_file ) as f :
4142 uploaded_file = default_storage .save ('test.jpg' , f )
4243 response = client .post (reverse ('upload' ), {
43- 'file' : uploaded_file ,
44- 's3file' : 'file'
44+ 'file' : json . dumps ([ uploaded_file ]) ,
45+ 's3file' : '[" file"]' ,
4546 })
4647
4748 assert response .status_code == 201
@@ -133,7 +134,7 @@ def test_no_js_error(self, driver, live_server):
133134
134135 def test_file_insert (self , request , driver , live_server , upload_file , freeze ):
135136 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\' ]' )
137138 file_input .send_keys (upload_file )
138139 assert file_input .get_attribute ('name' ) == 'file'
139140 with wait_for_page_load (driver , timeout = 10 ):
@@ -146,7 +147,7 @@ def test_file_insert(self, request, driver, live_server, upload_file, freeze):
146147
147148 def test_file_insert_submit_value (self , driver , live_server , upload_file , freeze ):
148149 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\' ]' )
150151 file_input .send_keys (upload_file )
151152 assert file_input .get_attribute ('name' ) == 'file'
152153 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
155156 assert 'save' in driver .page_source
156157
157158 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\' ]' )
159160 file_input .send_keys (upload_file )
160161 assert file_input .get_attribute ('name' ) == 'file'
161162 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
166167
167168 def test_progress (self , driver , live_server , upload_file , freeze ):
168169 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\' ]' )
170171 file_input .send_keys (upload_file )
171172 assert file_input .get_attribute ('name' ) == 'file'
172173 save_button = driver .find_element_by_xpath ('//input[@name=\' save\' ]' )
@@ -175,14 +176,33 @@ def test_progress(self, driver, live_server, upload_file, freeze):
175176 assert 'save' in driver .page_source
176177
177178 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\' ]' )
179180 file_input .send_keys (upload_file )
180181 assert file_input .get_attribute ('name' ) == 'file'
181182 save_button = driver .find_element_by_xpath ('//button[@name=\' save_continue\' ]' )
182183 with wait_for_page_load (driver , timeout = 10 ):
183184 save_button .click ()
184185 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+ }
186206
187207 def test_media (self ):
188208 assert ClearableFileInput ().media ._js == ['s3file/js/s3file.js' ]
0 commit comments