Skip to content

Commit 5884519

Browse files
Merge pull request #18 from MarketDataApp/17_add_convinence_factory
feat: add `of(...)` convenience factory to StockQuotesRequest and OptionsQuotesRequest
2 parents 247829e + ca3704e commit 5884519

3 files changed

Lines changed: 28 additions & 0 deletions

File tree

src/main/java/com/marketdata/sdk/options/OptionsQuotesRequest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ private OptionsQuotesRequest(Builder b) {
3333
this.countback = b.countback;
3434
}
3535

36+
/** Shortcut for {@code builder(first, rest...).build()}. */
37+
public static OptionsQuotesRequest of(String first, String... rest) {
38+
return builder(first, rest).build();
39+
}
40+
3641
/**
3742
* Start a builder with one or more option symbols. At least one symbol is required; duplicates
3843
* are kept (each one results in its own HTTP call).

src/main/java/com/marketdata/sdk/stocks/StockQuotesRequest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ private StockQuotesRequest(Builder b) {
2828
this.week52 = b.week52;
2929
}
3030

31+
/** Shortcut for {@code builder(first, rest...).build()}. */
32+
public static StockQuotesRequest of(String first, String... rest) {
33+
return builder(first, rest).build();
34+
}
35+
3136
/** Start a builder with one or more ticker symbols. At least one is required. */
3237
public static Builder builder(String first, String... rest) {
3338
Builder b = new Builder();

src/test/java/com/marketdata/sdk/RequestValidationTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,16 @@ void stockQuotesOptInColumnSettersChain() {
3737
assertThat(r.week52()).isTrue();
3838
}
3939

40+
@Test
41+
void stockQuotesOfFactoryCarriesSymbolsAndDefaultsOptionals() {
42+
StockQuotesRequest r = StockQuotesRequest.of("AAPL", "MSFT");
43+
44+
assertThat(r.symbols()).containsExactly("AAPL", "MSFT");
45+
assertThat(r.extended()).isNull();
46+
assertThat(r.candle()).isNull();
47+
assertThat(r.week52()).isNull();
48+
}
49+
4050
@Test
4151
void stockCandlesCountbackSetterIsCarried() {
4252
StockCandlesRequest r =
@@ -114,6 +124,14 @@ void optionsQuotesFromSetterIsCarried() {
114124
assertThat(r.from()).isEqualTo(TODAY.minusDays(1));
115125
}
116126

127+
@Test
128+
void optionsQuotesOfFactoryCarriesSymbolsAndDefaultsOptionals() {
129+
OptionsQuotesRequest r = OptionsQuotesRequest.of("AAPL250620C00200000", "AAPL250620P00200000");
130+
131+
assertThat(r.optionSymbols()).containsExactly("AAPL250620C00200000", "AAPL250620P00200000");
132+
assertThat(r.from()).isNull();
133+
}
134+
117135
@Test
118136
void optionsRequestsRejectEmptyInputs() {
119137
assertThatThrownBy(() -> OptionsStrikesRequest.of(""))

0 commit comments

Comments
 (0)