public async Task ReturnMoviesFromDatabase()
        {
            var billboardRequest = BogusIntelligentBillboardData.GetIntelligentBillboardRequestsList(10);


            var firstRequestExpected = billboardRequest.First();
            var city        = BogusCityData.GetCity(firstRequestExpected.City);
            var cinemas     = BogusCinemaData.GetCinemaList(100);
            var movies      = BogusMovieData.GetMovieList(100);
            var sessions    = BogusSessionData.GetSessionList(100, _dateService.Now());
            var rooms       = BogusRoomData.GetRoomList(100);
            var genres      = BogusGenreData.GetGenreList(100);
            var movieGenres = BogusMovieGenreData.GetMovieGenreList(100);

            await SeedData(city, cinemas, movies, sessions, rooms, genres, movieGenres);

            var request = new GetIntelligentBillboardRequest(
                firstRequestExpected.TimePeriod,
                firstRequestExpected.BigRooms,
                firstRequestExpected.SmallRooms,
                firstRequestExpected.City);

            var result = await CallApi(request);

            result.Should().HaveCount(request.TimePeriod);
            result.Should().OnlyHaveUniqueItems();
            result.Should().Contain(b => b.SmallScreenMovies.Count == request.SmallRooms);
            result.Should().Contain(b => b.BigScreenMovies.Count == request.BigRooms);
            result.Select(r => r.StartDate).Should().BeInAscendingOrder();
        }
Example #2
0
        public void Validate_The_Request(int periodOfTimeInDays, int bigScreens, int smallScreens, bool city, bool isValid)
        {
            var validator = new GetIntelligentBillboardValidator();
            var request   = new GetIntelligentBillboardRequest(periodOfTimeInDays, bigScreens, smallScreens, city);

            var result = validator.Validate(request);

            result.IsValid.Should().Be(isValid);
        }
Example #3
0
        public void Validate_The_Request(int timePeriod, int bigRooms, int smallRooms, bool valid)
        {
            var validator = new GetIntelligentBillboardValidator();
            var request   = new GetIntelligentBillboardRequest(timePeriod, bigRooms, smallRooms, "anyCity");

            var result = validator.Validate(request);

            result.IsValid.Should().Be(valid);
        }
 private string BuildQueryParams(GetIntelligentBillboardRequest request)
 {
     return(string.Empty
            .AddQueryParam("timePeriod", request.TimePeriod)
            .AddQueryParam("bigRooms", request.BigRooms)
            .AddQueryParam("smallRooms", request.SmallRooms)
            .AddQueryParam("city", request.City)
            .AddQueryParam("api-version", "1.0")
            );
 }
Example #5
0
        public async Task <IActionResult> GetIntelligentBillboard([FromQuery, BindRequired] int timePeriod,
                                                                  [FromQuery, BindRequired] int bigRooms, [FromQuery, BindRequired] int smallRooms,
                                                                  [FromQuery] string city)
        {
            var request = new GetIntelligentBillboardRequest(timePeriod, bigRooms, smallRooms, city);

            var response = await _mediator.Send(request);

            return(response.Billboards.Match <IActionResult>(r => Ok(r.Select(b => b.ToDto()).ToList()), NotFound));
        }
        private async Task <List <IntelligentBillboardResponse> > CallApi(GetIntelligentBillboardRequest request)
        {
            var response = await _client.GetAsync($"/api/managers/billboards/intelligent{BuildQueryParams(request)}");

            response.EnsureSuccessStatusCode();
            var jsonResponse = await response.Content.ReadAsStringAsync();

            var result =
                JsonConvert.DeserializeObject <List <IntelligentBillboardResponse> >(jsonResponse);

            return(result);
        }
        public async Task <IActionResult> GetIntelligent([FromQuery, BindRequired] int periodOfTimeInDays, [FromQuery, BindRequired] int bigScreens, [FromQuery, BindRequired] int smallScreens, [FromQuery] bool city, [FromQuery] PageParameters pageParameters)
        {
            var request  = new GetIntelligentBillboardRequest(periodOfTimeInDays, bigScreens, smallScreens, city);
            var response = await _mediator.Send(request);

            return(response.Billboard.Match <IActionResult>(
                       some: x =>
                       Ok(new PagedList <IntelligentBillboardResponse>(
                              x.Select(l => l.ToDto())
                              .Skip((pageParameters.PageNumber - 1) * pageParameters.PageSize)
                              .Take(pageParameters.PageSize).ToList(),
                              x.Count,
                              pageParameters.PageNumber,
                              pageParameters.PageSize)),
                       none: NotFound));
        }
        public async Task ReturnMoviesFromProxy()
        {
            var billboardRequest     = BogusIntelligentBillboardData.GetIntelligentBillboardRequestsList(5);
            var firstRequestExpected = billboardRequest.First();

            var request = new GetIntelligentBillboardRequest(
                firstRequestExpected.TimePeriod,
                firstRequestExpected.BigRooms,
                firstRequestExpected.SmallRooms,
                null);

            var result = await CallApi(request);

            result.Should().HaveCount(request.TimePeriod);
            result.Should().OnlyHaveUniqueItems();
            result.Should().Contain(b => b.SmallScreenMovies.Count == request.SmallRooms);
            result.Should().Contain(b => b.BigScreenMovies.Count == request.BigRooms);
            result.Select(r => r.StartDate).Should().BeInAscendingOrder();
        }