示例#1
0
 public void Setup()
 {
     contextBuilder    = InitializeDBContext();
     _queries          = new Service.Queries.QueriesService(contextBuilder);
     flightsController = new FlightsController(_queries);
     flights           = _queries.GetAllFlights();
 }
        public void Setup()
        {
            var flight = new FlightToDisplay()
            {
                DepartureAirportID = 1, DestinationAirportID = 2, AircraftID = 1
            };
            var listFlights = new List <FlightToDisplay>()
            {
                flight
            };

            fakeService = new Services.Fakes.StubIFlightService()
            {
                DisposeOfStorage          = () => { },
                AddFlightFlightToDisplay  = (f) => { return(new Result <AddResultStatus>(AddResultStatus.Success)); },
                RemoveFlightInt32         = (f) => { return(new Result <RemoveResultStatus>(RemoveResultStatus.Success)); },
                EditFlightFlightToDisplay = (f) => { return(new Result <EditResultStatus>(EditResultStatus.Success)); },
                GetFlightsToDisplayListOfFlightToDisplayOut = (out List <FlightToDisplay> f) =>
                {
                    f = listFlights;
                    return(new Result <bool>(true));
                },
                GetFlightToDisplayInt32FlightToDisplayOut = (int id, out FlightToDisplay f) =>
                {
                    f = flight;
                    return(new Result <bool>(true));
                },
            };

            sut = new FlightsController(fakeService);
        }
        public void Get_Should_get_flight_by_id()
        {
            // Arrange
            var flightDTO = new FlightDTO
            {
                Id               = 1,
                Number           = 1111,
                PointOfDeparture = "Lviv",
                DepartureTime    = new DateTime(2018, 07, 10, 18, 23, 0),
                Destination      = "London",
                DestinationTime  = new DateTime(2018, 07, 11, 18, 23, 0)
            };


            var flightService = A.Fake <IFlightService>();

            A.CallTo(() => flightService.GetEntity(A <int> ._)).Returns(flightDTO);

            var flightsController = new FlightsController(flightService);

            //Act
            var actionResult = flightsController.Get(1);

            //Assert
            Assert.NotNull(actionResult);

            OkObjectResult result = actionResult as OkObjectResult;

            Assert.NotNull(result);

            FlightDTO flightDTOResult = result.Value as FlightDTO;

            Assert.AreEqual(flightDTO, flightDTOResult);
        }
示例#4
0
        async public Task PostNew_ShouldAddFlightAndRedirect()
        {
            // Arrange
            var controller          = new FlightsController(this.flightApiService, this.airportApiService, this.aircraftApiService);
            var flightEditViewModel = new FlightEditViewModel
            {
                DepartureAirportId   = "SRC",
                DestinationAirportId = "DST",
                AircraftId           = "AIR"
            };

            // Act
            var result = await controller.New(flightEditViewModel);

            // Assert
            var viewResult = Assert.IsType <RedirectToActionResult>(result);

            Assert.Equal(nameof(Tui.WebApplication.Controllers.FlightsController.Index), viewResult.ActionName);

            // The new flight is in the repository ?
            var newFlight = (await this.flightApiService.GetAll()).SingleOrDefault(f =>
                                                                                   f.Aircraft.Id == flightEditViewModel.AircraftId &&
                                                                                   f.DepartureAirport.Id == flightEditViewModel.DepartureAirportId &&
                                                                                   f.DestinationAirport.Id == flightEditViewModel.DestinationAirportId);

            Assert.NotNull(flightEditViewModel);
        }
        public async Task PutShouldReturnReturnOkResultWithModelDataUpdated()
        {
            // Arrange
            var model = new Flight {
                Id = 1
            };

            var datetimeoffset = DateTimeOffset.UtcNow;

            Mock.Arrange(() => DateTimeOffset.UtcNow).Returns(datetimeoffset);

            var userid      = Guid.NewGuid().ToString();
            var fakeContext = Mock.Create <HttpContext>(Constructor.Mocked);

            Mock.Arrange(() => HttpContext.Current).Returns(fakeContext);
            Mock.Arrange(() => HttpContext.Current.User.Identity.GetUserId()).Returns(userid);

            var fakeSql = Substitute.For <IDatabase>();

            fakeSql.UpdateAsync(model).Returns(Task.FromResult(true));

            var controller = new FlightsController(fakeSql);

            // Act
            var result = await controller.Put(2, model);

            // Assert
            var viewResult = Assert.IsType <OkNegotiatedContentResult <Flight> >(result);

            Assert.Equal(viewResult.Content.UserId, userid);
            Assert.Equal(viewResult.Content.ModifiedDate, datetimeoffset);
            Assert.Equal(viewResult.Content.Id, 2);
        }
        public void GetAll_ShouldReturnAllFlights()
        {
            // Arrange
            FlightsController controller = new FlightsController(this.flightRepository);

            // Act
            var actionResult = controller.Get();

            // Asserts
            // Assert 1 : Call OK - 200
            var okResult = Assert.IsType <OkObjectResult>(actionResult.Result);

            // Assert 2 : same number of flights
            var apiFlights = okResult.Value as IEnumerable <Flight>;

            Assert.Equal(this.flights.Count, apiFlights.Count());

            // Assert 3 : find each flight
            foreach (var flight in flights)
            {
                var apiFlight = apiFlights.Single(a => a.Id == flight.Id);
                Assert.Equal(flight.Aircraft.Name, apiFlight.Aircraft.Name);
                Assert.Equal(flight.DepartureAirport.Name, apiFlight.DepartureAirport.Name);
                Assert.Equal(flight.DestinationAirport.Name, apiFlight.DestinationAirport.Name);
            }
        }
