Beleza Lucas, aqui está a classe:
[TestFixture]
class EncerradorDeLeilaoTest
{
private Leilao leilao;
private Leilao leilao2;
private List<Leilao> leiloes;
[SetUp]
public void SetUp()
{
this.leilao = new Leilao("Nintendo Switch");
this.leilao2 = new Leilao("Playstation");
this.leiloes = new List<Leilao>();
leiloes.Add(leilao);
leiloes.Add(leilao2);
}
[Test]
public void DeveEncerrarLeiloesIniciadosHaUmaSemana()
{
DateTime data = new DateTime(2018, 4, 30);
leilao.naData(data);
leilao2.naData(data);
//adicionar o mock do DAO para nao precisar acessar o banco de dados
var carteiro = new Mock<Carteiro>();
var dao = new Mock<RepositorioDeLeiloes>();
dao.Setup(m => m.correntes()).Returns(leiloes);
EncerradorDeLeilao encerrador = new EncerradorDeLeilao(dao.Object);
encerrador.encerra();
Assert.AreEqual(2, leiloes.Count);
Assert.AreEqual(2, encerrador.total);
Assert.IsTrue(leiloes[0].encerrado);
Assert.IsTrue(leiloes[1].encerrado);
}
[Test]
public void NaoDeveEncerrarLeiloesIniciadosHoje()
{
DateTime data = new DateTime();
data = DateTime.Today;
leilao.naData(data);
leilao2.naData(data);
var carteiro = new Mock<Carteiro>();
var dao = new Mock<RepositorioDeLeiloes>();
dao.Setup(m => m.correntes()).Returns(leiloes);
EncerradorDeLeilao encerrador = new EncerradorDeLeilao(dao.Object);
encerrador.encerra();
Assert.AreEqual(2, leiloes.Count);
Assert.AreEqual(0, encerrador.total);
Assert.IsFalse(leiloes[0].encerrado);
Assert.IsFalse(leiloes[1].encerrado);
}
[Test]
public void NaoFazerNadaQdoNaoTemNenhumLeilao()
{
List<Leilao> listaVazia = new List<Leilao>();
var carteiro = new Mock<Carteiro>();
var dao = new Mock<RepositorioDeLeiloes>();
dao.Setup(m => m.correntes()).Returns(listaVazia);
EncerradorDeLeilao encerrador = new EncerradorDeLeilao(dao.Object);
encerrador.encerra();
Assert.AreEqual(0, encerrador.total);
}
[Test]
public void DeveEncerrarOsLeiloesESalvarNoDao()
{
DateTime data = new DateTime(2012,4,3);
leilao.naData(data);
leilao2.naData(data);
var dao = new Mock<RepositorioDeLeiloes>();
dao.Setup(m => m.correntes()).Returns(leiloes);
var carteiro = new Mock<Carteiro>();
EncerradorDeLeilao encerrador = new EncerradorDeLeilao(dao.Object);
encerrador.encerra();
dao.Verify(m => m.atualiza(leilao),Times.Once());
dao.Verify(m => m.atualiza(leilao2),Times.Once());
}
}