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(); }
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); }
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) ); } }