From 4b69343d39724a8bc44ff114fdd7cff6d68d464f Mon Sep 17 00:00:00 2001 From: Stefan Kalscheuer Date: Mon, 21 Nov 2022 15:28:07 +0100 Subject: [PATCH] allow getMessages with limit directly from Query instance backported from commit 7684b2e089cd99ede6d294d3f69aa38e39a82074 --- CHANGELOG.md | 2 +- .../de/stklcode/pubtrans/ura/UraClient.java | 23 +++++++++++++++++++ .../stklcode/pubtrans/ura/UraClientTest.java | 23 +++++++++++++++---- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c642c60..0f80ad7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. ## unreleased ### Fixed -* Querying trips with limit directly from `Query` instance (#19) +* Querying trips and messages with limit directly from `Query` instance (#19) ## 1.3.2 - 2022-08-30 diff --git a/src/main/java/de/stklcode/pubtrans/ura/UraClient.java b/src/main/java/de/stklcode/pubtrans/ura/UraClient.java index 39c772b..9c57cb4 100644 --- a/src/main/java/de/stklcode/pubtrans/ura/UraClient.java +++ b/src/main/java/de/stklcode/pubtrans/ura/UraClient.java @@ -346,6 +346,18 @@ public class UraClient implements Serializable { return getMessages(query, null); } + + /** + * Get list of messages with limit. + * + * @param limit Maximum number of results. + * @return List of trips. + * @since 1.3.3 + */ + public List getMessages(final Integer limit) { + return getMessages(new Query(), limit); + } + /** * Get list of messages for given stopIDs with result limit. * @@ -611,5 +623,16 @@ public class UraClient implements Serializable { public List getMessages() { return UraClient.this.getMessages(this); } + + /** + * Get trips for set filters with limit. + * + * @param limit Maximum number of results. + * @return List of matching messages. + * @since 1.3.3 + */ + public List getMessages(final Integer limit) { + return UraClient.this.getMessages(this, limit); + } } } diff --git a/src/test/java/de/stklcode/pubtrans/ura/UraClientTest.java b/src/test/java/de/stklcode/pubtrans/ura/UraClientTest.java index 4ff940b..7b04155 100644 --- a/src/test/java/de/stklcode/pubtrans/ura/UraClientTest.java +++ b/src/test/java/de/stklcode/pubtrans/ura/UraClientTest.java @@ -337,12 +337,13 @@ class UraClientTest { @Test void getMessages() { + UraClient uraClient = new UraClient(httpMock.baseUrl()); + // Mock the HTTP call. mockHttpToFile(1, "instant_V1_messages.txt"); // Get messages without filter and verify some values. - List messages = new UraClient(httpMock.baseUrl()) - .getMessages(); + List messages = uraClient.getMessages(); assertThat(messages, hasSize(2)); assertThat(messages.get(0).getStop().getId(), is("100707")); assertThat(messages.get(0).getUuid(), is("016e1231d4e30014_100707")); @@ -352,23 +353,35 @@ class UraClientTest { assertThat(messages.get(1).getPriority(), is(0)); assertThat(messages.get(0).getText(), is("Sehr geehrte Fahrgäste, wegen Strassenbauarbeiten kann diese Haltestelle nicht von den Bussen der Linien 17, 44 und N2 angefahren werden.")); assertThat(messages.get(1).getText(), is("Sehr geehrte Fahrgäste, diese Haltestelle wird vorübergehend von den Linien 47, 147 und N3 nicht angefahren.")); + + // With limit. + messages = uraClient.getMessages(1); + assertThat(messages, hasSize(1)); + messages = uraClient.getMessages(3); + assertThat(messages, hasSize(2)); } @Test void getMessagesForStop() { + UraClient uraClient = new UraClient(httpMock.baseUrl(), "/interfaces/ura/instant_V2", "/interfaces/ura/stream"); + // Mock the HTTP call. mockHttpToFile(2, "instant_V2_messages_stop.txt"); // Get trips for stop ID 100707 (Berensberger Str.) and verify some values. - List messages = new UraClient(httpMock.baseUrl(), "/interfaces/ura/instant_V2", "/interfaces/ura/stream") - .forStops("100707") - .getMessages(); + List messages = uraClient.forStops("100707").getMessages(); assertThat(messages, hasSize(1)); assertThat(messages.stream().filter(t -> !t.getStop().getId().equals("100707")).findAny(), is(Optional.empty())); assertThat(messages.get(0).getUuid(), is("016e1231d4e30014_100707")); assertThat(messages.get(0).getType(), is(0)); assertThat(messages.get(0).getPriority(), is(3)); assertThat(messages.get(0).getText(), is("Sehr geehrte Fahrgäste, wegen Strassenbauarbeiten kann diese Haltestelle nicht von den Bussen der Linien 17, 44 und N2 angefahren werden.")); + + // With limit. + messages = uraClient.forStops("100707").getMessages(0); + assertThat(messages, hasSize(0)); + messages = uraClient.forStops("100707").getMessages(2); + assertThat(messages, hasSize(1)); }