Skip to content

Instantly share code, notes, and snippets.

@rmueller
Created April 25, 2012 22:35
Show Gist options
  • Save rmueller/2494026 to your computer and use it in GitHub Desktop.
Save rmueller/2494026 to your computer and use it in GitHub Desktop.
usando inner classes para definir cenários nos testes
using NSubstitute;
using NUnit.Framework;
namespace ERP.Entrada.BaixaPedidoTestes
{
public class FechamentoCarrinhoDeCompraTeste
{
private CarrinhoDeCompras carrinhoCompras;
private Cliente cliente;
private List itensCarrinho;
private IRepositorioCarrinhoCompras repositorioCarrinhoCompras;
private FechamentoCarrinhoDeCompra fechamentoCarrinhoDeCompra;
[SetUp]
public void SetUpComumParaClasseSendoTestada()
{
cliente = FactoryClienteTeste.Cria();
carrinhoCompras = FactoryCarrinhoCompraTeste.Criar(cliente);
itensCarrinho = new List();
repositorioCarrinhoCompras = Substitute.For<IRepositorioCarrinhoCompras>();
repositorioCarrinhoCompras.CompraAtual(cliente).Returns(carrinhoCompras);
repositorioCarrinhoCompras.Itens(carrinhoCompras).Returns(itensCarrinho);
fechamentoCarrinhoDeCompra = new FechamentoCarrinhoDeCompra(repositorioCarrinhoCompras);
}
public class ComCarrinhoVazio : FechamentoCarrinhoDeCompraTeste
{
[SetUp]
public void SetUpParaCenarioCarrinhoVazio()
{
// ...
}
[Test]
public void deve_emitir_um_aviso()
{// ...
}
// .. outros testes com carrinho vazio
}
public class ComItensNoValorAcimaPermitido : FechamentoCarrinhoDeCompraTeste
{
[SetUp]
public void SetUpComumParaCenariosItensAcimaValorPermitido()
{
var item1 = AdicionarItemAoCarrinho(carrinhoCompras).Com(x => x.Preco = 9999999);
var item2 = AdicionarItemAoCarrinho(carrinhoCompras).Com(x => x.Preco = 9999999);
}
[Test]
public void nao_deve_permitir_finalizar_compra()
{
fechamentoCarrinhoDeCompra.Fechar(carrinhoCompras);
DeveMarcarOCarrinhoComoInvalido();
}
[Test]
public void deve_notificar_alguem()
{
fechamentoCarrinhoDeCompra.Fechar(carrinhoCompras);
DeveNotificar();
}
}
public class ComItensCorretos : FechamentoCarrinhoDeCompraTeste
{
[SetUp]
public void SetUpCenarioItensCorretos()
{
// ...
}
[Test]
public void deve_publicar_evento_carrinho_fechado()
{
var item1 = AdicionarItemAoCarrinho(carrinhoCompras).Com(x => x.Preco=9999999);
fechamentoCarrinhoDeCompra.Fechar(carrinhoCompras);
DevePublicarEventoCarrinhoFechado();
}
[Test]
public void deve_fazer_isso_e_aquilo()
{
}
}
// Aqui ficam os métodos comuns em vários cenários
private void DevePublicarEventoCarrinhoFechado()
{
meuBus.Received(1).Publish(meuEventoCarrinhoFechado);
}
private void DeveNotificarSituacaoX()
{
// ...
}
private ItemCarrinhoCompra AdicionarItemAoCarrinho(CarrinhoDeCompras carrinho)
{
var item = FactoryItemCarrinhoTeste.Cria(carrinho);
repositorioCarrinhoCompras.Item(item.Id).Returns(item);
itensCarrinho.Add(item);
}
private void DeveMarcarOCarrinhoComoInvalido()
{
// ..
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment