From 57ed5ab4bc520e297c6e4790f09caa968f813896 Mon Sep 17 00:00:00 2001 From: SaumiaSinghal Date: Tue, 4 Aug 2020 21:56:54 +0530 Subject: [PATCH] fix #4005 --- .../collect/android/widgets/AudioWidget.java | 6 ++-- .../android/widgets/AudioWidgetTest.java | 35 ++++++++++--------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/collect_app/src/main/java/org/odk/collect/android/widgets/AudioWidget.java b/collect_app/src/main/java/org/odk/collect/android/widgets/AudioWidget.java index 9487080629d..3d24e1802b0 100644 --- a/collect_app/src/main/java/org/odk/collect/android/widgets/AudioWidget.java +++ b/collect_app/src/main/java/org/odk/collect/android/widgets/AudioWidget.java @@ -134,6 +134,7 @@ protected View onCreateAnswerView(Context context, FormEntryPrompt prompt, int a @Override public void deleteFile() { + audioHelper.stop(); mediaManagerListener.markOriginalFileOrDelete(getFormEntryPrompt().getIndex().toString(), getInstanceFolder() + File.separator + binaryName); binaryName = null; @@ -189,7 +190,7 @@ public void setBinaryData(Object object) { } if (newAudio.exists()) { - // Add the copy to the content provier + // Add the copy to the content provider ContentValues values = new ContentValues(6); values.put(Audio.Media.TITLE, newAudio.getName()); values.put(Audio.Media.DISPLAY_NAME, newAudio.getName()); @@ -198,8 +199,7 @@ public void setBinaryData(Object object) { mediaManagerListener.replaceRecentFileForQuestion(getFormEntryPrompt().getIndex().toString(), newAudio.getAbsolutePath()); - Uri audioURI = getContext().getContentResolver().insert( - Audio.Media.EXTERNAL_CONTENT_URI, values); + Uri audioURI = getContext().getContentResolver().insert(Audio.Media.EXTERNAL_CONTENT_URI, values); if (audioURI != null) { Timber.i("Inserting AUDIO returned uri = %s", audioURI.toString()); diff --git a/collect_app/src/test/java/org/odk/collect/android/widgets/AudioWidgetTest.java b/collect_app/src/test/java/org/odk/collect/android/widgets/AudioWidgetTest.java index b877d2b89c6..bf925f1ecb5 100644 --- a/collect_app/src/test/java/org/odk/collect/android/widgets/AudioWidgetTest.java +++ b/collect_app/src/test/java/org/odk/collect/android/widgets/AudioWidgetTest.java @@ -74,7 +74,7 @@ public class AudioWidgetTest { private AudioControllerView audioController; private FileUtil fileUtil; private MediaUtil mediaUtil; - private AudioHelper audioHelper; + private FakeAudioHelper audioHelper; private MediaManagerListener mockedMediaManagerListener; private ActivityAvailability activityAvailability; private FormIndex formIndex; @@ -138,16 +138,18 @@ public void whenPromptHasAnswer_updatesPlayerMedia() { AudioWidget widget = createWidget(promptWithAnswer(new StringData(FILE_PATH))); Clip clip = getAnswerAudioClip(widget.getInstanceFolder(), widget.getAnswer()); - assertThat(((FakeAudioHelper) widget.audioHelper).getAudioController(), equalTo(audioController)); - assertThat(((FakeAudioHelper) widget.audioHelper).getClip().getURI(), equalTo(clip.getURI())); + assertThat(audioHelper.audioController, equalTo(audioController)); + assertThat(audioHelper.clip.getURI(), equalTo(clip.getURI())); verify(audioController).showPlayer(); } @Test - public void deleteFile_removesWidgetAnswer() { + public void deleteFile_removesWidgetAnswerAndStopsPlayingMedia() { AudioWidget widget = createWidget(promptWithAnswer(new StringData(FILE_PATH))); widget.deleteFile(); + assertThat(widget.getAnswer(), nullValue()); + assertThat(audioHelper.isMediaStopped, equalTo(true)); } @Test @@ -168,6 +170,7 @@ public void clearAnswer_removesAnswerAndHidesPlayer() { widget.clearAnswer(); assertThat(widget.getAnswer(), nullValue()); + assertThat(audioHelper.isMediaStopped, equalTo(true)); verify(audioController).hidePlayer(); } @@ -220,12 +223,11 @@ public void setData_whenDataIsUri_copiesNewFileToSource() { public void setData_whenFileExists_callsMediaManagerListener() { FormEntryPrompt prompt = promptWithAnswer(new StringData(FILE_PATH)); when(prompt.getIndex()).thenReturn(formIndex); - when(mockedFile.getAbsolutePath()).thenReturn("newFilePath/newFile.mp3"); - AudioWidget widget = createWidget(promptWithAnswer(new StringData(FILE_PATH))); + AudioWidget widget = createWidget(prompt); widget.setBinaryData(mockedFile); - verify(mockedMediaManagerListener).replaceRecentFileForQuestion("0, 0", "newFilePath/newFile.mp3"); + verify(mockedMediaManagerListener).replaceRecentFileForQuestion("questionIndex", "newFilePath"); } @Test @@ -277,8 +279,8 @@ public void setData_whenFileExists_updatesPlayerMedia() { widget.setBinaryData(mockedFile); Clip clip = getAnswerAudioClip(widget.getInstanceFolder(), widget.getAnswer()); - assertThat(((FakeAudioHelper) widget.audioHelper).getAudioController(), equalTo(audioController)); - assertThat(((FakeAudioHelper) widget.audioHelper).getClip().getURI(), equalTo(clip.getURI())); + assertThat(audioHelper.audioController, equalTo(audioController)); + assertThat(audioHelper.clip.getURI(), equalTo(clip.getURI())); verify(audioController, times(2)).showPlayer(); } @@ -404,12 +406,14 @@ private String getAudioFilePath(String instanceFolderPath, IAnswerData answer) { } public static class FakeAudioHelper extends AudioHelper { + public AudioControllerView audioController; + public Clip clip; - private AudioControllerView audioController; - private Clip clip; + public boolean isMediaStopped; public FakeAudioHelper(FragmentActivity activity, LifecycleOwner lifecycleOwner, Scheduler scheduler, Supplier mediaPlayerFactory) { super(activity, lifecycleOwner, scheduler, mediaPlayerFactory); + isMediaStopped = false; } @Override @@ -418,12 +422,9 @@ public void setAudio(AudioControllerView view, Clip clip) { this.clip = clip; } - public AudioControllerView getAudioController() { - return audioController; - } - - public Clip getClip() { - return clip; + @Override + public void stop() { + isMediaStopped = true; } } } \ No newline at end of file