Example #1
0
        public async Task GetAsync_requests_proper_uri(PaymentQueryState state, int page, string expectedPath)
        {
            // arrange
            var expectedRequest = new PaymentPageQuery
            {
                State = state,
                Page  = page,
            };
            var expectedResult = new IamportResponse <PagedResult <Payment> >
            {
                HttpStatusCode = HttpStatusCode.OK,
            };
            var client = GetMockClient(expectedResult);
            var sut    = new PaymentsApi(client);

            // act
            var result = await sut.GetAsync(expectedRequest);

            // assert
            Mock.Get(client)
            .Verify(mocked =>
                    mocked.RequestAsync <object, PagedResult <Payment> >(
                        It.Is <IamportRequest>(req =>
                                               req.ApiPathAndQueryString.EndsWith(expectedPath))));
        }
Example #2
0
        public async Task GetAsync_throws_IamportResponseException_when_response_code_is_not_success()
        {
            // arrange
            var expectedRequest = new PaymentPageQuery
            {
            };
            var expectedResult = new IamportResponse <PagedResult <Payment> >
            {
                Code           = -1,
                HttpStatusCode = HttpStatusCode.InternalServerError,
            };
            var client = GetMockClient(expectedResult);
            var sut    = new PaymentsApi(client);

            // act/assert
            await Assert.ThrowsAsync <IamportResponseException>(
                () => sut.GetAsync(expectedRequest));
        }
        /// <summary>
        /// 주어진 조회 조건에 해당하는 결제 결과를 조회합니다.
        /// </summary>
        /// <param name="query">결제 조회 조건</param>
        /// <seealso>https://api.iamport.kr/#!/payments/getPaymentsByStatus</seealso>
        /// <returns>결제 결과의 목록</returns>
        public async Task <PagedResult <Payment> > GetAsync(PaymentPageQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }
            var pathAndQuerystring = GetPathAndQuerystring($"status/{query.State.GetMemberValue()}");

            if (query.Page > 0)
            {
                pathAndQuerystring += $"?page={query.Page}";
            }
            var request = new IamportRequest
            {
                ApiPathAndQueryString = pathAndQuerystring,
                Method = HttpMethod.Get,
            };

            return(await SendRequestAsync <object, PagedResult <Payment> >(request));
        }