131 lines
7.2 KiB
Go
131 lines
7.2 KiB
Go
package notify_test
|
||
|
||
import (
|
||
"encoding/json"
|
||
"os"
|
||
"testing"
|
||
|
||
"git.gm6.ru/icewind/notify"
|
||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||
"gopkg.in/yaml.v2"
|
||
)
|
||
|
||
type ConfigTelegram struct {
|
||
GroupID int64 `yaml:"group_id"`
|
||
Token string `yaml:"token"`
|
||
}
|
||
|
||
func loadText(t *testing.T) []byte {
|
||
cData, err := os.ReadFile("test_data/text.txt")
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
return cData
|
||
}
|
||
|
||
func loadConfig(t *testing.T) (conf ConfigTelegram) {
|
||
cData, err := os.ReadFile("test_data/telegram.yaml")
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
if err = yaml.Unmarshal(cData, &conf); err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
return
|
||
}
|
||
|
||
func TestMessage(t *testing.T) {
|
||
conf := loadConfig(t)
|
||
bot, err := notify.NewTelegram(conf.Token, true)
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
m, err := bot.SendTextMessage(conf.GroupID, "Привет ))")
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
t.Log(m)
|
||
}
|
||
|
||
func TestSendTable(t *testing.T) {
|
||
rows := [][]string{
|
||
{"Название", "Цена", "Кол-во", "Рост"},
|
||
{"Яблоки", "120", "5", "3.5"},
|
||
{"Бананы", "-90", "30", "12 000"},
|
||
{"Киви", "+200", "1", "-1.2"},
|
||
{"Груши", "100", "10", "0.5"},
|
||
{"Апельсины", "150", "10", "1.5"},
|
||
{"Мандарины", "100", "10", "0.5"},
|
||
{"Персики", "100", "10", "0.5"},
|
||
{"Виноград", "100", "10", "0.5"},
|
||
{"Абрикосы", "100", "10", "0.5"},
|
||
{"Слива Абрикосы Абрикосы", "100", "10", "0.5"},
|
||
}
|
||
|
||
msg := notify.BuildTelegramTable(rows)
|
||
|
||
conf := loadConfig(t)
|
||
bot, err := notify.NewTelegram(conf.Token, true)
|
||
|
||
m, err := bot.SendHTMLMessage(conf.GroupID, "<pre>"+msg+"</pre>")
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
t.Log(m)
|
||
}
|
||
|
||
func TestTelegramUpdate(t *testing.T) {
|
||
conf := loadConfig(t)
|
||
bot, err := notify.NewTelegram(conf.Token, true)
|
||
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
|
||
u := tgbotapi.NewUpdate(0)
|
||
|
||
u.AllowedUpdates = []string{
|
||
"message",
|
||
"chat_member",
|
||
"my_chat_member",
|
||
}
|
||
|
||
u.Timeout = 30
|
||
|
||
for {
|
||
updates, err := bot.GetAPI().GetUpdates(u)
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
if len(updates) > 0 {
|
||
data, _ := json.Marshal(updates)
|
||
t.Log(string(data))
|
||
}
|
||
}
|
||
}
|
||
|
||
func TestTelegramDocument(t *testing.T) {
|
||
conf := loadConfig(t)
|
||
bot, err := notify.NewTelegram(conf.Token, true)
|
||
|
||
text := loadText(t)
|
||
|
||
caption := `Голотип номинативного подвида был собран на склонах горы Натсфорд в горах Оуэн-Стэнли. Он был описан английским орнитологом Чарлзом Де Висом в 1890 году. В том же году Адольф Питер Гудвин (Adolph Peter Goodwin) описал синонимичный вид Xanthomelus macgregori, полученный на том же хребте, но на горе Масгрейв[14]. Птицы этого подвида обитают в юго-восточной части Новой Гвинеи от водораздела Экути (Ekuti Divide) южнее города Вау до горы Натсфорд и Порт-Морсби[14][11]. Возможно, ареал простирается ещё южнее[14], юго-восточные границы ареала неизвестны[11]. Международный союз охраны природы (МСОП) приводит площадь ареала (англ. Estimated extent of occurrence) этого подвида 10 800 км²[15].
|
||
Подвид C. m. sanguineus был описан австралийским орнитологом Томом Айрдейлом в 1948 году как самостоятельный вид на основе экземпляров, добытых капитаном Нептьюном Бладом (Neptune B. Blood) в 1944—1945 годах в окрестностях города Маунт-Хаген в провинции Уэстерн-Хайлендс в центральной части Папуа — Новой Гвинеи. Птицы этого подвида распространены на нагорье Кайенде, горе Гилуве, вулкане Хаген и далее на восток до гор Бисмарка и хребта Кубор[себ.] в восточной части острова. К этому же подвиду относят популяцию в центральной части острова, обитающую на высокогорьях к северу от озера Хаббема (Lake Habbema)[14]. МСОП приводит площадь ареала этого подвида 87 600 км²[16]. У самцов C. m. sanguineus длина крыла составляет 110—118 мм, у самок — 101—115 мм, длина хвоста — 86-96 мм и 80—97 мм, клюва — 26—31 мм и 23—28 мм, цевки — 38—44 мм и 38—43 мм, соответственно[14].
|
||
Синонимичным ему является подвид C. m. kuboriensis, который был описан американскими орнитологами Эрнстом Майром и Эрнестом Гиллиардом[англ.] в 1954 году на основе экземпляра самца, пойманного на хребте Кубор на высоте 2760 метров в мае 1952 года. Причиной выделения в отдельный подвид был назван более насыщенный красноватый верх и менее красный налёт снизу, а также более короткий хвост и более длинные крылья[14]. Экземпляр птицы, полученный британским орнитологом Реджиналдом Симсом (Reginald William Sims) в тех же горах в 1953 году, не отличался раскраской оперения от C. m. sanguineus[17]. Современные учёные синонимизируют C. m. kuboriensis и C. m. sanguineus в силу изменчивости и незначительности указанных признаков[14].
|
||
Основное отличие подвидов заключается в окраске самцов в верхней части тела, оттенки окраски остального оперения менее показательны. Чёткое разделение подвидов затруднено из-за промежуточного положения птиц, обитающих на хребте Кратке[англ.] в восточной части острова[14]. Не совсем ясно, к какому подвиду отнести популяцию на западе ареала (то есть на границе двух стран). Американские учёные Брюс Билер[англ.] и Тейн Пратт[англ.] в 2016 году предлагали выделить её в отдельный таксон, для которого, однако, не смогли определить географические границы[14]. `
|
||
|
||
if err != nil {
|
||
t.Fatal(err, bot)
|
||
}
|
||
_, err = bot.SendDocumentFromBytes(
|
||
conf.GroupID,
|
||
text,
|
||
"1.txt",
|
||
caption,
|
||
)
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
}
|