Skip to content

Commit a9de8df

Browse files
committed
Add test case
1 parent c5e462d commit a9de8df

File tree

1 file changed

+127
-23
lines changed

1 file changed

+127
-23
lines changed

Parse/src/test/java/com/parse/ParseFileTest.java

+127-23
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import static org.junit.Assert.assertArrayEquals;
2727
import static org.junit.Assert.assertEquals;
2828
import static org.junit.Assert.assertFalse;
29+
import static org.junit.Assert.assertNull;
2930
import static org.junit.Assert.assertTrue;
3031
import static org.mockito.Matchers.any;
3132
import static org.mockito.Matchers.anyString;
@@ -55,30 +56,51 @@ public void testConstructor() throws Exception {
5556
String name = "name";
5657
byte[] data = "hello".getBytes();
5758
String contentType = "content_type";
59+
File file = temporaryFolder.newFile("test");
5860

59-
ParseFile file = new ParseFile(name, data, contentType);
60-
assertEquals("name", file.getName());
61-
assertEquals("hello", new String(file.getData()));
62-
assertEquals("content_type", file.getState().mimeType());
63-
assertTrue(file.isDirty());
64-
65-
file = new ParseFile(data);
66-
assertEquals("file", file.getName()); // Default
67-
assertEquals("hello", new String(file.getData()));
68-
assertEquals(null, file.getState().mimeType());
69-
assertTrue(file.isDirty());
70-
71-
file = new ParseFile(name, data);
72-
assertEquals("name", file.getName());
73-
assertEquals("hello", new String(file.getData()));
74-
assertEquals(null, file.getState().mimeType());
75-
assertTrue(file.isDirty());
76-
77-
file = new ParseFile(data, contentType);
78-
assertEquals("file", file.getName()); // Default
79-
assertEquals("hello", new String(file.getData()));
80-
assertEquals("content_type", file.getState().mimeType());
81-
assertTrue(file.isDirty());
61+
ParseFile parseFile = new ParseFile(name, data, contentType);
62+
assertEquals("name", parseFile.getName());
63+
assertEquals("hello", new String(parseFile.getData()));
64+
assertEquals("content_type", parseFile.getState().mimeType());
65+
assertTrue(parseFile.isDirty());
66+
67+
parseFile = new ParseFile(data);
68+
assertEquals("file", parseFile.getName()); // Default
69+
assertEquals("hello", new String(parseFile.getData()));
70+
assertEquals(null, parseFile.getState().mimeType());
71+
assertTrue(parseFile.isDirty());
72+
73+
parseFile = new ParseFile(name, data);
74+
assertEquals("name", parseFile.getName());
75+
assertEquals("hello", new String(parseFile.getData()));
76+
assertEquals(null, parseFile.getState().mimeType());
77+
assertTrue(parseFile.isDirty());
78+
79+
parseFile = new ParseFile(data, contentType);
80+
assertEquals("file", parseFile.getName()); // Default
81+
assertEquals("hello", new String(parseFile.getData()));
82+
assertEquals("content_type", parseFile.getState().mimeType());
83+
assertTrue(parseFile.isDirty());
84+
85+
// TODO(mengyan): Test file pointer in ParseFile when we have proper stage strategy
86+
parseFile = new ParseFile(name, file, contentType);
87+
assertEquals("name", parseFile.getName());
88+
assertEquals("content_type", parseFile.getState().mimeType());
89+
assertTrue(parseFile.isDirty());
90+
91+
parseFile = new ParseFile(file);
92+
assertEquals("file", parseFile.getName()); // Default
93+
assertEquals(null, parseFile.getState().mimeType());
94+
assertTrue(parseFile.isDirty());
95+
96+
parseFile = new ParseFile(name, file);
97+
assertEquals("name", parseFile.getName());
98+
assertEquals(null, parseFile.getState().mimeType());
99+
assertTrue(parseFile.isDirty());
100+
101+
parseFile = new ParseFile(file, contentType);
102+
assertEquals("file", parseFile.getName()); // Default
103+
assertEquals("content_type", parseFile.getState().mimeType());
82104
}
83105

84106
@Test(expected = IllegalArgumentException.class)
@@ -162,6 +184,82 @@ public void testSaveAsyncCancelled() throws Exception {
162184
Matchers.<Task<Void>>any());
163185
}
164186

