Example #1
0
        public async void Get_Empty_Board_When_There_Are_Not_Any_Movies(int weeksFromNow, int bigRoomsScreens, int smallRoomsScreens)
        {
            //Arrange
            var billBoardCalculator = new BillboardCalculator(_repository, _weekDates, weeksFromNow, bigRoomsScreens, smallRoomsScreens, false);

            //Act
            var billBoard = await billBoardCalculator.GetBillboard();

            //Assert
            billBoard.GetWeekBoard().Should().BeEmpty();
        }
Example #2
0
        public async void Get_Board_With_Many_SmallRoom_Screen_Movie(int weeksFromNow, int bigRoomsScreens, int smallRoomsScreens)
        {
            //Arrange
            var billBoardCalculator = new BillboardCalculator(_repository, _weekDates, weeksFromNow, bigRoomsScreens, smallRoomsScreens, false);
            var expectedMovies      = BuildMovieInfosList();

            _repository.GetMoviesInfo().Returns(expectedMovies);

            //Act
            var billBoard = await billBoardCalculator.GetBillboard();

            //Assert
            billBoard.GetWeekBoard().Should().HaveCount(weeksFromNow);
            billBoard.GetWeekBoard().Should().Match(w => w.First().SmallScreenBoard.Count == smallRoomsScreens);
            billBoard.GetWeekBoard().Should().Match(w => w.First().SmallScreenBoard.First().Movie.Title == expectedMovies.Skip(5).First().Title&& w.First().BigScreenBoard.Count == bigRoomsScreens);
        }
Example #3
0
        public async Task <IActionResult> GetIntelligentBillboard([BindRequired, FromQuery] int weeksFromNow,
                                                                  [BindRequired, FromQuery] int numberOfBigScreens,
                                                                  [BindRequired, FromQuery] int numberOfSmallScreens,
                                                                  [FromQuery] bool basedOnCityMovies)
        {
            try
            {
                _logger.LogInformation("Call to api/Managers/IntelligentBillboard");
                var boardCalculator = new BillboardCalculator(_repository, _weekDates, weeksFromNow, numberOfBigScreens, numberOfSmallScreens, basedOnCityMovies);
                var billboard       = await boardCalculator.GetBillboard();

                return(Ok(billboard.ToDto()));
            }
            catch (ArgumentException exception)
            {
                _logger.LogError("Error in api/Managers/IntelligentBillboard: {0}", exception.Message);
                return(BadRequest());
            }
        }
Example #4
0
        public async void Get_Board_Without_Total_Seat_Sold_And_Some_Gaps_When_There_Are_Not_Movies_Released_That_Week(int weeksFromNow, int bigRoomsScreens, int smallRoomsScreens)
        {
            //Arrange
            _utc.Now().Returns(new DateTime(2019, 08, 01));
            var billBoardCalculator = new BillboardCalculator(_repository, _weekDates, weeksFromNow, bigRoomsScreens, smallRoomsScreens, false);
            var expectedMovies      = BuildMovieInfosList(false);

            _repository.GetMoviesInfo().Returns(expectedMovies);


            //Act
            var billBoard = await billBoardCalculator.GetBillboard();

            //Assert

            billBoard.GetWeekBoard().Should().Match(w => w.First().BigScreenBoard.Count == bigRoomsScreens);
            billBoard.GetWeekBoard().Should().Match(w => w.First().BigScreenBoard.First().Movie.Title == expectedMovies.First().Title);
            billBoard.GetWeekBoard().Should().Match(w => w.First().BigScreenBoard.Skip(1).First().Movie.Title == expectedMovies.Skip(2).First().Title);
            billBoard.GetWeekBoard().Should().Match(w => w.Skip(1).First().BigScreenBoard.First().Movie == null); //Gap
            billBoard.GetWeekBoard().Should().Match(w => w.Skip(2).First().BigScreenBoard.First().Movie.Title == expectedMovies.Skip(1).First().Title);
        }
Example #5
0
        public async void Not_Build_Weeks_With_Not_Released_Movies(int weeksFromNow, int bigRoomsScreens, int smallRoomsScreens)
        {
            //Arrange
            _utc.Now().Returns(new DateTime(2019, 08, 01));
            var billBoardCalculator = new BillboardCalculator(_repository, _weekDates, weeksFromNow, bigRoomsScreens, smallRoomsScreens, false);
            var expectedMovies      = BuildMovieInfosList();

            _repository.GetMoviesInfo().Returns(expectedMovies);


            //Act
            var billBoard = await billBoardCalculator.GetBillboard();

            //Assert
            billBoard.GetWeekBoard().Should().Match(w => w.First().BigScreenBoard.Count == bigRoomsScreens);
            billBoard.GetWeekBoard().Should().Match(w => w.First().BigScreenBoard.First().Movie.Title == expectedMovies.First().Title);
            billBoard.GetWeekBoard().Should().Match(w => w.Skip(1).First().BigScreenBoard.First().Movie.Title == expectedMovies.Skip(2).First().Title);
            billBoard.GetWeekBoard().Should().Match(w => w.Skip(2).First().BigScreenBoard.First().Movie.Title == expectedMovies.Skip(1).First().Title);

            billBoard.GetWeekBoard().Should().HaveCount(weeksFromNow);
            billBoard.GetWeekBoard().Should().Match(w => w.First().SmallScreenBoard.Count == smallRoomsScreens);
            billBoard.GetWeekBoard().Should().Match(w => w.First().SmallScreenBoard.First().Movie.Title == expectedMovies.Skip(6).First().Title&& w.First().BigScreenBoard.Count == bigRoomsScreens);
            billBoard.GetWeekBoard().Should().Match(w => w.Skip(1).First().SmallScreenBoard.First().Movie.Title == expectedMovies.Skip(4).First().Title&& w.First().BigScreenBoard.Count == bigRoomsScreens);
        }