示例#7
0
        public void Test_GetFlight()
        {
            // Setup
            Location location = new Location(38.112375, 23.879437, DateTime.UtcNow);

            List <Segment> segments = new List <Segment>();

            segments.Add(new Segment(31.922629, 31.522594, 50)); // Egypt
            segments.Add(new Segment(32.426506, 34.743033, 50)); // Cyprus
            segments.Add(new Segment(26.209199, 35.055211, 50)); // Greece
            FlightPlan flightPlan = new FlightPlan(8, "Company", location, segments);

            var stubRemoteServersConnector = new RemoteServersConnector();
            var stubFlightsManager         = new FlightsManager(stubRemoteServersConnector);

            stubFlightsManager.AddFlightPlan(flightPlan);
            var flightsController = new FlightsController(stubFlightsManager);

            Thread.Sleep(1000);

            // Act
            IActionResult getAction = flightsController.GetFlights(DateTime.UtcNow.ToString());

            // Assert
            OkObjectResult okAction   = Assert.IsType <OkObjectResult>(getAction);
            string         flightsStr = Assert.IsType <string>(okAction.Value);
            var            flights    = JsonConvert.DeserializeObject(flightsStr);

            Assert.Single((System.Collections.IEnumerable)flights);
        }
        public void FlightControllerDateTimeTest()
        {
            // Arrange
            var context = new Mock <HttpContext>();

            context.SetupGet(x => x.Request.QueryString).Returns(new QueryString("?"));

            var controllerContext = new ControllerContext()
            {
                HttpContext = context.Object,
            };
            var relative_to       = "Invalid_Date_Time";
            var stub              = new Mock <IScheduledCache>();
            var flightManager     = new FlightManager(stub.Object);
            var flightsController = new FlightsController(flightManager)
            {
                ControllerContext = controllerContext,
            };

            // Act
            var result = flightsController.GetFlightsAsync(relative_to, "");

            // Assert
            var action  = Assert.IsType <BadRequestObjectResult>(result.Result);
            var message = Assert.IsAssignableFrom <string>(action.Value);

            Assert.Equal("Date: Invalid_Date_Time has wrong format", message);
        }
