Let's start changing the repository to trigger an exception(typo in the orderby clause): DatabaseBooksRepository.java ``` public class DatabaseBooksRepository implements BooksRepository { private final DatabaseHelper databaseHelper; public DatabaseBooksRepository(Content context) { databaseHelper = OpenHelperManager.getHelper(context, DatabaseHelper.class); } @Override public List getBooks(){ try{ return databaseHelper.getbookDaO().queryBuilder() .orderBy("orderXXX", tru) .query(); } catch { throw new RuntimeException("boom"); } } } ``` the new scenario for testing it would look like this: BooksActivityPresenterTest.java ``` import org.junit.Test; import org.junit.Asserts; import org.junit.runner.RunWith; import org.mockito.junit.MockitoJUnitRunner; public class BooksActivityPresenterTest { @Rule public MockitoRule mockitoRule = MockitoJUnit.rule(); @Mock BooksRepository booksRepository; @Mock BooksActivityView view; BooksActivityPresenter presenter; @Before public void setUp() { presenter = new BooksActivityPresenter(view, booksRepository); } @Test public void shouldHandleAnException() { Mockito.when(booksRepository.getBooks()) .thenThrown(new RuntimeException("boom"))); presenter.loadBooks(); Mockito.verify(view).displayError(); } } ``` Now we need to implement this new displayError method: BooksActivityView.js ``` public interface BookActivityView { void displayBooks(List bookList); void displayNoBooks(); void displayError(); } ``` And as our BooksActivity implements this interface we need to declare there our view method and the logic for that: ``` BooksActivity.java ``` public class BooksActivity extend BaseActivity implements BooksActivityView { private BooksActivityPresenter presenter; @override protected void onCreate(...){ .... } @Override public void displayBooks(List bookList) { ... } @Override public void displayNoBooks() { ... }; @Override public void displayError() { Toast.makeText(this, "Errror accessing data", Toast.LENGTH_SHORT).show(); }; } ``` And we need to reflect this change on the main: BooksActivityPresenter.java ``` public class BooksActivityPresenter { public BooksActivityPresenter(BooksActivityView view, BooksRepository booksRepository) { this.view = view; this.booksRepository = booksRepository } public void loadBooks(){ List listBooks; try { listBooks = booksRepository.getBooks(); // Here the presenter does not know anything about the repository // the presenter just wait for getting an array of values and that's it if(listBooks.isEmpty()){ view.displayNoBooks(); } else { view.displayBooks(bookList); } } catch(Exception e) { view.displayError(); } } } ```