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.

Reply via email to