示例#9
0
        public void FlightsModel_Sync_all()
        {
            //set up:
            string               time      = DateTime.UtcNow.ToString();
            IMemoryCache         cache     = new MemoryCache(new MemoryCacheOptions());
            Mock <IFlightsModel> mockModel = new Mock <IFlightsModel>();
            List <Flight>        response  = new List <Flight>();
            Server               server    = new Server();

            server.ServerId  = 123;
            server.ServerURL = "www.test.com";
            List <Server> servers = new List <Server>();

            servers.Add(server);
            cache.Set("ServerList", servers);
            Flight flight = SetFlight();

            response.Add(flight);
            List <Flight> curr = new List <Flight>();

            //mock method definition:
            mockModel.Setup(model => model.GetCurrentFromServer(It.IsAny <Server>(), It.IsAny <string>(), It.IsAny <List <Flight> >()))
            .Returns((Server server, string time, List <Flight> curr) => { return(Task.FromResult(response)); });
            FlightsController controller = new FlightsController(cache);

            controller.SetModel(mockModel.Object);
            //execution:
            Task <List <Flight> > flights = controller.GetAllFlightsByTimeAsync(time);

            //assert:
            Assert.AreEqual(flights.Result, response);
        }
        public void FlightControllerRelativetoAndSyncAllTest()
        {
            // Arrange
            var context = new Mock <HttpContext>();

            //sync_all specified for the controller to get flights from the server and from remote servers.
            context.SetupGet(x => x.Request.QueryString).Returns(new QueryString("?sync_all"));

            var controllerContext = new ControllerContext()
            {
                HttpContext = context.Object,
            };
            var relative_to = "2020-05-09T18:23:18Z";
            //the controller suppose to use "Get_AllFlights_Relative_ToAsync" method in the IFlightManager object.
            var flightManagerMock = new Mock <IFlightManager>();

            flightManagerMock.Setup(repo => repo.GetAllFlightsRelativeToAsync(relative_to))
            .Returns(TestGetAllFlightsRelativeToAsync());

            var flightsController = new FlightsController(flightManagerMock.Object)
            {
                ControllerContext = controllerContext,
            };

            // Act
            var result = flightsController.GetFlightsAsync(relative_to, "sync_all");

            // Assert
            var action      = Assert.IsType <OkObjectResult>(result.Result);
            var flightArray = Assert.IsAssignableFrom <Flight[]>(action.Value);

            Assert.Equal(2, flightArray.Length);
        }
        public void FlightControllerRelativetoTest()
        {
            var context = new Mock <HttpContext>();

            //the sync_all isnt part of the request so the controller
            context.SetupGet(x => x.Request.QueryString).Returns(new QueryString("?"));

            var controllerContext = new ControllerContext()
            {
                HttpContext = context.Object,
            };
            // Arrange
            var relative_to = "2020-05-09T18:23:18Z";
            var mockRepo    = new Mock <IFlightManager>();

            //the controller suppose to use "GetFlightsRelativeToAsync" method in the IFlightManager object.
            mockRepo.Setup(repo => repo.GetFlightsRelativeToAsync(relative_to))
            .Returns(TestGetAllFlightsRelativeToAsync());

            var flightsController = new FlightsController(mockRepo.Object)
            {
                ControllerContext = controllerContext,
            };

            // Act
            var result = flightsController.GetFlightsAsync(relative_to, "");

            // Assert
            var action      = Assert.IsType <OkObjectResult>(result.Result);
            var flightArray = Assert.IsAssignableFrom <Flight[]>(action.Value);

            Assert.Equal(2, flightArray.Length);
        }
        public async Task GetFlightsInternalTest()
        {
            // determining the flight times
            var relativeTo = "2020-05-27T15:35:05Z";
            var startTime  = DateTime.Parse("2020-05-27T12:05:00Z");
            var endTime    = DateTime.Parse("2020-05-27T13:05:00Z");

            // context
            var context = await CreateTestContext(startTime, endTime);

            // mock http client factory
            var mockClientFactory = new Mock <IHttpClientFactory>();

            // controller
            var controller = new FlightsController(context, mockClientFactory.Object);

            // calculating the location
            var testSegmentFirst  = CreateTestSegment(1, 1, 23.240702, 34.921971, 1800, startTime, startTime.AddSeconds(1800));
            var testSegmentSecond = CreateTestSegment(2, 1, 21.346370, 39.419221, 1800, startTime.AddSeconds(1800), endTime);
            var secondsInSegment  = 5.0;
            var delta             = secondsInSegment / testSegmentSecond.TimeSpanSeconds;
            var expectedLatitude  = testSegmentFirst.Latitude + delta *
                                    (testSegmentSecond.Latitude - testSegmentFirst.Latitude);
            var expectedLongitude = testSegmentFirst.Longitude + delta *
                                    (testSegmentSecond.Longitude - testSegmentFirst.Longitude);

            // Act - running method and checking results
            await GetResultsAndCheck(controller, relativeTo, expectedLongitude, expectedLatitude);
        }
        /*
         * Run the GetFlights method with the test objects, get the results and check if they are correct
         */
        private static async Task GetResultsAndCheck(FlightsController controller, string relativeTo, double expectedLongitude, double expectedLatitude)
        {
            // run GetFlights and get the result
            var result = (await controller.GetFlights(relativeTo)).FirstOrDefault();

            // check that result is not null and parse the result for further checks
            Assert.IsNotNull(result);
            var resultFlightId    = result.FlightId;
            var resultLongitude   = result.Longitude;
            var resultLatitude    = result.Latitude;
            var resultPassengers  = result.Passengers;
            var resultCompanyName = result.CompanyName;
            var pattern           = "dd-MMM-yy h:mm:ss tt";
            var culture           = new CultureInfo("en-US");
            var resultDateTime    = result.CurrDateTime.ToString(pattern, culture);
            var resultIsExternal  = result.IsExternal;

            // checking GetFlights returned the right results
            Assert.AreEqual("IL30357629", resultFlightId);
            Assert.AreEqual(expectedLongitude, resultLongitude);
            Assert.AreEqual(expectedLatitude, resultLatitude);
            Assert.AreEqual(247, resultPassengers);
            Assert.AreEqual("United Airlines", resultCompanyName);
            Assert.AreEqual("27-May-20 3:35:05 PM", resultDateTime);
            Assert.AreEqual(false, resultIsExternal);
        }
