public void EmptyListTest()
        {
            // Arrange
            var mockFactory       = new Mock <IHttpClientFactory>();
            var clientHandlerStub = new DelegatingHandlerStub();
            var client            = new HttpClient(clientHandlerStub);

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

            IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions());

            Mock <IMemoryCache>  cache      = new Mock <IMemoryCache>();
            FlightPlanController controller = new FlightPlanController(memoryCache, factory);
            // Arrange
            var myContext = new Mock <HttpContext>();

            myContext.SetupGet(x => x.Request.QueryString).
            Returns(new QueryString("?relative_to=" + DateTime.Now));
            var controllerContext = new ControllerContext()
            {
                HttpContext = myContext.Object,
            };

            controller = new FlightPlanController(memoryCache, factory)
            {
                ControllerContext = controllerContext,
            };
            // Act
            var actionResult = controller.GetFlightsByDateAsync(DateTime.Now);

            // Assert
            Assert.IsTrue(actionResult.Result.Value.Count == 0);
        }
        public void LateRelativeDateTime()
        {
            // Arrange
            var mockFactory       = new Mock <IHttpClientFactory>();
            var clientHandlerStub = new DelegatingHandlerStub();
            var client            = new HttpClient(clientHandlerStub);

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

            IHttpClientFactory factory     = mockFactory.Object;
            IMemoryCache       memoryCache = new MemoryCache(new MemoryCacheOptions());

            Mock <IMemoryCache> cache = new Mock <IMemoryCache>();

            var myContext = new Mock <HttpContext>();

            DateTime   now        = DateTime.Now;
            FlightPlan flightPlan = new FlightPlan();

            flightPlan.passengers = 200;
            var          json      = JsonConvert.SerializeObject(flightPlan);
            var          byteArray = Encoding.ASCII.GetBytes(json);
            MemoryStream stream    = new MemoryStream(byteArray);

            stream.Flush();
            stream.Position = 0;

            myContext.SetupGet(x => x.Request.Body).Returns(stream);
            var controllerContext = new ControllerContext()
            {
                HttpContext = myContext.Object,
            };
            FlightPlanController controller = new FlightPlanController(memoryCache, factory)
            {
                ControllerContext = controllerContext,
            };

            // Act
            ActionResult <FlightPlan> answer = controller.AddFlightPlan(flightPlan);

            // Assert
            Assert.AreEqual(answer.Value, flightPlan);
        }
        public void WrongFligthID()
        {
            // Arrange
            var mockFactory       = new Mock <IHttpClientFactory>();
            var clientHandlerStub = new DelegatingHandlerStub();
            var client            = new HttpClient(clientHandlerStub);

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

            IHttpClientFactory factory     = mockFactory.Object;
            IMemoryCache       memoryCache = new MemoryCache(new MemoryCacheOptions());

            Mock <IMemoryCache> cache       = new Mock <IMemoryCache>();
            var myContext                   = new Mock <HttpContext>();
            FlightPlanController controller = new FlightPlanController(memoryCache, factory);

            // Act
            Task <ActionResult <FlightPlan> > flightPlan = controller.GetFlightPlanById("dfasd3");


            // Assert
            Assert.IsNull(flightPlan.Result.Value);
        }
        public void GetFlightPlan()
        {
            // Arrange
            var mockFactory       = new Mock <IHttpClientFactory>();
            var clientHandlerStub = new DelegatingHandlerStub();
            var client            = new HttpClient(clientHandlerStub);

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

            IHttpClientFactory factory     = mockFactory.Object;
            IMemoryCache       memoryCache = new MemoryCache(new MemoryCacheOptions());

            Mock <IMemoryCache> cache = new Mock <IMemoryCache>();

            var myContext = new Mock <HttpContext>();

            DateTime   now        = DateTime.Now;
            FlightPlan flightPlan = new FlightPlan();

            flightPlan.company_name               = "swiss";
            flightPlan.passengers                 = 200;
            flightPlan.initial_location           = new InitialLocation();
            flightPlan.initial_location.date_time = DateTime.Now;
            flightPlan.segments = new List <Segments>();
            flightPlan.segments.Add(new Segments());
            flightPlan.segments[0].timespan_seconds = 100;

            var          json      = JsonConvert.SerializeObject(flightPlan);
            var          byteArray = Encoding.ASCII.GetBytes(json);
            MemoryStream stream    = new MemoryStream(byteArray);

            stream.Flush();
            stream.Position = 0;

            myContext.SetupGet(x => x.Request.Body).Returns(stream);
            var controllerContext = new ControllerContext()
            {
                HttpContext = myContext.Object,
            };
            FlightPlanController controller = new FlightPlanController(memoryCache, factory)
            {
                ControllerContext = controllerContext,
            };

            // Act
            controller.AddFlightPlan(flightPlan);

            // Arrange
            myContext = new Mock <HttpContext>();
            myContext.SetupGet(x => x.Request.QueryString).
            Returns(new QueryString("?relative_to=" + DateTime.Now));
            controllerContext = new ControllerContext()
            {
                HttpContext = myContext.Object,
            };
            controller = new FlightPlanController(memoryCache, factory)
            {
                ControllerContext = controllerContext,
            };

            //Act
            var list = controller.GetFlightsByDateAsync(DateTime.Now);

            // Assert
            Assert.IsTrue(list.Result.Value.Count == 1);

            // Act
            Task <ActionResult <FlightPlan> > answer =
                controller.GetFlightPlanById(list.Result.Value[0].flight_id);

            // Assert
            Assert.AreEqual(answer.Result.Value, flightPlan);

            // Act
            controller.DeleteFlight(list.Result.Value[0].flight_id);
            list = controller.GetFlightsByDateAsync(DateTime.Now);

            // Assert
            Assert.IsTrue(list.Result.Value.Count == 0);
        }