示例#1
0
        public void ShouldReturnAnInvalidFilterOnInvalidFlightStartMissing()
        {
            var filter = new FlightFilter {
                FilterType = FilterType.Number, FlightEnd = 0
            };

            filter.IsValid().Should().BeFalse();
        }
示例#2
0
        public void ShouldReturnAnInvalidFilterOnInvalidDateEndMissing()
        {
            var filter = new FlightFilter {
                FilterType = FilterType.Date, DateStart = DateTime.Now
            };

            filter.IsValid().Should().BeFalse();
        }
示例#3
0
        public void ShouldReturnAValidFilterOnDateStartLessThanDateEnd()
        {
            var filter = new FlightFilter {
                FilterType = FilterType.Date, DateStart = DateTime.Now, DateEnd = DateTime.Now.AddDays(1)
            };

            filter.IsValid().Should().BeTrue();
        }
示例#4
0
        public void ShouldReturnAnInvalidFilterOnDateStartGreaterThanDateEnd()
        {
            var filter = new FlightFilter {
                FilterType = FilterType.Date, DateStart = DateTime.Now.AddDays(1), DateEnd = DateTime.Now
            };

            filter.IsValid().Should().BeFalse();
        }
示例#5
0
        public void ShouldReturnAValidFilterOnSuppliedLaunchType(string launchType)
        {
            var filter = new FlightFilter {
                FilterType = FilterType.Launch, Launch = launchType
            };

            filter.IsValid().Should().BeTrue();
        }
示例#6
0
        public void ShouldReturnAnInvalidFilterOnNumberAndDateCombined()
        {
            var filter = new FlightFilter {
                FilterType = FilterType.Date | FilterType.Number
            };

            filter.IsValid().Should().BeFalse();
        }
示例#7
0
        public void ShouldReturnAnInvalidFilterOnMissingLaunchType()
        {
            var filter = new FlightFilter {
                FilterType = FilterType.Launch
            };

            filter.IsValid().Should().BeFalse();
        }
示例#8
0
        public void ShouldReturnValidFilterOnValidCrewPosition(int position)
        {
            var filter = new FlightFilter {
                FilterType = FilterType.Crew, Crew = position
            };

            filter.IsValid().Should().BeTrue();
        }
示例#9
0
        public void ShouldReturnAnInvalidFilterOnAirfieldMissing()
        {
            var filter = new FlightFilter {
                FilterType = FilterType.Airfield
            };

            filter.IsValid().Should().BeFalse();
        }
示例#10
0
        public void ShouldReturnAValidFilterOnFlightStartLessThanFlightEnd()
        {
            var filter = new FlightFilter {
                FilterType = FilterType.Number, FlightStart = 1, FlightEnd = 2
            };

            filter.IsValid().Should().BeTrue();
        }
示例#11
0
        public void ShouldReturnAValidFilterOnDateStartEqualDateEnd()
        {
            var date   = DateTime.Now;
            var filter = new FlightFilter {
                FilterType = FilterType.Date, DateStart = date, DateEnd = date
            };

            filter.IsValid().Should().BeTrue();
        }
示例#12
0
        public IHttpActionResult Post([FromBody] FlightFilter filter)
        {
            if (filter == null)
            {
                return(BadRequest("Invalid Filter"));
            }

            if (!filter.IsValid())
            {
                return(BadRequest("Invalid Filter"));
            }

            dynamic flights = _flightProvider.GetFilteredFlights(filter);

            return(((List <Flight>)flights).Any() ? Ok(flights) : NotFound());
        }
示例#13
0
        public List <Flight> GetFilteredFlights(FlightFilter filter)
        {
            if (!filter.IsValid())
            {
                throw new InvalidFilterException("");
            }

            var flights = GetAllFlights();

            if (((int)filter.FilterType & (int)FilterType.Number) == (int)FilterType.Number)
            {
                flights = GetFlightsByNumber(flights, filter);
            }
            if (((int)filter.FilterType & (int)FilterType.Date) == (int)FilterType.Date)
            {
                flights = GetFlightsByDate(flights, filter);
            }
            if (((int)filter.FilterType & (int)FilterType.Aircraft) == (int)FilterType.Aircraft)
            {
                flights = GetFlightByAircraft(flights, filter);
            }
            if (((int)filter.FilterType & (int)FilterType.Airfield) == (int)FilterType.Airfield)
            {
                flights = GetFlightByAirfield(flights, filter);
            }
            if (((int)filter.FilterType & (int)FilterType.Launch) == (int)FilterType.Launch)
            {
                flights = GetFlightByLaunch(flights, filter);
            }
            if (((int)filter.FilterType & (int)FilterType.Crew) == (int)FilterType.Crew)
            {
                flights = GetFlightByCrew(flights, filter);
            }
            if (((int)filter.FilterType & (int)FilterType.Trace) == (int)FilterType.Trace)
            {
                flights = GetFlightsWithTraceFiles(flights);
            }

            return(flights);
        }
示例#14
0
        public void ShouldReturnAnInvalidFilter()
        {
            var filter = new FlightFilter();

            filter.IsValid().Should().BeFalse();
        }