@Test public void hit_network_when_local_fails() { when(localGateway.obtainContacts()).thenThrow(new LocalException()); interactor.call(); verify(networkGateway).obtainContacts(); }
@Override public void delete(List<Contact> purgue) { if (purgue != null && purgue.size() > 0) { try { List<String> deleteMd5s = new ArrayList<>(); for (Contact purgueContact : purgue) { deleteMd5s.add(purgueContact.getMd5()); } internalDeleteContacts(deleteMd5s); } catch (Throwable e) { throw new LocalException(); } } }
@Override public void persist(List<Contact> contacts) { try { for (Contact contact : contacts) { BddContact bddContact = mapper.inverseMap(contact); bddContact.setPersistedTime(System.currentTimeMillis()); persistor.persist(bddContact); } } catch (SQLException e) { throw new LocalException(); } }
@Override public List<Contact> obtainContacts() { try { List<BddContact> bddContacts = daoContacts.queryForAll(); if (!listCachingStrategy.isValid(bddContacts)) { deleteBddContacts(listCachingStrategy.candidatesToPurgue(bddContacts)); } ArrayList<Contact> contacts = new ArrayList<>(); for (BddContact bddContact : bddContacts) { contacts.add(mapper.map(bddContact)); } return contacts; } catch (java.sql.SQLException e) { throw new LocalException(); } }
@Override public Contact obtain(String md5) { try { BddContact bddContact = daoContacts.queryBuilder().where().eq(BddContact.FIELD_MD5, md5).queryForFirst(); if (!cachingStrategy.isValid(bddContact)) { return null; } return mapper.map(bddContact); } catch (Throwable e) { throw new LocalException(); } }