diff options
author | Julian Kast <julian@livio.com> | 2020-02-27 14:01:30 -0500 |
---|---|---|
committer | Julian Kast <julian@livio.com> | 2020-02-27 14:01:30 -0500 |
commit | b347dbae155e1542509bac5fca18d3e0a8f8214f (patch) | |
tree | c55a98fec14a8ac215d01822f694da4eb55b2b69 | |
parent | e00e9a64d0a1027191ba3674672c6a5af3283026 (diff) | |
parent | 9b43ce1a26d49260fc1a2ac6b9665103e9aeaf0b (diff) | |
download | sdl_android-b347dbae155e1542509bac5fca18d3e0a8f8214f.tar.gz |
Merge branch 'develop' of https://github.com/smartdevicelink/sdl_java_suite into bugfix/issue_1276
-rw-r--r-- | android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java | 76 | ||||
-rw-r--r-- | base/src/main/java/com/smartdevicelink/managers/file/BaseFileManager.java | 20 |
2 files changed, 86 insertions, 10 deletions
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java index dd4e5a534..828f0a10d 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java @@ -502,7 +502,7 @@ public class FileManagerTests extends AndroidTestCase2 { assertEquals(Test.GENERAL_INT, fileManager.getBytesAvailable()); } - public void testFileUploadFailure(){ + public void testFileUploadFailure() { ISdl internalInterface = mock(ISdl.class); doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class)); @@ -525,12 +525,16 @@ public class FileManagerTests extends AndroidTestCase2 { }); } - public void testFileUploadForStaticIcon(){ + /** + * Testing uploadFile for a staticIcon, verifying that it doesn't actually upload. + */ + public void testFileUploadForStaticIcon() { ISdl internalInterface = mock(ISdl.class); - doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class)); + doAnswer(onListFilesSuccess).when(internalInterface).sendRPC(any(ListFiles.class)); - final FileManager fileManager = new FileManager(internalInterface, mTestContext); + FileManagerConfig fileManagerConfig = new FileManagerConfig(); + final FileManager fileManager = new FileManager(internalInterface, mTestContext, fileManagerConfig); fileManager.start(new CompletionListener() { @Override public void onComplete(boolean success) { @@ -544,6 +548,70 @@ public class FileManagerTests extends AndroidTestCase2 { }); } }); + verify(internalInterface, times(1)).sendRPC(any(RPCMessage.class)); + } + + /** + * Testing uploadFiles for staticIcons, verifying that it doesn't actually upload. + */ + public void testMultipleFileUploadsForStaticIcon() { + ISdl internalInterface = mock(ISdl.class); + + doAnswer(onListFilesSuccess).when(internalInterface).sendRPC(any(ListFiles.class)); + doAnswer(onListFileUploadSuccess).when(internalInterface).sendRequests(any(List.class), any(OnMultipleRequestListener.class)); + + FileManagerConfig fileManagerConfig = new FileManagerConfig(); + final FileManager fileManager = new FileManager(internalInterface, mTestContext, fileManagerConfig); + fileManager.start(new CompletionListener() { + @Override + public void onComplete(boolean success) { + assertTrue(success); + SdlArtwork artwork = new SdlArtwork(StaticIconName.ALBUM); + SdlArtwork artwork2 = new SdlArtwork(StaticIconName.FILENAME); + List<SdlArtwork> testStaticIconUpload = new ArrayList<>(); + testStaticIconUpload.add(artwork); + testStaticIconUpload.add(artwork2); + fileManager.uploadFiles(testStaticIconUpload, new MultipleFileCompletionListener() { + @Override + public void onComplete(Map<String, String> errors) { + assertTrue(errors == null); + } + }); + } + }); + verify(internalInterface, times(0)).sendRequests(any(List.class), any(OnMultipleRequestListener.class)); + } + + /** + * Testing uploadFiles for static icons and nonStatic icons in the same list. + */ + public void testMultipleFileUploadsForPartialStaticIcon() { + ISdl internalInterface = mock(ISdl.class); + + doAnswer(onListFilesSuccess).when(internalInterface).sendRPC(any(ListFiles.class)); + doAnswer(onListFileUploadSuccess).when(internalInterface).sendRequests(any(List.class), any(OnMultipleRequestListener.class)); + + FileManagerConfig fileManagerConfig = new FileManagerConfig(); + final FileManager fileManager = new FileManager(internalInterface, mTestContext, fileManagerConfig); + fileManager.start(new CompletionListener() { + @Override + public void onComplete(boolean success) { + assertTrue(success); + SdlArtwork artwork = new SdlArtwork(StaticIconName.ALBUM); + SdlArtwork artwork2 = new SdlArtwork(StaticIconName.FILENAME); + List<SdlFile> testFileuploads = new ArrayList<>(); + testFileuploads.add(artwork); + testFileuploads.add(artwork2); + testFileuploads.add(validFile); + fileManager.uploadFiles(testFileuploads, new MultipleFileCompletionListener() { + @Override + public void onComplete(Map<String, String> errors) { + assertTrue(errors == null); + } + }); + } + }); + verify(internalInterface, times(1)).sendRequests(any(List.class), any(OnMultipleRequestListener.class)); } /** diff --git a/base/src/main/java/com/smartdevicelink/managers/file/BaseFileManager.java b/base/src/main/java/com/smartdevicelink/managers/file/BaseFileManager.java index b2c9bd8a2..89c99d167 100644 --- a/base/src/main/java/com/smartdevicelink/managers/file/BaseFileManager.java +++ b/base/src/main/java/com/smartdevicelink/managers/file/BaseFileManager.java @@ -386,16 +386,24 @@ abstract class BaseFileManager extends BaseSubManager { * @param files list of SdlFiles with file name and one of A) fileData, B) Uri, or C) resourceID set * @param listener callback that is called once core responds to all upload requests */ - public void uploadFiles(@NonNull List<? extends SdlFile> files, final MultipleFileCompletionListener listener){ - if(files.isEmpty()){ + public void uploadFiles(@NonNull List<? extends SdlFile> files, final MultipleFileCompletionListener listener) { + if (files.isEmpty()) { return; } final List<PutFile> putFileRequests = new ArrayList<>(); - for(SdlFile file : files){ - putFileRequests.add(createPutFile(file)); + for (SdlFile file : files) { + if (!file.isStaticIcon()) { + putFileRequests.add(createPutFile(file)); + } + } + // if all files are static icons we complete listener with no errors + if (putFileRequests.isEmpty()) { + Log.w(TAG, "Static icons don't need to be uploaded"); + listener.onComplete(null); + } else { + final Map<String, String> errors = new HashMap<>(); + sendMultipleFileOperations(putFileRequests, listener, errors); } - final Map<String, String> errors = new HashMap<>(); - sendMultipleFileOperations(putFileRequests, listener, errors); } /** |