Exemplo n.º 1
0
        public void DeveRealizarATransformacaoDoArquivoDeAc()
        {
            var configBairroMock = new Mock <IConfiguracaoItem>(MockBehavior.Strict);

            configBairroMock.SetupGet(mock => mock.PathObjeto).Returns(@"neighborhoods");
            configBairroMock.SetupGet(mock => mock.PropriedadeNome).Returns(@"name");
            configBairroMock.SetupGet(mock => mock.PropriedadeHabitantes).Returns(@"population");

            var configCidadeMock = new Mock <IConfiguracaoItem>(MockBehavior.Strict);

            configCidadeMock.SetupGet(mock => mock.PathObjeto).Returns(@"cities");
            configCidadeMock.SetupGet(mock => mock.PropriedadeNome).Returns(@"name");
            configCidadeMock.SetupGet(mock => mock.PropriedadeHabitantes).Returns(@"population");

            var configMock = new Mock <IConfiguracao>(MockBehavior.Strict);

            configMock.SetupGet(mock => mock.ConfiguracaoBairro).Returns(configBairroMock.Object);
            configMock.SetupGet(mock => mock.ConfiguracaoCidade).Returns(configCidadeMock.Object);

            const string UF = @"ac";

            ConfiguracaoPool.AdicionarOuAtualizarConfiguracao(UF, configMock.Object);

            const string CONTENT_TYPE     = @"application/json";
            const string CONTEUDO_ARQUIVO = @"
                {
                    ""cities"": [
                        {
                            ""name"": ""Rio Branco"",
                            ""population"": 576589,
                            ""neighborhoods"": [
                                {
                                ""name"": ""Habitasa"",
                                ""population"": 7503
                                }
                            ]
                        }
                    ]
                }            
            ";

            var parser  = new RetornoParser(UF);
            var retorno = parser.Parse(CONTENT_TYPE, CONTEUDO_ARQUIVO);

            Assert.IsNotNull(retorno);
            Assert.AreEqual(1, retorno.Cidades.Count);
            Assert.AreEqual("Rio Branco", retorno.Cidades[0].Nome);
            Assert.AreEqual(576589, retorno.Cidades[0].Habitantes);
            Assert.AreEqual(1, retorno.Cidades[0].Bairros.Count);
            Assert.AreEqual("Habitasa", retorno.Cidades[0].Bairros[0].Nome);
            Assert.AreEqual(7503, retorno.Cidades[0].Bairros[0].Habitantes);
        }
        public async Task <IActionResult> Transformar(
            [FromRoute] string uf,
            [SwaggerParameter(Required = true)]
            [FromForm] IFormFile arquivo)
        {
            try
            {
                var validation = validadorFormFile.Validate(arquivo);
                if (!validation.IsValid)
                {
                    return(this.BadRequest(validation.Errors));
                }

                var retornoParser = new RetornoParser(uf);
                var retorno       = retornoParser.Parse(arquivo.ContentType, await arquivo.LerConteudo());

                return(this.Ok(retorno));
            }
            catch (UfNaoConfiguradaException ex)
            {
                return(this.BadRequest(ex.Message));
            }
        }
Exemplo n.º 3
0
        public void DeveRealizarATransformacaoDoArquivoDeMg()
        {
            var configBairroMock = new Mock <IConfiguracaoItem>(MockBehavior.Strict);

            configBairroMock.SetupGet(mock => mock.PathObjeto).Returns(@"neighborhoods/neighborhood");
            configBairroMock.SetupGet(mock => mock.PropriedadeNome).Returns(@"name");
            configBairroMock.SetupGet(mock => mock.PropriedadeHabitantes).Returns(@"population");

            var configCidadeMock = new Mock <IConfiguracaoItem>(MockBehavior.Strict);

            configCidadeMock.SetupGet(mock => mock.PathObjeto).Returns(@"body/region/cities/city");
            configCidadeMock.SetupGet(mock => mock.PropriedadeNome).Returns(@"name");
            configCidadeMock.SetupGet(mock => mock.PropriedadeHabitantes).Returns(@"population");

            var configMock = new Mock <IConfiguracao>(MockBehavior.Strict);

            configMock.SetupGet(mock => mock.ConfiguracaoBairro).Returns(configBairroMock.Object);
            configMock.SetupGet(mock => mock.ConfiguracaoCidade).Returns(configCidadeMock.Object);

            const string UF = @"mg";

            ConfiguracaoPool.AdicionarOuAtualizarConfiguracao(UF, configMock.Object);

            const string CONTENT_TYPE     = @"application/xml";
            const string CONTEUDO_ARQUIVO = @"
                <body>
                    <region>
                        <name>Triangulo Mineiro</name>
                        <cities>
                            <city>
                                <name>Uberlandia</name>
                                <population>700001</population>
                                <neighborhoods>
                                    <neighborhood>
                                        <name>Santa Monica</name>
                                        <zone>Zona Leste</zone>
                                        <population>13012</population>
                                    </neighborhood>
                                </neighborhoods>
                            </city>
                            <city>
                                <name>Uberaba</name>
                                <population>289376</population>
                                <neighborhoods>
                                    <neighborhood>
                                        <name>Abaeté</name>
                                        <zone>Centro</zone>
                                        <population>22690</population>
                                    </neighborhood>
                                </neighborhoods>
                            </city>
                        </cities>
                    </region>
                </body>        
            ";

            var parser  = new RetornoParser(UF);
            var retorno = parser.Parse(CONTENT_TYPE, CONTEUDO_ARQUIVO);

            Assert.IsNotNull(retorno);
            Assert.AreEqual(2, retorno.Cidades.Count);
            Assert.AreEqual("Uberlandia", retorno.Cidades[0].Nome);
            Assert.AreEqual(700001, retorno.Cidades[0].Habitantes);
            Assert.AreEqual(1, retorno.Cidades[0].Bairros.Count);
            Assert.AreEqual("Santa Monica", retorno.Cidades[0].Bairros[0].Nome);
            Assert.AreEqual(13012, retorno.Cidades[0].Bairros[0].Habitantes);

            Assert.AreEqual("Uberaba", retorno.Cidades[1].Nome);
            Assert.AreEqual(289376, retorno.Cidades[1].Habitantes);
            Assert.AreEqual(1, retorno.Cidades[1].Bairros.Count);
            Assert.AreEqual("Abaeté", retorno.Cidades[1].Bairros[0].Nome);
            Assert.AreEqual(22690, retorno.Cidades[1].Bairros[0].Habitantes);
        }
