public async Task can_update_a_checkout() { var requestInfo = @"""email"""; SetupServerSingleResponse(CheckoutData.CheckoutWithRequestInfo(requestInfo)); var updateCheckout = new UpdateCheckout { LocalPrice = new Money { Amount = 200.00m, Currency = "USD" } }; var update = await api.UpdateCheckoutAsync(CheckoutData.CheckoutModel.Id, updateCheckout); var truth = new Response <Checkout> { Data = CheckoutData.CheckoutModel }; truth.Data.RequestedInfo.Add("email"); truth.Should().BeEquivalentTo(update); server.ShouldHaveCalled($"https://api.commerce.coinbase.com/checkouts/{CheckoutData.CheckoutModel.Id}") .WithVerb(HttpMethod.Put); }
public async Task can_update_checkout_with_empty_requestinfo() { var update = new UpdateCheckout(); update.RequestedInfo.Clear(); var checkout = await commerceApi.UpdateCheckoutAsync("6c7b12af-861b-48a5-b462-68f2a90f2ddb", update); checkout.Dump(); }
public async Task sending_checkout_updates_to_the_server_should_only_be_of_defined_values() { SetupServerSingleResponse(CheckoutData.Checkout); var updateCheckout = new UpdateCheckout { LocalPrice = new Money { Amount = 200.00m, Currency = "USD" } }; await api.UpdateCheckoutAsync(CheckoutData.CheckoutModel.Id, updateCheckout); //client should only send up only explicitly filled out fields. var onlyMinimalUpdateSentToServer = @"{""local_price"":{""amount"":200.00,""currency"":""USD""}}"; server.CallLog.First().RequestBody.Should().Be(onlyMinimalUpdateSentToServer); }
public void should_seralize_requestedinfo_when_property_has_been_modified() { var update = new UpdateCheckout(); update.ShouldSerializeRequestedInfo().Should().BeFalse(); update.RequestedInfo.Add("hello"); update.ShouldSerializeRequestedInfo().Should().BeTrue(); update.RequestedInfo = null; update.ShouldSerializeRequestedInfo().Should().BeFalse(); update.RequestedInfo.Add("world"); update.RequestedInfo.Clear(); update.ShouldSerializeRequestedInfo().Should().BeTrue(); }
/// <summary> /// Update a checkout. /// </summary> /// <param name="checkoutId">The checkout id</param> /// <param name="checkout">The checkout to update</param> public virtual Task <Response <Checkout> > UpdateCheckoutAsync(string checkoutId, UpdateCheckout checkout, CancellationToken cancellationToken = default) { return(CheckoutEndpoint .AppendPathSegment(checkoutId) .PutJsonAsync(checkout, cancellationToken) .ReceiveJson <Response <Checkout> >()); }