From 23c9b99af3a43dc96efc7f3d7060b6d570aa0c99 Mon Sep 17 00:00:00 2001 From: sdk-bot Date: Wed, 14 Oct 2026 10:10:03 -0400 Subject: [PATCH] [FAILED] sdk-sync: API 2.0.1+0000001 tests: The SDK already fully implemented `countback` for `markets/status` (MarketStatusRequest, MarketRequests.validateWindow, MarketsResource.statusSpec) with wire, decode, and validation tests. I closed two coverage gaps: a unit test asserting `date`+`countback` are rejected as mutually exclusive (mirroring the equivalent OptionsResourceTest case, previously untested for markets), and a stronger integration test asserting countback returns exactly 5 days and widens the result past the unfiltered single-day default, replacing the existing weak `isNotEmpty()`-only assertion (left untouched, per instructions, only added to). --- .../marketdata/sdk/MarketsIntegrationTest.java | 18 ++++++++++++++++++ .../marketdata/sdk/MarketsResourceTest.java | 12 ++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/integrationTest/java/com/marketdata/sdk/MarketsIntegrationTest.java b/src/integrationTest/java/com/marketdata/sdk/MarketsIntegrationTest.java index 764d484..a441102 100644 --- a/src/integrationTest/java/com/marketdata/sdk/MarketsIntegrationTest.java +++ b/src/integrationTest/java/com/marketdata/sdk/MarketsIntegrationTest.java @@ -90,4 +90,22 @@ void statusCountbackWindowDecodes() { } } } + + @Test + void statusCountbackReturnsExactlyNDaysEndingAtTo() { + // A bare request (no window params) returns a single day — today. countback=5 paired with + // `to` must widen that to exactly 5 calendar days ending at `to`, proving the parameter + // reached the wire rather than being ignored. + LocalDate to = LocalDate.now(); + + MarketStatusResponse unfiltered = client.markets().status(MarketStatusRequest.of()); + MarketStatusResponse countback = + client.markets().status(MarketStatusRequest.builder().to(to).countback(5).build()); + + assertThat(countback.statusCode()).isIn(200, 203); + assertThat(countback.values()).as("countback=5 returns exactly 5 days ending at `to`").hasSize(5); + assertThat(countback.values().size()) + .as("countback widens the result past the unfiltered single-day default") + .isGreaterThan(unfiltered.values().size()); + } } diff --git a/src/test/java/com/marketdata/sdk/MarketsResourceTest.java b/src/test/java/com/marketdata/sdk/MarketsResourceTest.java index b0c59e6..ff23de9 100644 --- a/src/test/java/com/marketdata/sdk/MarketsResourceTest.java +++ b/src/test/java/com/marketdata/sdk/MarketsResourceTest.java @@ -335,6 +335,18 @@ void statusRequestRejectsDateWithRange() { .hasMessageContaining("mutually exclusive"); } + @Test + void statusRequestRejectsCountbackWithDate() { + assertThatThrownBy( + () -> + MarketStatusRequest.builder() + .date(LocalDate.of(2025, Month.JANUARY, 1)) + .countback(5) + .build()) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("mutually exclusive"); + } + @Test void statusRequestRejectsCountbackWithFrom() { assertThatThrownBy(