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