public void Generate_ConsulmibleQueriedMovies_From_List_Sorting()
        {
            //Arrange
            //Act
            var consumibleQueriedMovies = new ConsumibleQueriedMovies(_queriedMoviesFeed);

            //Assert
            consumibleQueriedMovies.QueriedMovies.Should().HaveCount(_queriedMoviesFeed.Count);
            consumibleQueriedMovies.QueriedMovies.Should().Match(q => q.First().Title.Equals(_queriedMoviesFeed[2].Title));
        }
        public void Consume_First_Matching_QueriedMovie_By_Date(DateTime date, string expectedTitle)
        {
            //Arrange
            //Act
            var consumibleQueriedMovies = new ConsumibleQueriedMovies(_queriedMoviesFeed);
            var conumedMovie            = consumibleQueriedMovies.PopFirstValidMovieByDate(date);

            //Assert
            conumedMovie.ValueOr(() => null).Title.Value.Should().Be(expectedTitle);
            consumibleQueriedMovies.QueriedMovies.Should().HaveCount(_queriedMoviesFeed.Count - 1);
        }
        public void Not_Consume_Any_Movie_If_Date_Is_Far_Behind()
        {
            //Arrange
            //Act
            var consumibleQueriedMovies = new ConsumibleQueriedMovies(_queriedMoviesFeed);
            var conumedMovie            = consumibleQueriedMovies.PopFirstValidMovieByDate(new DateTime(2000, 1, 1));

            //Assert
            consumibleQueriedMovies.QueriedMovies.Should().HaveCount(_queriedMoviesFeed.Count);
            conumedMovie.ValueOr(() => null).Should().BeNull();
        }
Beispiel #4
0
        private IEnumerable <BillboardLine> ObtainBillboard()
        {
            var       weekStartDateTime = _dateTimeService.Now();
            int       remainingDays     = _request.PeriodOfTimeInDays;
            const int weekLength        = 7;
            var       consumibleSmall   = new ConsumibleQueriedMovies(QueriedMoviesBySize(QueriedMovie.SmallSize));
            var       consumibleBig     = new ConsumibleQueriedMovies(QueriedMoviesBySize(QueriedMovie.BigSize));

            do
            {
                yield return(new BillboardLine(
                                 new WeekStart(weekStartDateTime),
                                 BuildMoviesByDate(weekStartDateTime, consumibleBig, _request.BigScreens).ToList(),
                                 BuildMoviesByDate(weekStartDateTime, consumibleSmall, _request.SmallScreens).ToList()));

                remainingDays    -= weekLength;
                weekStartDateTime = weekStartDateTime.AddDays(weekLength);
            } while (remainingDays > 0);
        }
Beispiel #5
0
 private IEnumerable <(Screen, QueriedMovie)> BuildMoviesByDate(DateTime weekStartDateTime, ConsumibleQueriedMovies consumibleQueriedMovies, int numberOfScreens)
 {
     for (int screen = 1; screen <= numberOfScreens; screen++)
     {
         yield return
             (
             new Screen(screen),
             consumibleQueriedMovies.PopFirstValidMovieByDate(weekStartDateTime).ValueOr(() => null)
             );
     }
 }