telebot/layout/layout_test.go

113 lines
2.7 KiB
Go
Raw Normal View History

2020-09-05 22:29:24 +00:00
package layout
import (
"os"
"testing"
"time"
"github.com/stretchr/testify/assert"
2022-01-19 13:31:36 +00:00
tele "gopkg.in/telebot.v3"
2020-09-05 22:29:24 +00:00
)
func TestLayout(t *testing.T) {
os.Setenv("TOKEN", "TEST")
lt, err := New("example.yml")
if err != nil {
t.Fatal(err)
}
pref := lt.Settings()
assert.Equal(t, "TEST", pref.Token)
assert.Equal(t, "html", pref.ParseMode)
assert.Equal(t, &tele.LongPoller{}, pref.Poller)
assert.ElementsMatch(t, []tele.Command{{
2021-08-04 12:11:47 +00:00
Text: "start",
2021-08-04 12:10:18 +00:00
Description: "Start the bot",
}, {
2021-08-04 12:11:47 +00:00
Text: "help",
2021-08-04 12:10:18 +00:00
Description: "How to use the bot",
}}, lt.Commands())
2020-10-08 19:37:57 +00:00
assert.Equal(t, "string", lt.String("str"))
2020-09-05 22:29:24 +00:00
assert.Equal(t, 123, lt.Int("num"))
assert.Equal(t, int64(123), lt.Int64("num"))
assert.Equal(t, float64(123), lt.Float("num"))
2022-10-02 19:11:28 +00:00
assert.Equal(t, tele.ChatID(123), lt.ChatID("num"))
assert.Equal(t, []string{"abc", "def"}, lt.Strings("strs"))
assert.Equal(t, []int{123, 456}, lt.Ints("nums"))
assert.Equal(t, []int64{123, 456}, lt.Int64s("nums"))
assert.Equal(t, []float64{123, 456}, lt.Floats("nums"))
obj := lt.Get("obj")
assert.NotNil(t, obj)
const dur = 10 * time.Minute
assert.Equal(t, dur, obj.Duration("dur"))
assert.True(t, lt.Duration("obj.dur") == obj.Duration("dur"))
arr := lt.Slice("arr")
assert.Len(t, arr, 2)
for _, v := range arr {
assert.Equal(t, dur, v.Duration("dur"))
}
2020-09-05 22:29:24 +00:00
assert.Equal(t, &tele.Btn{
Unique: "pay",
Text: "Pay",
Data: "1|100.00|USD",
}, lt.ButtonLocale("en", "pay", struct {
UserID int
Amount string
Currency string
}{
UserID: 1,
Amount: "100.00",
Currency: "USD",
}))
2020-09-05 22:29:24 +00:00
assert.Equal(t, &tele.ReplyMarkup{
ReplyKeyboard: [][]tele.ReplyButton{
{{Text: "Help"}},
{{Text: "Settings"}},
},
2020-09-26 15:48:49 +00:00
ResizeKeyboard: true,
}, lt.MarkupLocale("en", "reply_shortened"))
2020-09-26 15:48:49 +00:00
assert.Equal(t, &tele.ReplyMarkup{
ReplyKeyboard: [][]tele.ReplyButton{{{Text: "Send a contact", Contact: true}}},
ResizeKeyboard: true,
OneTimeKeyboard: true,
}, lt.MarkupLocale("en", "reply_extended"))
2020-09-05 22:29:24 +00:00
assert.Equal(t, &tele.ReplyMarkup{
2020-09-26 15:48:49 +00:00
InlineKeyboard: [][]tele.InlineButton{{{Unique: "stop", Text: "Stop", Data: "1"}}},
}, lt.MarkupLocale("en", "inline", 1))
assert.Equal(t, &tele.ArticleResult{
ResultBase: tele.ResultBase{
ID: "1853",
Type: "article",
},
Title: "Some title",
Description: "Some description",
Text: "The text of the article",
ThumbURL: "https://preview.picture",
}, lt.ResultLocale("en", "article", struct {
ID int
Title string
Description string
Content string
PreviewURL string
}{
ID: 1853,
Title: "Some title",
Description: "Some description",
Content: "The text of the article",
PreviewURL: "https://preview.picture",
}))
2020-09-05 22:29:24 +00:00
}