public override object ReadJson( JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer) { JObject jObject = JObject.Load(reader); GetScheduleResponse response = new GetScheduleResponse(); foreach (var node in jObject) { if (node.Value != null && Enum.TryParse(node.Key, out Currency currency)) { CurrencySchedule currencySchedule = new CurrencySchedule(); serializer.Populate(node.Value.CreateReader(), currencySchedule); response.Currency = new Dictionary <Currency, CurrencySchedule> { { currency, currencySchedule } }; } if (node.Key.Equals("_links") && node.Value != null) { var resource = new Dictionary <string, Link>(); serializer.Populate(node.Value.CreateReader(), resource); response.Links = resource; } } return(response); }
private async Task ShouldUpdateAndRetrieveMonthlyPayoutSchedules() { var scheduleRequest = new UpdateScheduleRequest { Enabled = true, Threshold = 1000, Recurrence = new ScheduleFrequencyMonthlyRequest { ByMonthDay = new[] { 3, 5 } } }; var emptyResponse = await GetPayoutSchedulesCheckoutApi().AccountsClient() .UpdatePayoutSchedule("ent_sdioy6bajpzxyl3utftdp7legq", Currency.USD, scheduleRequest); emptyResponse.ShouldNotBeNull(); emptyResponse.HttpStatusCode.ShouldNotBeNull(); emptyResponse.ResponseHeaders.ShouldNotBeNull(); var response = await GetPayoutSchedulesCheckoutApi().AccountsClient() .RetrievePayoutSchedule("ent_sdioy6bajpzxyl3utftdp7legq"); response.ShouldNotBeNull(); response.Currency.ShouldNotBeEmpty(); CurrencySchedule currencySchedule = response.Currency[Currency.USD]; currencySchedule.ShouldNotBeNull(); currencySchedule.Enabled.ShouldNotBeNull(); currencySchedule.Threshold.ShouldNotBeNull(); currencySchedule.Recurrence.ShouldBeOfType(typeof(ScheduleFrequencyMonthlyResponse)); ((ScheduleFrequencyMonthlyResponse)currencySchedule.Recurrence).ByMonthDay.Count.ShouldBe(2); }