Пример #1
0
        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);
        }
Пример #3
0
        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");
        }