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