示例#14
0
        public void PostFlightShouldNotValidate()
        {
            // Arrange
            Flight     flight = new Flight(null, "Santiago", "Antofagasta", 40, 100, "101", new DateTime(2021, 07, 20, 20, 00, 00), new DateTime(2021, 07, 20, 23, 00, 00));
            DBEntities db     = new DBEntities();

            FlightsController controller = new FlightsController();

            // Act
            IHttpActionResult actionResult = controller.PostFlight(flight);
            var createdResult = actionResult as CreatedAtRouteNegotiatedContentResult <Flight>;

            try
            {
                if (createdResult.RouteName == "DefaultApi")
                {
                    db.Entry(flight).State = EntityState.Deleted;
                    db.SaveChanges();
                }
            }
            catch (Exception)
            {
            }

            // Assert
            Assert.IsType <BadRequestResult>(actionResult);
        }
        public void Create_many_flights(int id)
        {
            var options = new DbContextOptionsBuilder <FlyingContext>()
                          .UseInMemoryDatabase(databaseName: "create_many_database")
                          .Options;

            // Run the test against one instance of the context
            using (var context = new FlyingContext(options))
            {
                // Create a new flight
                var flight = new Flight();
                flight.FlightId             = id;
                flight.DepartureName        = "Ronald Reagan Washington National Airport" + id;
                flight.DepartureLatitude    = 38.8521d;
                flight.DepartureLongitude   = -77.037697d;
                flight.DestinationName      = "Ken Jones Airport" + id;
                flight.DestinationLatitude  = 18.1987991333d;
                flight.DestinationLongitude = -76.53450012210001d;
                flight.FuelConsumption      = 1.26d;
                flight.TakeoffEffort        = 1.001d;
                flight.Speed = 500;

                // Save the flight in the data base
                var controller = new FlightsController(context);
                var result     = controller.Create(flight).Result as RedirectToActionResult;
                Assert.IsNotNull(result, $"Flight {id} was not created");
                Assert.AreEqual("Index", result.ActionName);
            }
        }
        public async Task GetFlightsAvailabilityAsync_WhenHasAvailability()
        {
            // Create test data and setup the mock object before the call
            string queryArgIssues = null;

            _mockAvailabilityService.Setup(o => o.QueryArgsIssues(
                                               It.IsAny <DateTime?>(),
                                               It.IsAny <DateTime?>(),
                                               It.IsAny <int?>()
                                               )).Returns(queryArgIssues);

            IEnumerable <Availability> availabilities = new Availability[] {
                new Availability {
                    FlightId    = 1,
                    BookingDate = DateTime.UtcNow.Date,
                    Passengers  = 2
                }
            };

            _mockAvailabilityService.Setup(o => o.GetAvailabilityAsync(
                                               It.IsAny <DateTime>(),
                                               It.IsAny <DateTime>(),
                                               It.IsAny <int>(),
                                               It.IsAny <CancellationToken>()
                                               )).Returns(Task.FromResult(availabilities));
            FlightsController controller = new FlightsController(_mockAvailabilityService.Object, _mockFlightService.Object);

            // Make the call
            var result = await controller.GetFlightsAvailabilityAsync(DateTime.UtcNow.Date, DateTime.UtcNow.Date, 2, CancellationToken.None);

            // Validate the outcome
            Assert.NotNull(result);
            Assert.IsType <OkObjectResult>(result);
        }
        public void Update_ShouldModifyFlight()
        {
            // Arrange
            FlightsController controller = new FlightsController(this.flightRepository);
            Guid modifiedFlightId        = this.flightRepository.GetAll().First().Id;

            // Create a completely new flight
            Flight modifiedFlight = new Flight(
                new Airport("MODIF1", "Modified DepartureAirport", 33.94250107, -118.4079971),
                new Airport("MODIF2", "Modified DestinationAirport", 33.94250107, -118.4079971),
                new Aircraft("MODIF3", "Modified Aircraft", 33.94250107, -118.4079971)
                );

            modifiedFlight.Id = modifiedFlightId; // Keep the id of the flight

            // Act
            var actionResult = controller.Update(modifiedFlight);

            // Asserts
            // Assert 1 : Call OK - 200
            Assert.IsType <CreatedAtActionResult>(actionResult.Result);

            // retrieve the new flight in the repository
            var flightFromRepository = this.flightRepository.GetById(modifiedFlight.Id);

            // Assert 2 : check created flight match the new one
            Assert.Equal(modifiedFlight.Aircraft.Name, flightFromRepository.Aircraft.Name);
            Assert.Equal(modifiedFlight.DepartureAirport.Name, flightFromRepository.DepartureAirport.Name);
            Assert.Equal(modifiedFlight.DestinationAirport.Name, flightFromRepository.DestinationAirport.Name);
        }
