This repository has been archived on 2023-08-30. You can view files and clone it, but cannot push or open issues or pull requests.
l9_stud_bot/modules/tg/tg_test.go

147 lines
3.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
ssau_parser.HeadURL = "http://127.0.0.1:5000/prod"
// Бот общается с ботом
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)
}
// Галя, отмена!
update = tgbotapi.Update{
CallbackQuery: &tgbotapi.CallbackQuery{
From: &user,
Message: &messages[4],
Data: "cancel",
},
}
_, err = bot.HandleUpdate(update)
if err != nil {
log.Fatal(err)
}
}