Created
April 25, 2012 22:35
-
-
Save rmueller/2494026 to your computer and use it in GitHub Desktop.
usando inner classes para definir cenários nos testes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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