public void CalculateDepartureTimeDifferenceProvidesCorrectResult()
        {
            var mockBaseTime             = new TimeSpan(23, 44, 0);
            var mockDepartureTime        = new TimeSpan(23, 45, 0);
            var mockDepartureTimeNextDay = new TimeSpan(0, 0, 0);

            var expectedDifference        = 1D;
            var expectedDifferenceNextDay = 16D;

            var result        = _timeCalculator.CalculateDepartureTimeDifference(mockDepartureTime, mockBaseTime);
            var resultNextDay = _timeCalculator.CalculateDepartureTimeDifference(mockDepartureTimeNextDay, mockBaseTime);

            Assert.AreEqual(result, expectedDifference);
            Assert.AreEqual(resultNextDay, expectedDifferenceNextDay);
        }
        // get all the routes, each with 2 closest departure times
        // params: busStopId - Id of the selected bus stop, baseTime - TimeSpan for comparison
        public async Task <IEnumerable <ScheduleItemDTO> > GetScheduleItemList(int busStopId, TimeSpan baseTime)
        {
            var retValue = new List <ScheduleItemDTO>();

            var scheduleListQuery = await _repository.GetAll().ConfigureAwait(false);

            var routes = scheduleListQuery
                         .Where(s => s.BusStop.Id == busStopId).ToList();

            foreach (var route in routes)
            {
                var routeToBeAdded = new ScheduleItemDTO()
                {
                    Route      = route.Route,
                    Departures = route
                                 .Departures
                                 .Where(d => d > baseTime)
                                 .OrderBy(d => d)
                                 .Select(d => _timeCalculator.CalculateDepartureTimeDifference(d, baseTime))
                                 .Take(SearchCount).ToList()
                };

                // checking if midnight approaches and there are no two remaining repartures
                var departureCount = routeToBeAdded.Departures.Count;
                if (departureCount < 2)
                {
                    routeToBeAdded.Departures.AddRange(
                        route
                        .Departures
                        .OrderBy(d => d)
                        .Select(d => _timeCalculator.CalculateDepartureTimeDifference(d, baseTime))
                        .Take(SearchCount - departureCount).ToList()
                        );
                }

                retValue.Add(routeToBeAdded);
            }

            return(retValue);
        }