187+
@Test
188+
public void testSaveAsyncSuccessWithData() throws Exception {
189+
String name = "name";
190+
byte[] data = "hello".getBytes();
191+
String contentType = "content_type";
192+
String url = "url";
193+
ParseFile.State state = new ParseFile.State.Builder()
194+
.url(url)
195+
.build();
196+
ParseFileController controller = mock(ParseFileController.class);
197+
when(controller.saveAsync(
198+
any(ParseFile.State.class),
199+
any(byte[].class),
200+
any(String.class),
201+
any(ProgressCallback.class),
202+
Matchers.<Task<Void>>any())).thenReturn(Task.forResult(state));
203+
ParseCorePlugins.getInstance().registerFileController(controller);
204+
205+
ParseFile parseFile = new ParseFile(name, data, contentType);
206+
ParseTaskUtils.wait(parseFile.saveAsync(null, null, null));
207+
208+
// Verify controller get the correct data
209+
ArgumentCaptor<ParseFile.State> stateCaptor = ArgumentCaptor.forClass(ParseFile.State.class);
210+
ArgumentCaptor<byte[]> dataCaptor = ArgumentCaptor.forClass(byte[].class);
211+
verify(controller, times(1)).saveAsync(
212+
stateCaptor.capture(),
213+
dataCaptor.capture(),
214+
any(String.class),
215+
any(ProgressCallback.class),
216+
Matchers.<Task<Void>>any());
217+
assertNull(stateCaptor.getValue().url());
218+
assertEquals(name, stateCaptor.getValue().name());
219+
assertEquals(contentType, stateCaptor.getValue().mimeType());
220+
assertArrayEquals(data, dataCaptor.getValue());
221+
// Verify the state of ParseFile has been updated
222+
assertEquals(url, parseFile.getUrl());
223+
}
224+
225+
@Test
226+
public void testSaveAsyncSuccessWithFile() throws Exception {
227+
String name = "name";
228+
File file = temporaryFolder.newFile("test");
229+
String contentType = "content_type";
230+
String url = "url";
231+
ParseFile.State state = new ParseFile.State.Builder()
232+
.url(url)
233+
.build();
234+
ParseFileController controller = mock(ParseFileController.class);
235+
when(controller.saveAsync(
236+
any(ParseFile.State.class),
237+
any(File.class),
238+
any(String.class),
239+
any(ProgressCallback.class),
240+
Matchers.<Task<Void>>any())).thenReturn(Task.forResult(state));
241+
ParseCorePlugins.getInstance().registerFileController(controller);
242+
243+
ParseFile parseFile = new ParseFile(name, file, contentType);
244+
ParseTaskUtils.wait(parseFile.saveAsync(null, null, null));
245+
246+
// Verify controller get the correct data
247+
ArgumentCaptor<ParseFile.State> stateCaptor = ArgumentCaptor.forClass(ParseFile.State.class);
248+
ArgumentCaptor<File> fileCaptor = ArgumentCaptor.forClass(File.class);
249+
verify(controller, times(1)).saveAsync(
250+
stateCaptor.capture(),
251+
fileCaptor.capture(),
252+
any(String.class),
253+
any(ProgressCallback.class),
254+
Matchers.<Task<Void>>any());
255+
assertNull(stateCaptor.getValue().url());
256+
assertEquals(name, stateCaptor.getValue().name());
257+
assertEquals(contentType, stateCaptor.getValue().mimeType());
258+
assertEquals(file, fileCaptor.getValue());
259+
// Verify the state of ParseFile has been updated
260+
assertEquals(url, parseFile.getUrl());
261+
}
262+
165263
// TODO(grantland): testSaveAsyncNotDirtyAfterQueueAwait
166264
// TODO(grantland): testSaveAsyncSuccess
167265
// TODO(grantland): testSaveAsyncFailure
@@ -287,6 +385,12 @@ public void testTaskQueuedMethods() throws Exception {
287385
any(String.class),
288386
any(ProgressCallback.class),
289387
Matchers.<Task<Void>>any())).thenReturn(Task.forResult(state));
388+
when(controller.saveAsync(
389+
any(ParseFile.State.class),
390+
any(File.class),
391+
any(String.class),
392+
any(ProgressCallback.class),
393+
Matchers.<Task<Void>>any())).thenReturn(Task.forResult(state));
290394
when(controller.fetchAsync(
291395
any(ParseFile.State.class),
292396
any(String.class),

0 commit comments

Comments
 (0)