layout: непомещающееся целевое имя уводит задачу в review вместо failed
- предел длины компонента (255 байт) проверяется в BuildLinks до первой операции с ФС: ни каталога, ни ссылки при отказе не создаётся - причина пустого предпросмотра считается на показе (ReviewData.PreviewError) и печатается в панели действий и в карточке Telegram: у задачи без записанной причины взять её больше неоткуда
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package tgbot
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.vakhrushev.me/av/jellybit/internal/store"
|
||||
)
|
||||
|
||||
// Карточка ревью без плана называет причину: иначе владелец видит «Нужно
|
||||
// подтверждение» без плана и без кнопки «Применить» и не знает, что чинить.
|
||||
// Причина показа старше записанной — она про текущий план.
|
||||
func TestReviewCard_NamesPreviewProblem(t *testing.T) {
|
||||
t.Run("причина показа", func(t *testing.T) {
|
||||
b, _, _, _ := newTestBot(t, []int64{7})
|
||||
rd := reviewData(store.StateReview)
|
||||
rd.Preview = nil
|
||||
rd.PreviewError = `layout: имя не помещается: "ЫЫЫ…ЫЫЫ" — 400 байт при пределе 255`
|
||||
rd.Download.ErrorMsg = store.NullString("устаревшая причина прошлого перехода")
|
||||
|
||||
text, _ := b.renderCard(rd)
|
||||
if !strings.Contains(text, "не помещается") {
|
||||
t.Errorf("карточка не назвала причину:\n%s", text)
|
||||
}
|
||||
if strings.Contains(text, "устаревшая") {
|
||||
t.Errorf("записанная причина не должна перебивать посчитанную на показе:\n%s", text)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("записанная причина, когда посчитанной нет", func(t *testing.T) {
|
||||
b, _, _, _ := newTestBot(t, []int64{7})
|
||||
rd := reviewData(store.StateReview)
|
||||
rd.Preview = nil
|
||||
rd.Download.ErrorMsg = store.NullString("целевой файл уже существует")
|
||||
|
||||
text, _ := b.renderCard(rd)
|
||||
if !strings.Contains(text, "уже существует") {
|
||||
t.Errorf("карточка не назвала записанную причину:\n%s", text)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("причины нет — строки нет", func(t *testing.T) {
|
||||
b, _, _, _ := newTestBot(t, []int64{7})
|
||||
rd := reviewData(store.StateReview)
|
||||
rd.Preview = nil
|
||||
|
||||
text, _ := b.renderCard(rd)
|
||||
if strings.Contains(text, "Не удаётся построить план") {
|
||||
t.Errorf("без причины строки быть не должно:\n%s", text)
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user