@@ -97,7 +97,7 @@ public void testSaveAsyncNotDirty() throws Exception {
9797 ParseFile .State state = new ParseFile .State .Builder ()
9898 .url ("http://example.com" )
9999 .build ();
100- Task <ParseFile .State > task = controller .saveAsync (state , null , null , null , null );
100+ Task <ParseFile .State > task = controller .saveAsync (state , ( byte []) null , null , null , null );
101101 task .waitForCompletion ();
102102
103103 verify (restClient , times (0 )).execute (any (ParseHttpRequest .class ));
@@ -113,15 +113,15 @@ public void testSaveAsyncAlreadyCancelled() throws Exception {
113113
114114 ParseFile .State state = new ParseFile .State .Builder ().build ();
115115 Task <Void > cancellationToken = Task .cancelled ();
116- Task <ParseFile .State > task = controller .saveAsync (state , null , null , null , cancellationToken );
116+ Task <ParseFile .State > task = controller .saveAsync (state , ( byte []) null , null , null , cancellationToken );
117117 task .waitForCompletion ();
118118
119119 verify (restClient , times (0 )).execute (any (ParseHttpRequest .class ));
120120 assertTrue (task .isCancelled ());
121121 }
122122
123123 @ Test
124- public void testSaveAsyncSuccess () throws Exception {
124+ public void testSaveAsyncSuccessWithByteArray () throws Exception {
125125 JSONObject json = new JSONObject ();
126126 json .put ("name" , "new_file_name" );
127127 json .put ("url" , "http://example.com" );
@@ -154,6 +154,41 @@ public void testSaveAsyncSuccess() throws Exception {
154154 assertEquals ("hello" , ParseFileUtils .readFileToString (file , "UTF-8" ));
155155 }
156156
157+ @ Test
158+ public void testSaveAsyncSuccessWithFile () throws Exception {
159+ JSONObject json = new JSONObject ();
160+ json .put ("name" , "new_file_name" );
161+ json .put ("url" , "http://example.com" );
162+ String content = json .toString ();
163+
164+ ParseHttpResponse response = mock (ParseHttpResponse .class );
165+ when (response .getStatusCode ()).thenReturn (200 );
166+ when (response .getContent ()).thenReturn (new ByteArrayInputStream (content .getBytes ()));
167+ when (response .getTotalSize ()).thenReturn ((long ) content .length ());
168+
169+ ParseHttpClient restClient = mock (ParseHttpClient .class );
170+ when (restClient .execute (any (ParseHttpRequest .class ))).thenReturn (response );
171+
172+ File root = temporaryFolder .getRoot ();
173+ ParseFileController controller = new ParseFileController (restClient , root );
174+
175+ File file = new File (root , "test" );
176+ ParseFileUtils .writeStringToFile (file , "content" , "UTF-8" );
177+ ParseFile .State state = new ParseFile .State .Builder ()
178+ .name ("file_name" )
179+ .mimeType ("mime_type" )
180+ .build ();
181+ Task <ParseFile .State > task = controller .saveAsync (state , file , null , null , null );
182+ ParseFile .State result = ParseTaskUtils .wait (task );
183+
184+ verify (restClient , times (1 )).execute (any (ParseHttpRequest .class ));
185+ assertEquals ("new_file_name" , result .name ());
186+ assertEquals ("http://example.com" , result .url ());
187+ File cachedFile = new File (root , "new_file_name" );
188+ assertTrue (cachedFile .exists ());
189+ assertEquals ("content" , ParseFileUtils .readFileToString (cachedFile , "UTF-8" ));
190+ }
191+
157192 @ Test
158193 public void testSaveAsyncFailure () throws Exception {
159194 // TODO(grantland): Remove once we no longer rely on retry logic.
0 commit comments