Skip to content

Instantly share code, notes, and snippets.

@tucaz
Created August 23, 2010 11:29
Show Gist options
  • Save tucaz/545285 to your computer and use it in GitHub Desktop.
Save tucaz/545285 to your computer and use it in GitHub Desktop.
[TestClass]
public class dado_uma_nova_reserva_com_produtos_em_estoque
{
[TestInitialize]
public void quando()
{
tenho_produtos_em_estoque();
e_tenho_produto_selecionado();
e_tenho_cliente();
e_tenho_origem();
e_efetuo_uma_nova_reserva();
}
[TestMethod]
public void deve_verificar_se_o_produto_esta_em_estoque()
{
EstoqueMock.Verify(x => x.ProdutoEmEstoque(CodigoProdutoSelecionado, Quantidade, (OrigemVenda)CodigoOrigem));
}
[TestMethod]
public void deve_salvar_a_reserva()
{
ReservaRep.Verify(x => x.Salvar(novaReserva));
}
[TestMethod]
public void deve_retornar_uma_reserva()
{
Assert.IsNotNull(novaReserva);
}
[TestMethod]
public void deve_retornar_uma_reserva_com_numero_valido()
{
Reserva reserva = reservaServ.EfetuarReserva(CodigoProdutoSelecionado, Quantidade, EmailCliente, CodigoOrigem);
bool existeNumeroReserva = novaReserva != null && novaReserva.Codigo > 0;
Assert.IsTrue(existeNumeroReserva);
}
[TestMethod]
public void deve_retornar_uma_reserva_com_produto_reservado()
{
bool existeProdutoReservado = novaReserva != null && novaReserva.ProdutoReservado != null && novaReserva.Quantidade == 1;
Assert.IsTrue(existeProdutoReservado);
}
[TestMethod]
public void deve_retornar_uma_reserva_com_cliente_solicitante()
{
bool existeClienteSolicitante = novaReserva != null && !String.IsNullOrEmpty(novaReserva.EmailCliente);
Assert.IsTrue(existeClienteSolicitante);
}
[TestMethod]
public void deve_retornar_uma_reserva_com_origem_informada()
{
bool existeOrigem = novaReserva != null && novaReserva.OrigemReserva == OrigemVenda.Site;
Assert.IsTrue(existeOrigem);
}
[TestMethod]
public void deve_retornar_uma_reserva_com_status_vigente()
{
Assert.AreEqual(StatusReserva.Vigente, novaReserva.Status);
}
Reserva novaReserva;
ReservaService reservaServ;
private int CodigoProdutoSelecionado;
private int Quantidade;
private string EmailCliente;
private int CodigoOrigem;
Mock<Estoque> EstoqueMock;
Mock<IReserva> ReservaRep;
Mock<TodosProdutos> ProdutoRep;
private void tenho_produtos_em_estoque()
{
EstoqueMock = new Mock<Estoque>();
EstoqueMock.Setup(x => x.ProdutoEmEstoque(It.IsAny<int>(), It.IsAny<int>(), It.IsAny<OrigemVenda>())).Returns(true);
Estoque consultaEstoque = EstoqueMock.Object;
ReservaRep = new Mock<IReserva>();
ReservaRep.Setup(x => x.Salvar(It.IsAny<Reserva>())).Callback<Reserva>(x => ObjectHelper.IncrementarEntidade(x, "Codigo"));
IReserva reservaRep = ReservaRep.Object;
ProdutoRep = new Mock<TodosProdutos>();
ProdutoRep.Setup(x => x.RecuperarPorCodigo(It.IsAny<int>())).Returns(ObjectHelper.CriarNovoProduto());
TodosProdutos produtoRep = ProdutoRep.Object;
reservaServ = new ReservaService(consultaEstoque, reservaRep, produtoRep);
}
private void e_tenho_produto_selecionado()
{
CodigoProdutoSelecionado = 0;
Quantidade = 1;
}
private void e_tenho_cliente()
{
EmailCliente = "[email protected]";
}
private void e_tenho_origem()
{
CodigoOrigem = OrigemVenda.Site.GetHashCode();
}
private void e_efetuo_uma_nova_reserva()
{
novaReserva = reservaServ.EfetuarReserva(CodigoProdutoSelecionado, Quantidade, EmailCliente, CodigoOrigem);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment