This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 8a5ffc62e77ffcf3d2fa5f9bbc9d6aaa28e62e67 Author: Willian Antunes <willian.lima.antu...@gmail.com> AuthorDate: Sat May 5 06:18:47 2018 -0700 OutgoingTextMessage builder and a test considering producer situation --- .../telegram/model/OutgoingTextMessage.java | 51 ++++++++++++++++++++++ .../telegram/TelegramProducerMediaTest.java | 28 +++++++++++- .../telegram/util/TelegramTestSupport.java | 37 +++++++++++++++- 3 files changed, 112 insertions(+), 4 deletions(-) diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/OutgoingTextMessage.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/OutgoingTextMessage.java index 2040d91..0f8262e 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/OutgoingTextMessage.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/OutgoingTextMessage.java @@ -37,6 +37,15 @@ public class OutgoingTextMessage extends OutgoingMessage { private ReplyKeyboardMarkup replyKeyboardMarkup; public OutgoingTextMessage() { + + } + + public OutgoingTextMessage(String text, String parseMode, Boolean disableWebPagePreview, ReplyKeyboardMarkup replyKeyboardMarkup) { + + this.text = text; + this.parseMode = parseMode; + this.disableWebPagePreview = disableWebPagePreview; + this.replyKeyboardMarkup = replyKeyboardMarkup; } public String getText() { @@ -70,6 +79,48 @@ public class OutgoingTextMessage extends OutgoingMessage { public void setReplyKeyboardMarkup(ReplyKeyboardMarkup replyKeyboardMarkup) { this.replyKeyboardMarkup = replyKeyboardMarkup; } + + public static Builder builder() { + + return new Builder(); + } + + public static class Builder { + + private String text; + private String parseMode; + private Boolean disableWebPagePreview; + private ReplyKeyboardMarkup replyKeyboardMarkup; + + public Builder text(String text) { + + this.text = text; + return this; + } + + public Builder parseMode(String parseMode) { + + this.parseMode = parseMode; + return this; + } + + public Builder disableWebPagePreview(Boolean disableWebPagePreview) { + + this.disableWebPagePreview = disableWebPagePreview; + return this; + } + + public Builder replyKeyboardMarkup(ReplyKeyboardMarkup replyKeyboardMarkup) { + + this.replyKeyboardMarkup = replyKeyboardMarkup; + return this; + } + + public OutgoingTextMessage build() { + + return new OutgoingTextMessage(text, parseMode, disableWebPagePreview, replyKeyboardMarkup); + } + } @Override public String toString() { diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java index 5084e9d..c7e5d9b 100644 --- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java +++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/TelegramProducerMediaTest.java @@ -16,6 +16,8 @@ */ package org.apache.camel.component.telegram; +import static org.mockito.ArgumentMatchers.eq; + import org.apache.camel.Endpoint; import org.apache.camel.EndpointInject; import org.apache.camel.Exchange; @@ -32,8 +34,6 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; -import static org.mockito.ArgumentMatchers.eq; - /** * Tests a producer that sends media information. */ @@ -170,6 +170,30 @@ public class TelegramProducerMediaTest extends TelegramTestSupport { assertEquals("Hello", captor.getValue().getText()); assertNull(captor.getValue().getParseMode()); } + + @Test + public void testRouteWithTextAndCustomKeyBoard() throws Exception { + + TelegramService service = mockTelegramService(); + + Exchange ex = endpoint.createExchange(); + + OutgoingTextMessage msg = new OutgoingTextMessage.Builder().text("Hello").build(); + withInlineKeyboardContainingTwoRows(msg); + + ex.getIn().setBody(msg); + + context().createProducerTemplate().send(endpoint, ex); + + ArgumentCaptor<OutgoingTextMessage> captor = ArgumentCaptor.forClass(OutgoingTextMessage.class); + + Mockito.verify(service).sendMessage(eq("mock-token"), captor.capture()); + assertEquals("my-id", captor.getValue().getChatId()); + assertEquals("Hello", captor.getValue().getText()); + assertEquals(2, captor.getValue().getReplyKeyboardMarkup().getKeyboard().size()); + assertEquals(true, captor.getValue().getReplyKeyboardMarkup().getOneTimeKeyboard()); + assertNull(captor.getValue().getParseMode()); + } @Test public void testRouteWithTextHtml() throws Exception { diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestSupport.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestSupport.java index 23db461..b751a5f 100644 --- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestSupport.java +++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestSupport.java @@ -18,15 +18,19 @@ package org.apache.camel.component.telegram.util; import java.io.IOException; import java.io.InputStream; - -import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.Arrays; import org.apache.camel.component.telegram.TelegramService; import org.apache.camel.component.telegram.TelegramServiceProvider; +import org.apache.camel.component.telegram.model.InlineKeyboardButton; +import org.apache.camel.component.telegram.model.OutgoingTextMessage; +import org.apache.camel.component.telegram.model.ReplyKeyboardMarkup; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.After; import org.mockito.Mockito; +import com.fasterxml.jackson.databind.ObjectMapper; + /** * A support test class for Telegram tests. */ @@ -60,6 +64,35 @@ public class TelegramTestSupport extends CamelTestSupport { return mockService; } + + /** + * Construct an inline keyboard sample to be used with an OutgoingTextMessage. + * + * @param message OutgoingTextMessage previously created + * @return OutgoingTextMessage set with an inline keyboard + */ + public OutgoingTextMessage withInlineKeyboardContainingTwoRows(OutgoingTextMessage message) { + + InlineKeyboardButton buttonOptionOneI = InlineKeyboardButton.builder() + .text("Option One - I").build(); + + InlineKeyboardButton buttonOptionOneII = InlineKeyboardButton.builder() + .text("Option One - II").build(); + + InlineKeyboardButton buttonOptionTwoI = InlineKeyboardButton.builder() + .text("Option Two - I").build(); + + ReplyKeyboardMarkup replyMarkup = ReplyKeyboardMarkup.builder() + .keyboard() + .addRow(Arrays.asList(buttonOptionOneI, buttonOptionOneII)) + .addRow(Arrays.asList(buttonOptionTwoI)) + .close() + .oneTimeKeyboard(true) + .build(); + message.setReplyKeyboardMarkup(replyMarkup); + + return message; + } /** * Retrieves the currently mocked {@code TelegramService}. -- To stop receiving notification emails like this one, please contact acosent...@apache.org.