@Test
  public void testGetListDownloads_Error_ReturnsErrorMessage() {
    downloadsPresenter.loadListDownloads();
    verify(downloadsView).showLoading(true);
    verify(bookRepository).getDownloadedBooks(bookloadedCaptor.capture());
    bookloadedCaptor.getValue().onBooksLoadError(new Exception("Blah books didn't load"));

    verify(downloadsView).showLoading(false);
    verify(downloadsView).showErrorScreen(true, "Blah books didn't load", true);
  }
  @Test
  public void testGetListDownloads_ReturnsDownloads() {

    downloadsPresenter.loadListDownloads();
    verify(downloadsView).showLoading(true);
    verify(bookRepository).getDownloadedBooks(bookloadedCaptor.capture());
    BOOKS.add(new BookDetail("test title", "test", "2", language));
    bookloadedCaptor.getValue().onBooksLoaded(BOOKS);

    verify(downloadsView).showLoading(false);
    verify(downloadsView).showDownloadedBooks(BOOKS);
  }
  @Test
  public void testDeleteDownload_RemovesDownloadKeepsOthers() {
    BookDetail bookDetail = new BookDetail("Fake Book", "http://test.com", "123", language);
    downloadsPresenter.deleteDownload(bookDetail);

    verify(bookRepository)
        .deleteBook(any(BookDetail.class), deleteBookCallBackArgumentCaptor.capture());
    deleteBookCallBackArgumentCaptor.getValue().onBookDeleted(bookDetail);
    BOOKS.add(new BookDetail("test title", "book cover", "23", new Language()));
    verify(bookRepository).getDownloadedBooks(bookloadedCaptor.capture());
    bookloadedCaptor.getValue().onBooksLoaded(BOOKS);

    verify(downloadsView).showDownloadedBooks(BOOKS);
  }