Exemplo n.º 4
0
        public void DeveRealizarATransformacaoDoArquivoDoRj()
        {
            var configBairroMock = new Mock <IConfiguracaoItem>(MockBehavior.Strict);

            configBairroMock.SetupGet(mock => mock.PathObjeto).Returns(@"bairros/bairro");
            configBairroMock.SetupGet(mock => mock.PropriedadeNome).Returns(@"nome");
            configBairroMock.SetupGet(mock => mock.PropriedadeHabitantes).Returns(@"populacao");

            var configCidadeMock = new Mock <IConfiguracaoItem>(MockBehavior.Strict);

            configCidadeMock.SetupGet(mock => mock.PathObjeto).Returns(@"corpo/cidade");
            configCidadeMock.SetupGet(mock => mock.PropriedadeNome).Returns(@"nome");
            configCidadeMock.SetupGet(mock => mock.PropriedadeHabitantes).Returns(@"populacao");

            var configMock = new Mock <IConfiguracao>(MockBehavior.Strict);

            configMock.SetupGet(mock => mock.ConfiguracaoBairro).Returns(configBairroMock.Object);
            configMock.SetupGet(mock => mock.ConfiguracaoCidade).Returns(configCidadeMock.Object);

            const string UF = @"rj";

            ConfiguracaoPool.AdicionarOuAtualizarConfiguracao(UF, configMock.Object);

            const string CONTENT_TYPE     = @"application/xml";
            const string CONTEUDO_ARQUIVO = @"
                <corpo>
                    <cidade>
                        <nome>Rio de Janeiro</nome>
                        <populacao>10345678</populacao>
                        <bairros>
                            <bairro>
                                <nome>Tijuca</nome>
                                <regiao>Zona Norte</regiao>
                                <populacao>135678</populacao>
                            </bairro>
                            <bairro>
                                <nome>Botafogo</nome>
                                <regiao>Zona Sul</regiao>
                                <populacao>105711</populacao>
                            </bairro>
                        </bairros>
                    </cidade>
                    <cidade>
                        <nome>Teresópolis</nome>
                        <populacao>182594</populacao>
                        <bairros>
                            <bairro>
                                <nome>Tijuca</nome>
                                <regiao>Centro</regiao>
                                <populacao>13678</populacao>
                            </bairro>
                        </bairros>
                    </cidade>
                </corpo>   
            ";

            var parser  = new RetornoParser(UF);
            var retorno = parser.Parse(CONTENT_TYPE, CONTEUDO_ARQUIVO);

            Assert.IsNotNull(retorno);
            Assert.AreEqual(2, retorno.Cidades.Count);
            Assert.AreEqual("Rio de Janeiro", retorno.Cidades[0].Nome);
            Assert.AreEqual(10345678, retorno.Cidades[0].Habitantes);
            Assert.AreEqual(2, retorno.Cidades[0].Bairros.Count);
            Assert.AreEqual("Tijuca", retorno.Cidades[0].Bairros[0].Nome);
            Assert.AreEqual(135678, retorno.Cidades[0].Bairros[0].Habitantes);
            Assert.AreEqual("Botafogo", retorno.Cidades[0].Bairros[1].Nome);
            Assert.AreEqual(105711, retorno.Cidades[0].Bairros[1].Habitantes);

            Assert.AreEqual("Teresópolis", retorno.Cidades[1].Nome);
            Assert.AreEqual(182594, retorno.Cidades[1].Habitantes);
            Assert.AreEqual(1, retorno.Cidades[1].Bairros.Count);
            Assert.AreEqual("Tijuca", retorno.Cidades[1].Bairros[0].Nome);
            Assert.AreEqual(13678, retorno.Cidades[1].Bairros[0].Habitantes);
        }