예제 #1
0
        public void Deve_Notificar_Erro_Quando_Nao_Informar_Itens_Compra()
        {
            //Dado
            var solicitacao = new SolicitacaoCompra("rodrigoasth", "rodrigoasth");

            //Quando
            var ex = Assert.Throws <BusinessRuleException>(() => solicitacao.RegistrarCompra());

            //Então
            Assert.Equal("A solicitação de compra deve possuir itens!", ex.Message);
        }
예제 #2
0
        public void Deve_Definir_Prazo_30_Dias_Ao_Comprar_Mais_50_mil()
        {
            //Dado
            var solicitacao = new SolicitacaoCompra("rodrigoasth", "rodrigoasth");
            var produto     = new Produto("Cedro", "Transversal 3/3", Categoria.Madeira.ToString(), 1001);

            solicitacao.AdicionarItem(produto, 50);

            //Quando
            solicitacao.RegistrarCompra();

            //Então
            Assert.Equal(30, solicitacao.CondicaoPagamento.Valor);
        }
        public Task <bool> Handle(RegistrarCompraCommand command, CancellationToken cancellationToken)
        {
            var solicitacao = new SolicitacaoCompra(command.UsuarioSolicitante, command.NomeFornecedor);

            command.Itens.ToList().ForEach(x =>
            {
                var produto = _produtoRepository.Obter(x.IdProduto);
                solicitacao.AdicionarItem(produto, x.Qtde);
            });
            solicitacao.RegistrarCompra();

            _solicitacaoCompraRepository.RegistrarCompra(solicitacao);

            Commit();
            PublishEvents(solicitacao.Events);

            return(Task.FromResult(true));
        }