public void Drone_ValidarCapacidaDeSobra_DeveRetornarResultadoEsperado(double capacidadeDrone, double capacidadeOcupadaDrone, double pesoNovoPedido, bool resultadoEsperado) { // Arrange var latitudeOrigem = -23.5880684; var longitudeOrigem = -46.6564195; var drone = Drone.Criar(capacidadeDrone, 3, 35, 100, DroneStatus.Livre); var usuario = Usuario.Criar("test", "*****@*****.**", -23.5950753, -46.645421, UsuarioRole.Cliente); //Calcular tempo entrega var calcularTempoEntrega = new Mock <ICalcularTempoEntrega>(); calcularTempoEntrega.Setup(p => p.ObterTempoEntregaEmMinutosIda(latitudeOrigem, longitudeOrigem, usuario.Latitude, usuario.Longitude, drone.Velocidade)); var pedido = Pedido.Criar(Guid.NewGuid(), capacidadeOcupadaDrone, 1000, usuario); pedido.AtualizarStatusPedido(PedidoStatus.EmEntrega); drone.AdicionarPedido(pedido, calcularTempoEntrega.Object, latitudeOrigem, longitudeOrigem); // Act var resultado = drone.ValidarCapacidadeSobra(pesoNovoPedido); // Assert Assert.Equal(resultadoEsperado, resultado); }
public void Drone_ValidarAutonomiaDeSobra_DeveRetornarResultadoEsperado(double autonomia, double carga, double autonomiaUtilizada, double tempoDeIda, double tempoDeVolta, bool resultadoEsperado) { // Arrange var drone = Drone.Criar(12000, 3, autonomia, carga, DroneStatus.Livre); var usuario = Usuario.Criar("test", "*****@*****.**", It.IsAny <double>(), It.IsAny <double>(), UsuarioRole.Cliente); var calcularTempoEntrega = new Mock <ICalcularTempoEntrega>(); calcularTempoEntrega.Setup(p => p.ObterTempoEntregaEmMinutosIda(It.IsAny <double>(), It.IsAny <double>(), It.IsAny <double>(), It.IsAny <double>(), It.IsAny <double>())); var pedido = Pedido.Criar(Guid.NewGuid(), 1000, 1000, usuario); pedido.AtualizarStatusPedido(PedidoStatus.EmEntrega); drone.AdicionarPedido(pedido, calcularTempoEntrega.Object, It.IsAny <double>(), It.IsAny <double>()); calcularTempoEntrega.SetupSequence(p => p.ObterTempoEntregaEmMinutosIda(It.IsAny <double>(), It.IsAny <double>(), It.IsAny <double>(), It.IsAny <double>(), It.IsAny <double>())) .Returns(autonomiaUtilizada) .Returns(tempoDeIda) .Returns(tempoDeVolta); // Act var resultado = drone.ValidarAutonomiaSobraPorPontoEntrega(calcularTempoEntrega.Object, It.IsAny <double>(), It.IsAny <double>(), It.IsAny <double>(), It.IsAny <double>()); // Assert Assert.Equal(resultadoEsperado, resultado); }
public async Task Pedido_QuandoExistiremHistoricosPedidosEmUmDrone_DeveRetornarDoBancoDados() { //Arrange var usuario = Usuario.Criar("test", "test@email", 0, 0, UsuarioRole.Cliente); usuario.AdicionarPassword("password"); usuario.AdicionarRefreshToken("refreshToken", DateTime.Now.AddDays(1)); await _context.AddAsync(usuario); var drone = Drone.Criar(12000, 5, 40, 100, DroneStatus.EmEntrega); await _context.AddAsync(drone); var pedido = Pedido.Criar(123, 1000, usuario); pedido.AssociarDrone(drone); await _context.AddAsync(pedido); var historicoPedido = HistoricoPedido.Criar(drone.Id, pedido.Id); await _context.AddAsync(historicoPedido); await _context.SaveChangesAsync(); //Act var historicoDrone = await _pedidoRepository.ObterHistoricoPedidosDoDroneAsync(drone.Id); //Assert Assert.True(historicoDrone.Count(x => x.DroneId == drone.Id) == 1); }
private void Seed() { using var context = new DroneDbContext(ContextOptions); context.Database.EnsureDeleted(); context.Database.EnsureCreated(); var usuario = Usuario.Criar("test", "*****@*****.**", -23.35566, -46.36554, UsuarioRole.Cliente); usuario.AdicionarPassword("123"); usuario.AdicionarRefreshToken("refreshtoken", DateTime.Now.AddDays(1)); context.Add(usuario); var drone1 = Drone.Criar(12000, 3, 35, 100, DroneStatus.Livre); var drone2 = Drone.Criar(10000, 4, 35, 50, DroneStatus.Livre); context.Add(drone1); context.Add(drone2); context.SaveChanges(); var pedido = Pedido.Criar(Guid.NewGuid(), 5000, 1000, usuario); var mongoContext = new DroneMongoDbContext(MongoOptions); mongoContext.Pedidos.InsertOne(pedido); }
public async Task Pedido_AtualizarPedidoENaoRelacionarAUmDrone_Retornar200OK() { // Arrange var latitudeOrigem = -23.5880684; var longitudeOrigem = -46.6564195; var latitudeUsuario = -23.5950753; var longitudeUsuario = -46.645421; var velocidadeDrone = 3.333; IEnumerable <Drone> drones = new List <Drone> { Drone.Criar(12000, velocidadeDrone, 35, 100, DroneStatus.EmManutencao) }; var usuario = Usuario.Criar("test", "*****@*****.**", 0, 0, UsuarioRole.Cliente); //obter pedido var pedido = Pedido.Criar(Guid.NewGuid(), 1000, 1000, usuario); pedido.CarregarUsuario(usuario); pedido.AtualizarStatusPedido(PedidoStatus.AguardandoPagamento); _mocker.GetMock <IUnitOfWork>() .Setup(p => p.Pedidos.ObterPorIdAsync(pedido.Id)) .Returns(Task.FromResult(pedido)); //Calcular tempo entrega _mocker.GetMock <ICalcularTempoEntrega>() .Setup(p => p.ObterTempoEntregaEmMinutosIda(latitudeOrigem, longitudeOrigem, latitudeUsuario, longitudeUsuario, velocidadeDrone)); //Obter ponto inicial do drone _mocker.GetMock <IOptions <DronePontoInicialConfig> >() .Setup(p => p.Value) .Returns(new DronePontoInicialConfig { Latitude = latitudeOrigem, Longitude = longitudeOrigem }); //Criar lista de drones _mocker.GetMock <IUnitOfWork>() .Setup(p => p.Drones.ObterTodosAsync()) .Returns(Task.FromResult(drones)); //adicionar pedido _mocker.GetMock <IUnitOfWork>() .Setup(p => p.Pedidos.AdicionarAsync(It.IsAny <Pedido>())) .Returns(Task.CompletedTask); var command = new AtualizarPedidoStatusCommand(pedido.Id, PedidoStatus.AguardandoPagamento); // Act var result = await _handler.Handle(command, CancellationToken.None); // Assert Assert.False(result.HasFails); _mocker.GetMock <IUnitOfWork>().Verify(o => o.Pedidos.AtualizarAsync(pedido), Times.Once); }
public void ResponseResult_InserirObjeto_DeveRetornarObjetonoData() { //arrange var drone = Drone.Criar(12000, 3, 35, 100, DroneStatus.EmManutencao); //Act var response = new ResponseResult(drone); //Arrange Assert.True(((Drone)response.Data).Id == drone.Id); }
public void Drone_ValidarCapacidaDeSobra_RetornarTrueSeDroneAceitaOPesoDoNovoPedido() { // Arrange var drone = Drone.Criar(12000, 3, 35, 100, DroneStatus.Livre); // Act var resultado = drone.ValidarCapacidadeSobra(5000); // Assert Assert.True(resultado); }
public void Drone_CriarDrone_DeveCriarUmDrone() { // Arrange // Act var drone = Drone.Criar(12000, 3, 35, 100, DroneStatus.Livre); // Assert Assert.Equal(12000, drone.Capacidade); Assert.Equal(3, drone.Velocidade); Assert.Equal(35, drone.Autonomia); Assert.Equal(100, drone.Carga); Assert.Equal(DroneStatus.Livre, drone.Status); }
public async Task Drone_QuandoSalvarDrone_DeveExistirNoBancoDados() { //Arrange var drone = Drone.Criar(8000, 1, 20, 50, DroneStatus.Livre); //Act await _droneRepository.AdicionarAsync(drone); await _context.SaveChangesAsync(); //Assert Assert.True(_context.Set <Drone>().Any(x => x.Capacidade == 8000)); Assert.True(_context.Set <Drone>().Any(x => x.Velocidade == 1)); Assert.True(_context.Set <Drone>().Any(x => x.Autonomia == 20)); Assert.True(_context.Set <Drone>().Any(x => x.Carga == 50)); }
public MappingProfile() { //Commands CreateMap <CriarDroneCommand, Drone>() .ConstructUsing(c => Drone.Criar(c.Capacidade, c.Velocidade, c.Autonomia, c.Carga, DroneStatus.Livre)); //Domain to Model CreateMap <Drone, DroneDto>() .ForMember(d => d.Status, opts => opts.MapFrom(x => x.Status.ToString())); CreateMap <Pedido, PedidoDto>(); CreateMap <Pedido, DronePedidoDto>(); CreateMap <Usuario, UsuarioDto>(); CreateMap <Drone, DroneSituacaoDto>() .ForMember(d => d.Situacao, opts => opts.MapFrom(x => x.Status.ToString())) .ForMember(d => d.Pedidos, opts => opts.MapFrom(x => x.Pedidos)); }
public async Task Drone_SolicitarTodosDrones_RetornarListaDeDrones() { // Arrange var query = new DronesQuery(); IEnumerable <Drone> drones = new List <Drone> { Drone.Criar(12000, 3, 35, 100, DroneStatus.Livre) }; _mocker.GetMock <IUnitOfWork>() .Setup(p => p.Drones.ObterTodosAsync()) .Returns(Task.FromResult(drones)); // Act var result = await _handler.Handle(query, CancellationToken.None); // Assert Assert.False(result.HasFails); _mocker.GetMock <IUnitOfWork>().Verify(o => o.Drones.ObterTodosAsync(), Times.Once); }