public async Task Make_A_Billboard() { //Arrange var handler = new GetIntelligentBillboardHandler(_repository, _dateTimeService); //Act var response = await handler.Handle(new GetIntelligentBillboardRequest(10, 2, 2, true), CancellationToken.None); var(firstBigScreen, firstBigScreenMovie) = response.Billboard.ValueOr(() => null).First().MoviesOnBigScreen.First(); var(secondBigScreen, secondBigScreenMovie) = response.Billboard.ValueOr(() => null).First().MoviesOnBigScreen.Skip(1).First(); var(firstSmallScreen, firstSmallScreenMovie) = response.Billboard.ValueOr(() => null).First().MoviesOnSmallScreen.First(); var(firstBigScreen2NdWeek, firstBigScreenMovie2NdWeek) = response.Billboard.ValueOr(() => null).Skip(1).First().MoviesOnBigScreen.First(); //Assert response.Billboard.ValueOr(() => null).ToList().Should() .Match(l => l.First().MoviesOnBigScreen.Count == 2) .And.Match(l => l.First().MoviesOnSmallScreen.Count == 2); firstBigScreen.Value.Should().Be(1); firstBigScreenMovie.Title.Value.Should().Be("Some Title 1"); secondBigScreen.Value.Should().Be(2); secondBigScreenMovie.Title.Value.Should().Be("Some Title 2.1"); firstSmallScreen.Value.Should().Be(1); firstSmallScreenMovie.Title.Value.Should().Be("Some Title 4"); firstBigScreen2NdWeek.Value.Should().Be(1); firstBigScreenMovie2NdWeek.Title.Value.Should().Be("Some Title 2"); }
public async Task BuildAsManyBillboardsAsManyWeeksAreRequested(int timePeriod, int moviesExpected, string city) { //Arrange var handler = new GetIntelligentBillboardHandler(_proxy, _repository, _dateService); //Act var result = await handler.Handle(new GetIntelligentBillboardRequest(timePeriod, 1, 1, city), CancellationToken.None); //Assert result.Billboards.ValueOr(() => null).Should().HaveCount(timePeriod); result.Billboards.ValueOr(() => null).Should().Match(b => b.First().StartDate == _dateService.Now()); result.Billboards.ValueOr(() => null).Should().Match(b => GetTotalMovies(b) == moviesExpected); }
public async Task Make_A_Billboard_With_Many_Weeks_As_Needed(int periodOfTimeInDays, int weeksExpected) { //Arrange var handler = new GetIntelligentBillboardHandler(_repository, _dateTimeService); //Act var response = await handler.Handle(new GetIntelligentBillboardRequest(periodOfTimeInDays, 1, 1, true), CancellationToken.None); //Assert response.Billboard.ValueOr(() => null) .Should().HaveCount(weeksExpected); response.Billboard.ValueOr(() => null) .ToList().Should().Match(l => l.First().WeekStart == _dateTimeService.Now()); }
public async Task BuildASingleBillboard() { //Arrange var handler = new GetIntelligentBillboardHandler(_proxy, _repository, _dateService); //Act var result = await handler.Handle(new GetIntelligentBillboardRequest(1, 2, 2, null), CancellationToken.None); var firstSmallScreen = result.Billboards.ValueOr(() => null).First().SmallScreenMovies.First(); var secondSmallScreen = result.Billboards.ValueOr(() => null).First().SmallScreenMovies.Skip(1).First(); var firstBigScreen = result.Billboards.ValueOr(() => null).First().BigScreenMovies.First(); var secondBigScreen = result.Billboards.ValueOr(() => null).First().BigScreenMovies.Skip(1).First(); //Assert result.Billboards.ValueOr(() => null).Should().HaveCount(1); result.Billboards.ValueOr(() => null).Should() .Match(b => b.First().StartDate == _dateService.Now()) .And.Match(b => b.First().BigScreenMovies.Count == 2) .And.Match(b => b.First().SmallScreenMovies.Count == 2); firstSmallScreen.Title.Should().Be("Title1"); secondSmallScreen.Title.Should().Be("Title2"); firstBigScreen.Title.Should().Be("Title3"); secondBigScreen.Title.Should().Be("Title4"); }