Example #1
0
        public async Task AcceptOrder_WhenCalled_SendsPushNotification()
        {
            // Arrange
            var taxiCompanyId = "someId";
            var orderId       = 1;

            var taxiCompany = new TaxiCompany();
            var order       = new Order();

            order.TaxiCompany = taxiCompany;

            var ride = new Ride();

            ride.StartDestination = new Address("", 1, "", 1);
            ride.EndDestination   = new Address("", 1, "", 1);

            order.Rides = new List <Ride> {
                ride
            };

            _unitOfWork.OrderRepository.FindByIDAsync(null).ReturnsForAnyArgs(order);
            _unitOfWork.TaxiCompanyRepository.FindByIDAsync(null).ReturnsForAnyArgs(taxiCompany);

            // Act
            await _orderService.AcceptOrderAsync(taxiCompanyId, orderId);

            // Assert
            await _pushNotificationService.Received().SendAsync(Arg.Any <IPushNotification>());
        }
Example #2
0
        /// <summary>
        /// Adds a new taxi company to the database asynchronously and returns a JWT token wrapped in a response object.
        /// </summary>
        /// <remarks>
        /// The generated token will only give access to endpoints which are available to taxi companies.
        /// </remarks>
        /// <param name="request">The required data needed to create the taxi company</param>
        /// <returns>A RegisterResponseTaxiCompany object containing a valid JWT token</returns>
        public async Task <RegisterResponseTaxiCompany> AddTaxiCompanyAsync(RegisterRequest request)
        {
            // Create the taxi company
            var taxiCompany = new TaxiCompany
            {
                Name        = request.Name,
                PhoneNumber = request.PhoneNumber,
                UserName    = request.Email,
                Email       = request.Email
            };

            // Overwrite the taxi company with the one created and create a TaxiCompanyDto
            await _unitOfWork.IdentityUserRepository.TransactionWrapper(async() =>
            {
                await _unitOfWork.IdentityUserRepository.AddIdentityUserAsync(taxiCompany, request.Password);
                await _unitOfWork.IdentityUserRepository.AddToRoleAsync(taxiCompany, nameof(Customer));
            });

            var taxiCompanyDto = _mapper.Map <TaxiCompanyDto>(taxiCompany);

            // Create the token, wrap it and return the response with the taxiCompanyDto
            var token    = _jwtService.GenerateJwtToken(taxiCompany.Id, taxiCompany.Email, nameof(TaxiCompany));
            var response = new RegisterResponseTaxiCompany
            {
                Token       = token,
                TaxiCompany = taxiCompanyDto
            };

            return(response);
        }
Example #3
0
        public async Task AcceptOrder_WhenCalled_ReturnsExpectedAcceptOrderResponse()
        {
            var taxiCompanyId = "someId";
            var orderId       = 1;

            var orderDto = new OrderDto
            {
                Id     = orderId,
                Price  = 200,
                Rides  = null,
                Status = RideStatus.WaitingForAccept.ToString()
            };

            _mapper.Map <OrderDto>(null).ReturnsForAnyArgs(orderDto);
            var order       = new Order();
            var taxicompany = new TaxiCompany();

            _unitOfWork.OrderRepository.FindByIDAsync(null).ReturnsForAnyArgs(order);
            _unitOfWork.TaxiCompanyRepository.FindByIDAsync(null).ReturnsForAnyArgs(taxicompany);

            var expectedResponse = new AcceptOrderResponse {
                Order = orderDto
            };

            var response = await _orderService.AcceptOrderAsync(taxiCompanyId, orderId);

            Assert.That(response.Order, Is.EqualTo(expectedResponse.Order));
        }
Example #4
0
        public async Task SetOrderToDebited_OrderExistsSoloRideAcceptedSaveChangesNotCalled_OrderIsStillAccepted()
        {
            var taxi = new TaxiCompany();

            using (var context = _factory.CreateContext())
            {
                context.TaxiCompanies.Add(taxi);
                context.SaveChanges();
            }

            var orderCreated = CreateTestOrderWithSoloRideInDatabase();

            using (var context = _factory.CreateContext())
            {
                orderCreated.Status = OrderStatus.Accepted;
                context.Orders.Update(orderCreated);
                context.SaveChanges();
            }


            _uut.OrderRepository.SetOrderToDebited(orderCreated);
            await _uut.SaveChangesAsync();

            //Assert against database

            using (var context = _factory.CreateContext())
            {
                Assert.That(context.Orders.Find(orderCreated.Id).Status, Is.EqualTo(OrderStatus.Debited));
            }
        }
Example #5
0
        public async Task AddTaxiCompanyAsync_AddingTaxiCompanySucceeds_ReturnsARegisterResponseTaxiCompanyThatContainsTheExpectedTaxiCompanyDto()
        {
            var request = new RegisterRequest
            {
                Email            = "*****@*****.**",
                Name             = "Name",
                Password         = "******",
                PasswordRepeated = "Qwer111!",
                PhoneNumber      = "12345678"
            };

            var taxiCompany = new TaxiCompany
            {
                Email       = request.Email,
                Name        = request.Name,
                PhoneNumber = request.PhoneNumber
            };

            _unitofWork.TaxiCompanyRepository.Add(null).ReturnsForAnyArgs(taxiCompany);

            var taxiCompanyDto = new TaxiCompanyDto
            {
                Email       = request.Email,
                Name        = request.Name,
                PhoneNumber = request.PhoneNumber
            };

            _mapper.Map <TaxiCompanyDto>(null).ReturnsForAnyArgs(taxiCompanyDto);

            var response = await _taxiCompanyService.AddTaxiCompanyAsync(request);

            Assert.That(response.TaxiCompany, Is.EqualTo(taxiCompanyDto));
        }
        /// <summary>
        /// edit a taxi company
        /// </summary>
        /// <param name="taxiCompany">taxi company object</param>
        /// <returns>taxi company object</returns>
        public TaxiCompany EditTaxiCompany(TaxiCompany taxiCompany)
        {
            Database db        = Database.Open(DatabaseName);
            var      dbCommand =
                "UPDATE TaxiCompany SET CompanyName = @1,CompanyLocation = @2, Description = @3 WHERE Id = @0";

            db.QuerySingle(dbCommand, taxiCompany.Id, taxiCompany.CompanyName, taxiCompany.CompanyLocation,
                           taxiCompany.Description);
            db.Close();
            return(taxiCompany);
        }
