예제 #1
0
        public async Task DeveListarUmaLinhaPorLocalizacaoDeUmaParada()
        {
            //arrange
            var parada = new Domain.Entities.Parada(
                nome: "Parada 1",
                new Domain.ValueObjects.Localizacao(
                    latitude: -8.771593,
                    longitude: -63.847208
                    )
                );

            var linha = new Domain.Entities.Linha(
                nome: "Linha 1",
                id: 1
                );

            linha.AdicionarParada(parada);

            await context.AddAsync(parada);

            await context.AddAsync(linha);

            await context.SaveChangesAsync();

            //act
            var linhas = await obterLinhasPorParada.Executar(latitude : -8.771593, longitude : -63.847208);

            //assert
            Assert.True(linhas.Count == 1);
        }
예제 #2
0
        public async Task DeveListarAsParadasMaisProximasEmUmRaioDe500Metros()
        {
            //arrange
            var parada1 = new Domain.Entities.Parada(
                nome: "Parada 1",
                new Domain.ValueObjects.Localizacao(
                    latitude: -8.771593,
                    longitude: -63.847208
                    )
                );

            var parada2 = new Domain.Entities.Parada(
                nome: "Parada 2",
                new Domain.ValueObjects.Localizacao(
                    latitude: -8.76983,
                    longitude: -63.84870
                    )
                );

            var parada3 = new Domain.Entities.Parada(
                nome: "Parada 3",
                new Domain.ValueObjects.Localizacao(
                    latitude: -8.76832,
                    longitude: -63.84265
                    )
                );

            var parada4 = new Domain.Entities.Parada(
                nome: "Parada 4",
                new Domain.ValueObjects.Localizacao(
                    latitude: -8.77207,
                    longitude: -63.84177
                    )
                );

            await context.AddAsync(parada1);

            await context.AddAsync(parada2);

            await context.AddAsync(parada3);

            await context.AddAsync(parada4);

            await context.SaveChangesAsync();

            //act
            var paradasMaisProximas = await listarParadasMaisProximas.Executar(latitude : -8.771593, longitude : -63.847208, raioEmMetros : 500);

            //assert
            Assert.True(paradasMaisProximas.Count == 2);
            Assert.Contains(paradasMaisProximas, x => x.Nome == "Parada 1");
            Assert.Contains(paradasMaisProximas, x => x.Nome == "Parada 2");
        }
예제 #3
0
        public async Task Executar(ParadaDto paradaDto)
        {
            var parada = new Domain.Entities.Parada(
                paradaDto.Nome,
                new Domain.ValueObjects.Localizacao(
                    paradaDto.Localizacao.Latitude,
                    paradaDto.Localizacao.Longitude
                    )
                );

            await context.AddAsync(parada);

            await context.SaveChangesAsync();
        }
예제 #4
0
        public async Task NaoDeveVincularUmaParadaNaLinhaPoisAParadaJaEstaVinculada()
        {
            //arrange
            var paradaNaLinhaDto = new ParadaNaLinhaDto()
            {
                LinhaId = 1, ParadaId = 2
            };

            var paradaDto = new ParadaDto()
            {
                Nome        = "Parada 1",
                Localizacao = new LocalizacaoDto()
                {
                    Latitude  = -8.771593,
                    Longitude = -63.847208
                }
            };

            var parada = new Domain.Entities.Parada(
                paradaDto.Nome,
                new Domain.ValueObjects.Localizacao(
                    paradaDto.Localizacao.Latitude,
                    paradaDto.Localizacao.Longitude
                    )
                );

            var linha = new Domain.Entities.Linha(
                nome: "Linha 1",
                id: 1
                );

            linha.AdicionarParada(parada);

            await context.AddAsync(parada);

            await context.AddAsync(linha);

            await context.SaveChangesAsync();

            //act
            await vincularParada.Executar(paradaNaLinhaDto);

            //assert
            Assert.False(vincularParada.Notifications.ContainsKey("parada-vinculada"));
        }
예제 #5
0
        public async Task DeveDesvincularUmaParadaNaLinha()
        {
            //arrange
            var paradaDto = new ParadaDto()
            {
                Nome        = "Parada 1",
                Localizacao = new LocalizacaoDto()
                {
                    Latitude  = -8.771593,
                    Longitude = -63.847208
                }
            };

            var parada = new Domain.Entities.Parada(
                paradaDto.Nome,
                new Domain.ValueObjects.Localizacao(
                    paradaDto.Localizacao.Latitude,
                    paradaDto.Localizacao.Longitude
                    )
                );

            var linha = new Domain.Entities.Linha(
                nome: "Linha 1",
                id: 1
                );

            linha.AdicionarParada(parada);

            await context.AddAsync(parada);

            await context.AddAsync(linha);

            await context.SaveChangesAsync();

            //act
            await desvincularParada.Executar(linha.Id, parada.Id);

            //assert
            Assert.True(linha.Paradas.Count == 0);
        }
예제 #6
0
        public async Task Executar(ParadaDto paradaDto)
        {
            var paradaExiste = await context.Paradas.AnyAsync(x => x.Id == paradaDto.Id);

            if (paradaExiste)
            {
                var parada = new Domain.Entities.Parada(
                    paradaDto.Nome,
                    new Domain.ValueObjects.Localizacao(
                        paradaDto.Localizacao.Latitude,
                        paradaDto.Localizacao.Longitude
                        ),
                    id: paradaDto.Id
                    );

                context.Update(parada);
                await context.SaveChangesAsync();
            }
            else
            {
                Notifications.Add("not-found", "Parada não encontrado!");
            }
        }