Esempio n. 1
0
        public async Task CriarEntidadeInvalida_RestauranteNaoInformado_GeraException()
        {
            var options       = OptionsContext();
            var idRestaurante = Guid.NewGuid();

            using (var contexto = new ContextoBdAplicacao(options))
            {
                //Preparar
                await contexto.AddAsync(new Restaurante
                {
                    Id   = idRestaurante,
                    Nome = "restaurante"
                });

                await contexto.SaveChangesAsync();

                var servicoEmTeste = new ServicoPersistenciaPrato(contexto, BuscaMapper());

                //Executar
                var novomodel = new PratoPersistenciaModel
                {
                    Nome = "novo-restaurante"
                };

                Func <Task> act = async() => { await servicoEmTeste.Criar(novomodel); };
                act.Should().Throw <ValidacaoPersistenciaException>()
                .WithMessage("Entidade inválida")
                .And.Erros.Should().BeEquivalentTo(new[] {
                    new ErroValidacaoPropriedade("Restaurante", new [] { "restaurante obrigatório" })
                });
            }
        }
Esempio n. 2
0
        public void CriarEntidadeInvalida_PrecoNegativo_GeraException()
        {
            var options       = OptionsContext();
            var idRestaurante = Guid.NewGuid();

            using (var contexto = new ContextoBdAplicacao(options))
            {
                //Preparar
                var servicoEmTeste = new ServicoPersistenciaPrato(contexto, BuscaMapper());

                //Executar
                var novomodel = new PratoPersistenciaModel
                {
                    RestauranteId = idRestaurante,
                    Nome          = "prato-a",
                    Preco         = -1
                };

                Func <Task> act = async() => { await servicoEmTeste.Criar(novomodel); };
                act.Should().Throw <ValidacaoPersistenciaException>()
                .WithMessage("Entidade inválida")
                .And.Erros.Should().BeEquivalentTo(new[] {
                    new ErroValidacaoPropriedade("Preco", new [] { "Preço não pode ser menor que zero" })
                });
            }
        }
Esempio n. 3
0
        public void CriarEntidadeInvalida_NomeExcedeTamanho_GeraException()
        {
            var options       = OptionsContext();
            var idRestaurante = Guid.NewGuid();

            using (var contexto = new ContextoBdAplicacao(options))
            {
                //Preparar
                var servicoEmTeste = new ServicoPersistenciaPrato(contexto, BuscaMapper());

                //Executar
                var novomodel = new PratoPersistenciaModel
                {
                    RestauranteId = idRestaurante,
                    Nome          = new String('0', 101)
                };

                Func <Task> act = async() => { await servicoEmTeste.Criar(novomodel); };
                act.Should().Throw <ValidacaoPersistenciaException>()
                .WithMessage("Entidade inválida")
                .And.Erros.Should().BeEquivalentTo(new[] {
                    new ErroValidacaoPropriedade("Nome", new [] { "nome pode ter no máximo 100 caracteres" })
                });
            }
        }
Esempio n. 4
0
        public async Task CriarEntidade_OK()
        {
            var options       = OptionsContext();
            var idRestaurante = Guid.NewGuid();

            using (var contexto = new ContextoBdAplicacao(options))
            {
                //Preparar
                await contexto.AddAsync(new Restaurante
                {
                    Id   = idRestaurante,
                    Nome = "restaurante"
                });

                await contexto.SaveChangesAsync();

                var servicoEmTeste = new ServicoPersistenciaPrato(contexto, BuscaMapper());

                //Executar
                var novomodel = new PratoPersistenciaModel
                {
                    RestauranteId = idRestaurante,
                    Nome          = "novo-prato"
                };
                await servicoEmTeste.Criar(novomodel);
            }

            using (var contextoVerificacao = new ContextoBdAplicacao(options))
            {
                //Verificar
                var entidades = await contextoVerificacao.Pratos.ToListAsync();

                entidades.Should().HaveCount(1);

                var entidade = entidades.FirstOrDefault();
                entidade.Id.Should().NotBeEmpty();
                entidade.DataAlteracao.Should().BeCloseTo(DateTimeOffset.Now, intervaloDatas);
                entidade.DataCriacao.Should().BeCloseTo(DateTimeOffset.Now, intervaloDatas);
                entidade.Excluido.Should().BeFalse();
                entidade.Nome.Should().Be("novo-prato");
                entidade.RestauranteId.Should().Be(idRestaurante);
            }
        }