示例#1
0
        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);
        }
示例#2
0
        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();
        }
示例#3
0
        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);
        }
示例#4
0
        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));
        }
示例#5
0
        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);
        }
示例#6
0
        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() }));
        }
示例#7
0
        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));
            }
        }
示例#8
0
        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));
        }