public async Task GetStatesAsync_Should_Return_OkObjectResult_With_CollectionResponse_With_StateResponses() { var getStatesRequest = new GetStatesRequest { Page = 1, PageSize = 100, Name = "Name", PolishName = "PolishName", Sort = "name:asc" }; var getStatesInputQuery = new GetStatesInputQuery(getStatesRequest.Page, getStatesRequest.PageSize, getStatesRequest.Sort, getStatesRequest.Name, getStatesRequest.PolishName); var stateOutputQuery = new StateOutputQuery(Guid.NewGuid(), Array.Empty <byte>(), "Name", "PolishName"); var stateOutputQueries = new Collection <StateOutputQuery> { stateOutputQuery }; var collectionOutputQuery = new CollectionOutputQuery <StateOutputQuery>(stateOutputQueries.Count, stateOutputQueries); var stateResponses = stateOutputQueries.Select(x => new StateResponse(x.Id, x.RowVersion, x.Name, x.PolishName)); var collectionResponse = new CollectionResponse <StateResponse>(stateOutputQueries.Count, stateResponses); _mapperMock.Setup(x => x.Map <GetStatesRequest, GetStatesInputQuery>(It.IsAny <GetStatesRequest>())) .Returns(getStatesInputQuery); _getStatesQueryHandlerMock .Setup(x => x.HandleAsync(It.IsAny <GetStatesInputQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(collectionOutputQuery); _mapperMock .Setup(x => x.Map <CollectionOutputQuery <StateOutputQuery>, CollectionResponse <StateResponse> >(It.IsAny <CollectionOutputQuery <StateOutputQuery> >())) .Returns(collectionResponse); var result = await _controller.GetStatesAsync(getStatesRequest); var okResult = result.As <OkObjectResult>(); okResult.Value.Should().BeEquivalentTo(collectionResponse); }
public async Task can_get_many_states() { // Arrange var request = new GetStatesRequest() { ActivityId = new Uri(ACTIVITY_ID), Agent = new Agent() { Name = AGENT_NAME, MBox = new Uri(AGENT_MBOX) }, Registration = REGISTRATION, Since = SINCE }; this._mockHttp .When(HttpMethod.Get, this.GetApiUrl("activities/state")) .WithQueryString("activityId", ACTIVITY_ID) .WithQueryString("agent", AGENT_QS) .WithQueryString("registration", REGISTRATION.ToString()) .WithQueryString("since", SINCE.ToString("yyyy-MM-ddTHH:mm:ss.fffZ")) .Respond(HttpStatusCode.OK, "application/json", this.ReadDataFile(Constants.ACTIVITY_STATES)); // Act List <string> stateIds = await this._client.States.GetMany(request); // Assert stateIds.Should().NotBeNullOrEmpty(); }
public async Task Should_Get_States_Collection_When_Requesting_By_User_Client() { var stateEntity = await InsertStateEntityAsync(_fixture.UserDbContext); var getStatesRequest = new GetStatesRequest { Page = 1, PageSize = 100, Name = stateEntity.Name, PolishName = stateEntity.PolishName, Sort = "name:asc" }; _fixture.UserHttpClient.DefaultRequestHeaders.Add("api-version", "1"); var response = await _fixture.UserHttpClient.GetAsync( $"api/states?page={getStatesRequest.Page}&pageSize={getStatesRequest.PageSize}&sort={getStatesRequest.Sort}&name={getStatesRequest.Name}&polishName={getStatesRequest.PolishName}"); var responseContentString = await response.Content.ReadAsStringAsync(); var expectedResponse = await PrepareExpectedResponseAsync(_fixture.UserDbContext, getStatesRequest); response.StatusCode.Should().BeEquivalentTo(HttpStatusCode.OK); responseContentString.Should().BeEquivalentTo(expectedResponse); }
public async Task <IActionResult> GetStatesAsync([FromQuery] GetStatesRequest request) { var getStatesInputQuery = _mapper.Map <GetStatesRequest, GetStatesInputQuery>(request); var collectionOutputQuery = await _getStatesQueryHandler.HandleAsync(getStatesInputQuery); var collectionResponse = _mapper.Map <CollectionOutputQuery <StateOutputQuery>, CollectionResponse <StateResponse> >(collectionOutputQuery); return(Ok(collectionResponse)); }
public GetStatesResponse GetStates(GetStatesRequest request) { GetStatesResponse response = new GetStatesResponse(); IEnumerable <dynamic> states; states = repository.GetStates(request.CountryCode); if (states == null) { throw new ResourceNotFoundException("The requested states list was not found."); } response.States = states; return(response); }
async Task <List <string> > IStatesApi.GetMany(GetStatesRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } request.Validate(); var options = new RequestOptions(ENDPOINT); this.CompleteOptions(options, request); HttpResponseMessage response = await this._client.GetJson(options); return(await response.Content.ReadAsAsync <List <string> >(new[] { new StrictJsonMediaTypeFormatter() })); }
private void CompleteOptions(RequestOptions options, GetStatesRequest request) { options.QueryStringParameters.Add("activityId", request.ActivityId.ToString()); string agentStr = JsonConvert.SerializeObject(request.Agent, new JsonSerializerSettings() { DefaultValueHandling = DefaultValueHandling.Ignore }); options.QueryStringParameters.Add("agent", agentStr); if (request.Registration.HasValue) { options.QueryStringParameters.Add("registration", request.Registration.Value.ToString()); } if (request.Since.HasValue) { options.QueryStringParameters.Add("since", request.Since.Value.ToString(Constants.DATETIME_FORMAT)); } }
private static async Task <string> PrepareExpectedResponseAsync(RivaAdministrativeDivisionsDbContext context, GetStatesRequest getStatesRequest) { var stateEntities = await context.States .Where(x => x.Name.ToLower().StartsWith(getStatesRequest.Name.ToLower()) && x.PolishName.ToLower().StartsWith(getStatesRequest.PolishName.ToLower())) .OrderBy(x => x.Name) .Skip(getStatesRequest.PageSize.Value * (getStatesRequest.Page.Value - 1)) .Take(getStatesRequest.PageSize.Value) .ToListAsync(); var stateResponses = stateEntities.Select(x => new StateResponse(x.Id, x.RowVersion, x.Name, x.PolishName)); var totalCount = await context.States.LongCountAsync(x => x.Name.ToLower().StartsWith(getStatesRequest.Name.ToLower()) && x.PolishName.ToLower().StartsWith(getStatesRequest.PolishName.ToLower())); var collectionResponse = new CollectionResponse <StateResponse>(totalCount, stateResponses); var settings = new JsonSerializerSettings { Formatting = Formatting.Indented, ContractResolver = new DefaultTestPlatformContractResolver { NamingStrategy = new CamelCaseNamingStrategy() } }; return(JsonConvert.SerializeObject(collectionResponse, settings)); }