示例#18
0
        public async Task GetAllFlightsGetHttpRequestException_ShouldReturnBadRequest()
        {
            // Arrange
            this.managerMock.Setup(x => x.GetAllFlights(It.IsAny <string>(), It.IsAny <bool>())).Throws(
                new HttpRequestException());
            this.myContext.SetupGet(x => x.Request.QueryString).Returns(new QueryString
                                                                            ("?relative_to=2020-11-27T01:56:22Z"));
            var controllerContext = new ControllerContext()
            {
                HttpContext = myContext.Object,
            };
            var controller = new FlightsController(managerMock.Object)
            {
                ControllerContext = controllerContext,
            };

            // Act

            var response = await controller.GetAllFlights("asdfd");


            // Assert check if he handles HttpRequestException

            var    action  = Assert.IsType <BadRequestObjectResult>(response.Result);
            string message = Assert.IsAssignableFrom <string>(action.Value);

            Assert.Equal("problem in request to servers", message);
        }
        public void Create_ShouldAddFlight()
        {
            // Arrange
            var flightToAdd = new Flight(
                new Airport("HND", "Tokyo Haneda International Airport (Japan)", 35.552299, 139.779999),
                new Airport("LAX", "Los Angeles International Airport (United States)", 33.94250107, -118.4079971),
                new Aircraft("OO-JAA", "VICTORY", 0, 0)
                );
            FlightsController controller = new FlightsController(this.flightRepository);

            // Act
            var actionResult = controller.Create(flightToAdd);

            // Asserts
            // Assert 1 : Call OK - 200
            Assert.IsType <CreatedAtActionResult>(actionResult.Result);

            // retrieve the new flight in the repository
            var newFlightIdFromApi   = (Guid)(actionResult.Result as CreatedAtActionResult).RouteValues["id"];
            var flightFromRepository = this.flightRepository.GetById(newFlightIdFromApi);

            // Assert 2 : check created flight match the new one
            Assert.Equal(flightToAdd.Aircraft.Name, flightFromRepository.Aircraft.Name);
            Assert.Equal(flightToAdd.DepartureAirport.Name, flightFromRepository.DepartureAirport.Name);
            Assert.Equal(flightToAdd.DestinationAirport.Name, flightFromRepository.DestinationAirport.Name);
        }
