private void bookAsyncRequestSample() { final SocketRequest<DeepAsyncResponse<Book>> request = new BookAsyncRequestBuilder() .withSymbol("AAPL") .build(); iexTradingClient.subscribe(request, BOOK_CONSUMER); }
@Override public SocketRequest<DeepAsyncResponse<Book>> build() { return SocketRequestBuilder.<DeepAsyncResponse<Book>>builder() .withPath("/deep") .withResponse(new TypeReference<DeepAsyncResponse<Book>>() {}) .withParam(getDeepParam()) .build(); } }
@Test public void shouldSuccessfullyCreateRequest() { final String symbol = "IBM"; final SocketRequest<DeepAsyncResponse<Book>> request = new BookAsyncRequestBuilder() .withSymbol(symbol) .build(); assertThat(request.getPath()).isEqualTo("/deep"); final DeepAsyncRequest param = (DeepAsyncRequest) request.getParam(); assertThat(param.getSymbols()).containsExactly(symbol); assertThat(param.getChannels()).containsExactly(DeepChannel.BOOK); }
@Test public void bookAsyncServiceTest() { stubFor(socket) .withResponseFile("/marketdata/BookAsyncResponse.json"); final Consumer<DeepAsyncResponse<Book>> consumer = spy(Consumer.class); iexTradingClient.subscribe(new BookAsyncRequestBuilder() .withSymbol("AAPL") .build(), consumer); verify(consumer).accept(dataCaptor.capture()); final DeepAsyncResponse<Book> response = dataCaptor.getValue(); assertThat(response.getSymbol()).isEqualTo("AAPL"); assertThat(response.getMessageType()).isEqualTo(DeepMessageType.BOOK); assertThat(response.getSeq()).isEqualTo(5458L); final Book data = response.getData(); final BookEntry bid = data.getBids().get(0); assertThat(bid.getPrice()).isEqualTo(BigDecimal.valueOf(185.76)); assertThat(bid.getSize()).isEqualTo(BigDecimal.valueOf(100)); assertThat(bid.getTimestamp()).isEqualTo(1529689655974L); final BookEntry ask = data.getAsks().get(0); assertThat(ask.getPrice()).isEqualTo(BigDecimal.valueOf(190.34)); assertThat(ask.getSize()).isEqualTo(BigDecimal.valueOf(100)); assertThat(ask.getTimestamp()).isEqualTo(1529688635926L); } }