134 lines
2.7 KiB
Go
134 lines
2.7 KiB
Go
package tg
|
||
|
||
import (
|
||
"log"
|
||
"os"
|
||
"strconv"
|
||
"testing"
|
||
|
||
"git.l9labs.ru/anufriev.g.a/l9_stud_bot/modules/database"
|
||
"git.l9labs.ru/anufriev.g.a/l9_stud_bot/modules/ssau_parser"
|
||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||
)
|
||
|
||
var TestDB = database.DB{
|
||
User: "test",
|
||
Pass: "TESTpass1!",
|
||
Schema: "testdb",
|
||
}
|
||
|
||
var TestUser = tgbotapi.User{
|
||
ID: 12345,
|
||
FirstName: "Grzegorz",
|
||
LastName: "Brzbrz",
|
||
}
|
||
|
||
func TestCheckEnv(t *testing.T) {
|
||
if err := CheckEnv(); err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
|
||
// Добавляем несуществующий ключ
|
||
env_keys = append(env_keys, "LOST_KEY")
|
||
if err := CheckEnv(); err != nil {
|
||
log.Println(err)
|
||
env_keys = env_keys[:len(env_keys)-1]
|
||
}
|
||
}
|
||
|
||
func initTestBot() *Bot {
|
||
if err := CheckEnv(); err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
bot, err := InitBot(TestDB, os.Getenv("TELEGRAM_APITOKEN"))
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
_, err = bot.DB.Where("l9id >= 0").Delete(&database.TgUser{})
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
_, err = bot.DB.Where("teacherid >= 0").Delete(&database.Teacher{})
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
_, err = bot.DB.Where("groupid >= 0").Delete(&database.Group{})
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
return bot
|
||
}
|
||
func TestInitBot(t *testing.T) {
|
||
initTestBot()
|
||
|
||
// Тестируем неправильный токен
|
||
_, err := InitBot(TestDB, os.Getenv("TELEGRAM_APITOKEN")+"oops")
|
||
if err != nil {
|
||
log.Println(err)
|
||
}
|
||
}
|
||
|
||
func TestInitUser(t *testing.T) {
|
||
bot := initTestBot()
|
||
|
||
// Я новенький
|
||
_, err := InitUser(bot.DB, &TestUser)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
// Я уже Смешарик
|
||
_, err = InitUser(bot.DB, &TestUser)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
}
|
||
|
||
var dialog = []string{
|
||
"/start",
|
||
"2305",
|
||
"Батурин",
|
||
"230",
|
||
"Балякин",
|
||
"aaa",
|
||
"aaa",
|
||
}
|
||
|
||
func TestHandleUpdate(t *testing.T) {
|
||
bot := initTestBot()
|
||
|
||
user := TestUser
|
||
user.ID, _ = strconv.ParseInt(os.Getenv("TELEGRAM_TEST_USER"), 0, 64)
|
||
update := tgbotapi.Update{
|
||
Message: &tgbotapi.Message{
|
||
From: &user,
|
||
},
|
||
}
|
||
var messages []tgbotapi.Message
|
||
|
||
// Бот общается с ботом
|
||
for i, query := range dialog {
|
||
if i == len(dialog)-1 {
|
||
ssau_parser.HeadURL = "https://sasau.ru"
|
||
}
|
||
update.Message.Text = query
|
||
msg, err := bot.HandleUpdate(update)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
messages = append(messages, msg)
|
||
}
|
||
|
||
// Бот нажимает на кнопки за пользователя
|
||
update = tgbotapi.Update{
|
||
CallbackQuery: &tgbotapi.CallbackQuery{
|
||
From: &user,
|
||
Message: &messages[3],
|
||
Data: *messages[3].ReplyMarkup.InlineKeyboard[0][0].CallbackData,
|
||
},
|
||
}
|
||
_, err := bot.HandleUpdate(update)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
}
|