示例#20
0
        public async Task GetAllFlightsGetFormatException_ShouldReturnBadRequest()
        {
            // Arrange
            this.managerMock.Setup(x => x.GetAllFlights(It.IsAny <string>(), It.IsAny <bool>())).Throws(
                new FormatException());
            this.myContext.SetupGet(x => x.Request.QueryString).Returns(new QueryString
                                                                            ("?relative_to=2020-11-27T01:56:22Z"));
            var controllerContext = new ControllerContext()
            {
                HttpContext = myContext.Object,
            };
            var controller = new FlightsController(managerMock.Object)
            {
                ControllerContext = controllerContext,
            };

            // Act

            ActionResult <IEnumerable <Flight> > response = await controller.GetAllFlights("asdfd");


            // Assert

            var    action  = Assert.IsType <BadRequestObjectResult>(response.Result);
            string message = Assert.IsAssignableFrom <string>(action.Value);

            Assert.Equal("Date and time not in format", message);
        }
示例#21
0
        public void Test_DeleteFlight()
        {
            // Setup
            Location location = new Location(38.112375, 23.879437, DateTime.UtcNow);

            List <Segment> segments = new List <Segment>();

            segments.Add(new Segment(31.922629, 31.522594, 50)); // Egypt
            segments.Add(new Segment(32.426506, 34.743033, 50)); // Cyprus
            segments.Add(new Segment(26.209199, 35.055211, 50)); // Greece
            FlightPlan flightPlan = new FlightPlan(8, "Company", location, segments);

            var stubRemoteServersConnector = new RemoteServersConnector();
            var mockFlightsManager         = new FlightsManager(stubRemoteServersConnector);

            mockFlightsManager.AddFlightPlan(flightPlan);
            List <Flight> flights           = mockFlightsManager.GetRelativeFlights(DateTime.UtcNow, false);
            string        flightId          = flights.ToArray()[0].Flight_Id;
            var           flightsController = new FlightsController(mockFlightsManager);

            // Act
            IActionResult delAction = flightsController.DeleteFlight(flightId);

            // Assert
            Assert.IsType <OkResult>(delAction);
            Assert.Empty(mockFlightsManager.GetRelativeFlights(DateTime.UtcNow, false));
        }
示例#22
0
        public async Task Delete_ValidRequest_Success()
        {
            // Arrange
            var flightId = _fixture.Create <Guid>();

            var tempData = new TempDataDictionary(
                new DefaultHttpContext(),
                Mock.Of <ITempDataProvider>())
            {
                [nameof(DefaultMessages.FlightDeletedMessage)] = DefaultMessages.FlightDeletedMessage
            };

            var target = new FlightsController(_mediatorMock.Object)
            {
                TempData = tempData
            };

            // Act
            var result = await target.Delete(flightId);

            // Assert
            var viewResult = result
                             .Should()
                             .BeOfType <RedirectToActionResult>().Subject;

            viewResult.ActionName
            .Should()
            .Be(nameof(FlightsController.Index));

            _mediatorMock.Verify(x => x.Send(
                                     It.IsAny <FlightDelete.Command>(),
                                     It.IsAny <CancellationToken>()));
        }