Example #7
0
 public void TestInitialize()
 {
     requestFrom = 0;
     requestTo   = 10;
     companyPrce = 10;
     taxiCompany = new TaxiCompany {
         Price = 10
     };
     taxi = new Taxi {
         Id = 1, Location = 0, Name = "Gagi", TaxiCompany = taxiCompany
     };
 }
Example #8
0
        public async Task SetOrderToAccepted_OrderExistsSoloRideWaitingForAcceptStatus_OrderIsAccepted()
        {
            var taxi = new TaxiCompany();

            using (var context = _factory.CreateContext())
            {
                context.TaxiCompanies.Add(taxi);
                context.SaveChanges();
            }

            var orderCreated = CreateTestOrderWithSoloRideInDatabase();
            var order        = _uut.OrderRepository.SetOrderToAccepted(orderCreated, taxi.Id);;

            Assert.That(order.Status, Is.EqualTo(OrderStatus.Accepted));
        }
        /// <summary>
        /// get a taxi company by id
        /// </summary>
        /// <param name="Id">id</param>
        /// <returns>object of company</returns>
        public TaxiCompany GetTaxiCompany(int Id)
        {
            Database db            = Database.Open(DatabaseName);
            string   insertCommand = "SELECT * FROM TaxiCompany WHERE Id = @0";
            var      row           = db.QuerySingle(insertCommand, Id);

            db.Close();
            if (row == null)
            {
                return(null);
            }
            var company = new TaxiCompany(row.Id, row.OwnerId, row.CompanyName, row.CompanyLocation, row.Description,
                                          row.HasBeenValidated);

            return(company);
        }
        private TaxiCompany addTaxiCompanyToTestDatabase(int balance = 0)
        {
            TaxiCompany taxiCompany = new TaxiCompany
            {
                Email       = "*****@*****.**",
                Name        = "Name",
                PhoneNumber = "12345678"
            };

            using (var context = _factory.CreateContext())
            {
                context.TaxiCompanies.Add(taxiCompany);
                context.SaveChanges();
            }

            return(taxiCompany);
        }
Example #11
0
        public async Task SetOrderToDebited_OrderExistsSoloRideNotWaitingForAcceptstatus_ThrowsException()
        {
            var taxi = new TaxiCompany();

            using (var context = _factory.CreateContext())
            {
                context.TaxiCompanies.Add(taxi);
                context.SaveChanges();
            }

            var order = new Order()
            {
                Status = OrderStatus.Debited
            };

            Assert.ThrowsAsync <UnexpectedStatusException>(async() => _uut.OrderRepository.SetOrderToAccepted(order, taxi.Id));;
        }
        /// <summary>
        /// get all companies
        /// </summary>
        /// <returns>list of all companies</returns>
        public List <TaxiCompany> GetAllCompanies()
        {
            Database db            = Database.Open(DatabaseName);
            string   insertCommand = "SELECT * FROM TaxiCompany WHERE HasBeenValidated = 3";
            var      rows          = db.Query(insertCommand);

            db.Close();
            List <TaxiCompany> companies = new List <TaxiCompany>();

            foreach (var row in rows)
            {
                var company = new TaxiCompany(row.Id, row.OwnerId, row.CompanyName, row.CompanyLocation,
                                              row.Description, row.HasBeenValidated);
                companies.Add(company);
            }

            return(companies);
        }
Example #13
0
        public async Task LoginTaxiCompanyAsync_LoginSucceeds_ReturnsLoginResponseThatContainsTheExpectedTaxiCompanyDto()
        {
            // Arrange
            var request = new LoginRequest
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            var token = "Token";

            _unitofWork.IdentityUserRepository.SignInAsync(null, null).ReturnsForAnyArgs(SignInResult.Success);
            _jwtService.GenerateJwtToken(null, null, null).ReturnsForAnyArgs(token);

            var taxiCompany = new TaxiCompany
            {
                Id    = "Some Id",
                Email = request.Email
            };

            _unitofWork.TaxiCompanyRepository.FindByEmail(null).ReturnsForAnyArgs(taxiCompany);

            var taxiCompanyDto = new TaxiCompanyDto
            {
                Email       = request.Email,
                Name        = "Some Name",
                PhoneNumber = "12345678"
            };

            _mapper.Map <TaxiCompanyDto>(null).ReturnsForAnyArgs(taxiCompanyDto);

            // Act
            var response = await _taxiCompanyService.LoginTaxiCompanyAsync(request);

            // Assert
            Assert.That(response.TaxiCompany, Is.EqualTo(taxiCompanyDto));
        }
Example #14
0
 public TaxiCompanyConsole()
 {
     _taxiCarCompany = new TaxiCompany <Car>();
     _taxiCarCompany.Load();
     _carList = _taxiCarCompany.GetCopy();
 }