AudioPlayerViewModel extends ViewModel implements MediaPlayer.OnCompletionListener { public void play(Clip clip) { LinkedList<Clip> playlist = new LinkedList<>(); playlist.add(clip); playNext(playlist); } AudioPlayerViewModel(MediaPlayerFactory mediaPlayerFactory, Scheduler scheduler); void play(Clip clip); void playInOrder(List<Clip> clips); void stop(); void pause(); LiveData<Boolean> isPlaying(@NonNull String clipID); LiveData<Integer> getPosition(String clipID); void setPosition(String clipID, Integer newPosition); void background(); @Override void onCompletion(MediaPlayer mediaPlayer); LiveData<Exception> getError(); void dismissError();  }
@Test public void play_resetsAndPreparesAndStartsMediaPlayer() throws Exception { viewModel.play(new Clip("clip1", "file: InOrder inOrder = Mockito.inOrder(mediaPlayer); inOrder.verify(mediaPlayer).reset(); inOrder.verify(mediaPlayer).setDataSource("file: inOrder.verify(mediaPlayer).prepare(); inOrder.verify(mediaPlayer).start(); }
@Test public void play_whenAlreadyingPlayingClip_startsMediaPlayer() { viewModel.play(new Clip("clip1", "file: viewModel.play(new Clip("clip1", "file: verify(mediaPlayer, times(1)).reset(); verify(mediaPlayer, times(2)).start(); }