public class EncerradorDeLeilaoTeste {
private RepositorioDeLeiloes daoFalso;
private Carteiro carteiroFalso;
private EncerradorDeLeilao encerrador;
@Before
public void before() {
this.daoFalso = mock(RepositorioDeLeiloes.class);
this.carteiroFalso = mock(Carteiro.class);
this.encerrador = new EncerradorDeLeilao(daoFalso, carteiroFalso);
}
@Test
public void naoDeveChamarCarteiroCasoDaoFalhe() {
Calendar antiga = Calendar.getInstance();
antiga.set(1999, 1, 20);
Leilao leilao1 = new CriadorDeLeilao().para("TV de plasma").naData(antiga).constroi();
Leilao leilao2 = new CriadorDeLeilao().para("Geladeira").naData(antiga).constroi();
when(daoFalso.correntes()).thenReturn(Arrays.asList(leilao1, leilao2));
doThrow(new RuntimeException()).when(daoFalso).atualiza(leilao1);
doThrow(new RuntimeException()).when(daoFalso).atualiza(leilao2);
encerrador.encerra();
verify(carteiroFalso, never()).envia(leilao1);
verify(carteiroFalso, never()).envia(leilao2);
}
}