public PedidoCommandHandlerTests()
        {
            _mocker        = new AutoMocker();
            _pedidoHandler = _mocker.CreateInstance <PedidoCommandHandler>();

            _clienteId = Guid.NewGuid();
            _produtoId = Guid.NewGuid();

            _pedido = Pedido.PedidoFactory.NovoPedidoRascunho(_clienteId);
        }
        public async Task DeveRetornarErroSeGarcomComandaNaoExisteNoBanco()
        {
            var handler = new PedidoCommandHandler(
                _pedidoRepository,
                _garcomRepository,
                _comandaRepository,
                _historicoPedidoRepository,
                _produtoPedidoRepository,
                _clienteRepository,
                _mediator);
            var command = new CriarPedidoCommand(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), _helperEntitiesTest.ProdutosPedido);

            var retorno = await handler.Handle(command, new CancellationToken());

            Assert.Equal(Guid.Empty, retorno);
        }
        public async Task DeveRetornarErroSePedidoNaoExistirAoAlterarSituacao()
        {
            var handler = new PedidoCommandHandler(
                _pedidoGetEntityNullRepository,
                _garcomRepository,
                _comandaRepository,
                _historicoPedidoRepository,
                _produtoPedidoRepository,
                _clienteRepository,
                _mediator);
            var command = new AlterarSituacaoPedidoCommand(Guid.NewGuid(), Enums.EnumSituacaoPedido.Aberto);

            var retorno = await handler.Handle(command, new CancellationToken());

            Assert.Equal(Guid.Empty, retorno);
        }
        public async Task DeveRetornarErroQuantidadeProdutoIncorretaAdicionarProdutoPedido()
        {
            var handler = new PedidoCommandHandler(
                _pedidoRepository,
                _garcomRepository,
                _comandaRepository,
                _historicoPedidoRepository,
                _produtoPedidoRepository,
                _clienteRepository,
                _mediator);

            var command = new AdicionarProdutoPedidoCommand(Guid.NewGuid(), Guid.NewGuid(), 0);

            var retorno = await handler.Handle(command, new CancellationToken());

            Assert.Equal(Guid.Empty, retorno);
        }
        public async Task DeveRetornarErroSePedidoNaoExistirAoRemoverProdutoPedido()
        {
            var handler = new PedidoCommandHandler(
                _pedidoGetEntityNullRepository,
                _garcomRepository,
                _comandaRepository,
                _historicoPedidoRepository,
                _produtoPedidoRepository,
                _clienteRepository,
                _mediator);

            var command = new RemoverProdutoPedidoCommand(Guid.NewGuid());

            var retorno = await handler.Handle(command, new CancellationToken());

            Assert.False(retorno);
        }
        public async Task DeveRetornarErroSeInformarSituacaoInvalidaAoAlterarSituacao()
        {
            var handler = new PedidoCommandHandler(
                _pedidoRepository,
                _garcomRepository,
                _comandaRepository,
                _historicoPedidoRepository,
                _produtoPedidoRepository,
                _clienteRepository,
                _mediator);

            EnumSituacaoPedido enumSituacaoPedido = Enum.Parse <EnumSituacaoPedido>("9999");

            var command = new AlterarSituacaoPedidoCommand(Guid.NewGuid(), enumSituacaoPedido);

            var retorno = await handler.Handle(command, new CancellationToken());

            Assert.Equal(Guid.Empty, retorno);
        }