public void GetAirportsReturnsAnEnumerableOfAirport()
        {
            // Arrange
            var airportService = new AirportService();

            airportService.AirportData = @"\Debug\SampleData\Airports.csv";

            // Act
            var results = airportService.GetAirports();

            // Assert
            Assert.IsInstanceOfType(results, typeof(IEnumerable <Airport>));
        }
        public void GetAirportsReturnsCsvData()
        {
            // Arrange
            var airportService = new AirportService();

            airportService.AirportData = @"\Debug\SampleData\Airports.csv";

            // Act
            var results = airportService.GetAirports();

            // Assert
            Assert.AreEqual(4, results.Count());
        }
        public IActionResult FindNearest(string cities)
        {
            string host = "https://homework.appulate.com/api";
            var    s    = new AirportService(host);

            string[] arr = cities.Split(",");

            try {
                var list = s.GetAirports(arr).Result;
                if (list.Count == 0)
                {
                    return(Ok("There are no airports found for cities"));
                }
                else
                {
                    List <AirportPair> pairs    = s.CalculateDistance(list);
                    List <AirportPair> shortest = new List <AirportPair>();
                    foreach (AirportPair ap in pairs)
                    {
                        var p = shortest.Where(a => a.IsSameRoute(ap)).SingleOrDefault();
                        if (p == null)
                        {
                            shortest.Add(ap);
                        }
                        else if (ap.Distance < p.Distance)
                        {
                            shortest[shortest.FindIndex(a => a.IsSameRoute(p))] = ap;
                        }
                    }

                    if (shortest.Count == 0)
                    {
                        return(Ok("Can't build pair of cities"));
                    }
                    else
                    {
                        return(Ok(shortest));
                    }
                }
            } catch (Exception ex) {
                return(StatusCode(500, ex.Message));
            } finally {
                s.Dispose();
            }
        }