func TestSendMessageSendsPlainText(t *testing.T) {
server := newFakeBot(t)
- err := newBotAPI(server.URL, testBotToken).SendMessage(t.Context(), testOwner, "*not bold*")
+ err := newBotAPI(server.URL, testBotToken).SendMessage(t.Context(), testOwner, "*not bold*", nil)
require.NoError(t, err)
require.Equal(t, map[string]any{
}, server.Calls()[0].params)
}
+func TestSendMessageSendsTheEntities(t *testing.T) {
+ server := newFakeBot(t)
+ err := newBotAPI(server.URL, testBotToken).SendMessage(t.Context(), testOwner, "a link", []botEntity{
+ {
+ Type: "text_link",
+ Offset: 2,
+ Length: 4,
+ URL: "https://example.com",
+ },
+ })
+ require.NoError(t, err)
+
+ require.Equal(t, []any{
+ map[string]any{
+ "type": "text_link",
+ "offset": float64(2),
+ "length": float64(4),
+ "url": "https://example.com",
+ },
+ }, server.Calls()[0].params["entities"])
+}
+
func TestSendMessageTimesOutOnAStalledConnection(t *testing.T) {
server := newFakeBot(t)
server.stall = func(call fakeBotCall) bool {
api := newBotAPI(server.URL, testBotToken)
api.sendTimeout = 50 * time.Millisecond
start := time.Now()
- err := api.SendMessage(t.Context(), testOwner, "hi")
+ err := api.SendMessage(t.Context(), testOwner, "hi", nil)
require.ErrorIs(t, err, errBotNetwork)
require.Less(t, time.Since(start), 5*time.Second)
require.NotContains(t, err.Error(), testBotToken)
ctx, cancel := context.WithCancel(t.Context())
time.AfterFunc(50*time.Millisecond, cancel)
start = time.Now()
- err = api.SendMessage(ctx, testOwner, "hi")
+ err = api.SendMessage(ctx, testOwner, "hi", nil)
require.Error(t, err)
require.Less(t, time.Since(start), 5*time.Second)
}
}))
t.Cleanup(server.Close)
- err := newBotAPI(server.URL, testBotToken).SendMessage(t.Context(), testOwner, "hi")
+ err := newBotAPI(server.URL, testBotToken).SendMessage(t.Context(), testOwner, "hi", nil)
require.ErrorContains(t, err, tc.errorText)
require.NotContains(t, err.Error(), testBotToken)
require.NotContains(t, err.Error(), server.URL)