示例#23
0
        // Arrange the mocks and controller for the sync tests.
        private FlightsController ArrangeForSyncTests(bool withSync, List <Flight> flightsToReturn)
        {
            Mock <IFlightsManager> managerMock =
                new Mock <IFlightsManager>();

            managerMock.Setup(x => x.GetAllFlights(It.IsAny <string>(), false)).Returns(
                Task.Run(() => flightsToReturn.AsEnumerable()));
            managerMock.Setup(x => x.GetAllFlights(It.IsAny <string>(), true)).Returns(
                Task.Run(() => flightsToReturn.AsEnumerable()));
            Mock <HttpContext> myContext     = new Mock <HttpContext>();
            string             returnedValue = "?relative_to=2020-11-27T01:56:22Z";

            if (withSync)
            {
                returnedValue = "?relative_to=2020-11-27T01:56:22Z&sync_all";
            }
            myContext.SetupGet(x => x.Request.QueryString).Returns(new QueryString
                                                                       (returnedValue));
            ControllerContext controllerContext = new ControllerContext()
            {
                HttpContext = myContext.Object,
            };
            FlightsController controller = new FlightsController(managerMock.Object)
            {
                ControllerContext = controllerContext,
            };

            return(controller);
        }
示例#24
0
        public async Task CreateGet_ValidRequest_Success()
        {
            // Arrange
            var expectedAirports = _fixture.CreateMany <Airport>().ToList();

            _mediatorMock
            .Setup(x => x.Send(
                       It.IsAny <AirportAll.Query>(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(expectedAirports);

            var target = new FlightsController(_mediatorMock.Object);

            // Act
            var result = await target.Create();

            // Assert
            var viewResult = result
                             .Should()
                             .BeOfType <ViewResult>().Subject;

            var model = viewResult.ViewData.Model
                        .Should()
                        .BeOfType <AddFlightViewModel>().Subject;

            model.Airports
            .Should()
            .HaveCount(expectedAirports.Count);
        }
        public async Task ShouldReturnStatusCode()
        {
            //ARRANGE
            var mockFactory = new Mock <IHttpClientFactory>();
            var client      = new HttpClient(new HttpMessageHandlerStub());

            mockFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(client);
            IHttpClientFactory factory = mockFactory.Object;

            FlightsController controller = new FlightsController(factory);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();
            //prepare the query parameters with external servers
            controller.ControllerContext.HttpContext.Request.QueryString = new QueryString("?sync_all");

            MyServersManager myServersManager = new MyServersManager();
            Servers          server           = new Servers();

            server.ServerId  = "123";
            server.ServerURL = "http://mock.com";
            myServersManager.AddServer(server);


            //ACT
            var res = await controller.Get("2020-12-27T01:56:21Z");

            //ASSERT
            Assert.AreEqual(StatusCodes.Status400BadRequest, (res.Result as StatusCodeResult).StatusCode);
        }
示例#26
0
        public async Task FlightControllerTests_Update_ShouldReturnBadRequest_WhenAircraftIdIsZero()
        {
            // Arrange
            var newFlight = new CreateFlightArgs
            {
                FlightNumber         = string.Empty,
                AircraftId           = 0,
                DepartureAirportId   = 1,
                DestinationAirportId = 2,
                FlightDate           = DateTime.Now,
                FlightTime           = DateTime.Now
            };

            var flightController = new FlightsController(_flightCoreServicesMock.Object, _airportCoreServicesMock.Object, _aircraftCoreServicesMock.Object);

            flightController.ModelState.AddModelError("AircraftId", "Aircraft Id is not Valid.");

            // Act
            var result = await flightController.CreateFlightPost(newFlight);

            // Assert
            Check.That(result).IsInstanceOfType(typeof(BadRequestObjectResult));
            var viewResult = result as BadRequestObjectResult;

            Check.That(viewResult).IsNotNull();
            Check.That(flightController.ModelState.IsValid).IsFalse();
            Check.That(viewResult.StatusCode).IsEqualTo(400);

            _flightCoreServicesMock.Verify(service => service.CreateFlight(It.IsAny <CreateFlightArgs>()), Times.Never);
        }
        public void Delete_Should_delete_flight_by_id_return_statusCode_204()
        {
            // Arrange
            var flightDTO = new FlightDTO
            {
                Id               = 1,
                Number           = 1111,
                PointOfDeparture = "Lviv",
                DepartureTime    = new DateTime(2018, 07, 10, 18, 23, 0),
                Destination      = "London",
                DestinationTime  = new DateTime(2018, 07, 11, 18, 23, 0)
            };

            var flightService = A.Fake <IFlightService>();

            A.CallTo(() => flightService.GetEntity(A <int> ._)).Returns(flightDTO);

            var flightsController = new FlightsController(flightService);

            //Act
            var actionResult = flightsController.Delete(1);

            //Assert
            Assert.NotNull(actionResult);

            NoContentResult result = actionResult as NoContentResult;

            Assert.NotNull(result);
            Assert.AreEqual(204, result.StatusCode);
        }
示例#28
0
        public async Task FlightControllerTests_Update_ShouldCallFlightService_WhenModelIsValid()
        {
            // Arrange
            var newFlight = new CreateFlightArgs
            {
                FlightNumber         = "NewFlight",
                AircraftId           = 1,
                DepartureAirportId   = 1,
                DestinationAirportId = 2,
                FlightDate           = DateTime.Now,
                FlightTime           = DateTime.Now
            };

            var flightController = new FlightsController(_flightCoreServicesMock.Object, _airportCoreServicesMock.Object, _aircraftCoreServicesMock.Object);

            // Act
            var result = await flightController.CreateFlightPost(newFlight);

            // Assert
            Check.That(result).IsInstanceOfType(typeof(RedirectToActionResult));
            var viewResult = result as RedirectToActionResult;

            Check.That(viewResult).IsNotNull();
            Check.That(flightController.ModelState.IsValid).IsTrue();
            _flightCoreServicesMock.Verify(service => service.CreateFlight(It.IsAny <CreateFlightArgs>()), Times.Once);
        }
        public void Post_Should_create_new_flight_return_statusCode_200()
        {
            // Arrange
            var flightDTO = new FlightDTO
            {
                Number           = 1111,
                PointOfDeparture = "Lviv",
                DepartureTime    = new DateTime(2018, 07, 10, 18, 23, 0),
                Destination      = "London",
                DestinationTime  = new DateTime(2018, 07, 11, 18, 23, 0)
            };

            var flightService = A.Fake <IFlightService>();

            var flightsController = new FlightsController(flightService);

            //Act
            var actionResult = flightsController.Post(flightDTO);

            //Assert
            Assert.NotNull(actionResult);
            OkObjectResult result = actionResult as OkObjectResult;

            Assert.NotNull(result);
            Assert.AreEqual(200, result.StatusCode);
        }
        public void FlightsController_GetTheListOFALLFlights_ARE_TRUE()
        {
            //Arrange
            var mockRepository         = new Mock <IFlightManager>();
            List <FlightDetail> listFD = new List <FlightDetail>();

            listFD.Add(new FlightDetail()
            {
                DepartureCityCode = "DXB",
                ArrivalCityCode   = "DEL",
                FlightNumber      = "101",
                Capacity          = 20
            });

            listFD.Add(new FlightDetail()
            {
                DepartureCityCode = "MEL",
                ArrivalCityCode   = "SYD",
                FlightNumber      = "103",
                Capacity          = 25
            });

            mockRepository.Setup(x => x.GetAllFlightsList()).ReturnsAsync(listFD);
            var controller = new FlightsController(mockRepository.Object);

            //Act
            var result        = controller.GetAllFlightList();
            var contentResult = result.Result as OkNegotiatedContentResult <List <FlightDetail> >;

            //Assert
            Assert.IsNotNull(contentResult);
            Assert.IsNotNull(contentResult.Content);
            Assert.AreEqual(contentResult.Content.Count, 2);
        }