public void CriarPedido_When_Cliente_Null_Should_Throw_Exception(string cliente) { //arrange //act Action action = () => pedidoManager.CriarPedido(cliente); //assert //Assert.ThrowsException<ArgumentNullException>(action); action .Should() .Throw <ArgumentNullException>() .Which.ParamName.Should().Be("cliente"); }
//[ExpectedException(typeof(ApplicationException))] public void CriarPedido_Erro_BancoDeDados() { //Arrange pedidoDALmock .Setup(x => x.Create(It.IsAny <string>())) .Throws(new ApplicationException("Erro ao criar pedido no banco de dados.")) .Verifiable(); loggerMock .Setup(x => x.Error("Erro ao criar pedido no banco de dados.")) .Verifiable(); //Act PedidoManager pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALmock.Object, produtoDALmock.Object); Action action = () => pedidoManager.CriarPedido("Fulano de Tal"); //Assert action.Should().Throw <ApplicationException>() .And .Message.Should().Be("Erro ao criar pedido no banco de dados."); Mock.Verify(pedidoDALmock); Mock.Verify(loggerMock); }
public void AdicionarItem_Produto_Nao_Encontrado() { //arrange pedidoDALMock .Setup(x => x.Create("José da Silva")) .Returns(new Model.Pedido() { Id = 1000, Cliente = "José da Silva", Itens = new List <Model.ItemPedido>(), Status = Model.PedidoStatus.Aberto, Total = 0 }); KeyNotFoundException exception = new KeyNotFoundException(); produtoDALMock .Setup(x => x.Get("abc")) .Throws(exception) .Verifiable(); var pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object); var pedido = pedidoManager.CriarPedido("José da Silva"); //act Action action = () => pedidoManager.AdicionarItem(pedido, "abc", 1); //assert action.Should().Throw <ProdutoNaoEncontradoException>(); produtoDALMock.Verify(); loggerMock.Verify(x => x.Error(exception.Message, exception)); }
public void AdicionarItem_Codigo_Invalido(string codigo) { //arrange pedidoDALMock .Setup(x => x.Create("José da Silva")) .Returns(new Model.Pedido() { Id = 1000, Cliente = "José da Silva", Itens = new List <Model.ItemPedido>(), Status = Model.PedidoStatus.Aberto, Total = 0 }); var pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object); var pedido = pedidoManager.CriarPedido("José da Silva"); //act Action action = () => pedidoManager.AdicionarItem(pedido, codigo, 1); //assert action.Should().Throw <ArgumentNullException>() .And .ParamName.Should().Be("codigo"); }
public void CriarPedido_Cliente_Nao_Informado(string cliente) { //arrange var pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object); //act pedidoManager.CriarPedido(cliente); }
public void CriarPedido_Cliente_Nulo(string nomeCliente) { //Arrange //Act PedidoManager pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALmock.Object, produtoDALmock.Object); Action action = () => pedidoManager.CriarPedido(nomeCliente); //Assert action.Should().Throw <ArgumentNullException>() .And .ParamName.Should().Be("cliente"); }
public void CriarPedido_Success(int pedidoId, string cliente) { //Red -> Green -> Refactor ///3 As //arrange - preparação //Mock = boneco/imitação/fantoche loggerMock .Setup(x => x.Info($"Pedido {pedidoId} gravado com sucesso.")) //.Setup(x => x.Info(It.IsAny<string>())) .Verifiable(); pedidoDALmock .Setup(x => x.Create(It.IsAny <string>())) .Returns(new Model.Pedido() { Id = pedidoId, Total = 0, Cliente = cliente, Status = Model.PedidoStatus.Aberto, Itens = new List <Model.ItemPedido>() }) .Verifiable(); IPedidoManager pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALmock.Object, produtoDALmock.Object); //act var pedido = pedidoManager.CriarPedido("Fulano de Tal"); //assert Assert.AreEqual(cliente, pedido.Cliente); Assert.AreEqual(Model.PedidoStatus.Aberto, pedido.Status); Assert.AreEqual(0, pedido.Itens.Count); pedido.Id.Should().Be(pedidoId); pedido.Total.Should().Be(0); pedido.Cliente.Should().Be(cliente); pedido.Status.Should().Be(Model.PedidoStatus.Aberto); pedido.Itens.Should().BeEmpty(); Mock.Verify(loggerMock); Mock.Verify(pedidoDALmock); //Mock.VerifyAll(); }
public void CriarPedido_Erro_BancoDeDados() { //arrange pedidoDALMock .Setup(x => x.Create(It.IsAny <string>())) .Throws(new ApplicationException("Erro ao criar pedido no banco de dados.")) .Verifiable(); loggerMock .Setup(x => x.Error("Erro ao criar pedido no banco de dados.")) .Verifiable(); //act PedidoManager pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object); //assert var pedido = pedidoManager.CriarPedido("Fulano de Tal"); }
public void CriarPedido_Success(int pedidoId, string cliente) { pedidoDALMock .Setup(x => x.Create(cliente)) .Returns(new Model.Pedido() { Id = pedidoId, Cliente = cliente, Itens = new List <Model.ItemPedido>(), Status = Model.PedidoStatus.Aberto, Total = 0 }); loggerMock .Setup(x => x.Info($"Pedido {pedidoId} gravado com sucesso.")) .Verifiable(); //arrange IPedidoManager pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object); //act var pedido = pedidoManager.CriarPedido(cliente); //assert //Assert.AreEqual(Model.PedidoStatus.Aberto, pedido.Status); //Assert.AreEqual("Fulano de Tal", pedido.Cliente); //Assert.AreEqual(1000, pedido.Id); //Assert.AreEqual(0, pedido.Total); //Assert.AreEqual(0, pedido.Itens.Count); // Efetua todas as validações, mesmo que uma falhe using (new AssertionScope()) { pedido.Id.Should().Be(pedidoId); pedido.Total.Should().Be(0); pedido.Status.Should().Be(Model.PedidoStatus.Aberto); pedido.Cliente.Should().Be(cliente); pedido.Itens.Should().BeEmpty(); } Mock.Verify(pedidoDALMock); Mock.Verify(loggerMock); loggerMock.Verify(x => x.Info($"Pedido {pedidoId} gravado com sucesso."), Times.Once); }
public void AdicionarItem_Quantidade_Invalida(int quantidade) { //arrange pedidoDALMock .Setup(x => x.Create("José da Silva")) .Returns(new Model.Pedido() { Id = 1000, Cliente = "José da Silva", Itens = new List <Model.ItemPedido>(), Status = Model.PedidoStatus.Aberto, Total = 0 }); var pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object); var pedido = pedidoManager.CriarPedido("José da Silva"); //act Action action = () => pedidoManager.AdicionarItem(pedido, "abc", quantidade); //assert action.Should().Throw <ArgumentOutOfRangeException>() .And .ParamName.Should().Be("quantidade"); }
public void AdicionarItem_Success(int produtoId, string codigo, int quantidade, double precoUnitario) { //arrange var p = new Model.Pedido() { Id = 1000, Cliente = "José da Silva", Itens = new List <Model.ItemPedido>(), Status = Model.PedidoStatus.Aberto, Total = 0 }; var i = new Model.ItemPedido(produtoId, quantidade, (decimal)precoUnitario); pedidoDALMock .Setup(x => x.Create("José da Silva")) .Returns(p) .Verifiable(); pedidoDALMock .Setup(x => x.AddItem(p, i)) .Callback(() => { p.Itens.Add(i); }) .Verifiable(); KeyNotFoundException exception = new KeyNotFoundException(); produtoDALMock .Setup(x => x.Get("abc")) .Returns(new Produto("abc", "produto abc", 10.0m) { Id = 1 }); produtoDALMock .Setup(x => x.Get("def")) .Returns(new Produto("def", "produto def", 20.0m) { Id = 2 }); produtoDALMock .Setup(x => x.Get("ghi")) .Returns(new Produto("ghi", "produto ghi", 30.0m) { Id = 3 }); var pedidoManager = new PedidoManager(loggerMock.Object, pedidoDALMock.Object, produtoDALMock.Object); var pedido = pedidoManager.CriarPedido("José da Silva"); //act var item = pedidoManager.AdicionarItem(pedido, codigo, quantidade); //assert produtoDALMock.Verify(x => x.Get(codigo)); pedidoDALMock.Verify(); pedido.Itens .Should().NotBeEmpty() .And .HaveCount(1) .And .Contain(new ItemPedido(produtoId, quantidade, (decimal)precoUnitario)); }