web-ui: добавлена страница группового удаления загрузок
- выбор → поимённое подтверждение → отчёт: пачка до 20 загрузок, гарды входа на обеих границах, потолок времени и остановка после трёх подряд отказов внешнего сервиса - допуск полного удаления сведён в единую точку store.State.CanDelete() — worker, страница загрузки и Telegram больше не держат своих перечней
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
package tgbot
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.vakhrushev.me/av/jellybit/internal/store"
|
||||
)
|
||||
|
||||
// Кнопка «Удалить» приходит ровно в тех состояниях, где домен допускает полное
|
||||
// удаление. Транспорт своего перечня состояний не держит: разъехавшись с
|
||||
// доменом, он показал бы кнопку, ведущую в конфликт, — или спрятал бы
|
||||
// доступное действие.
|
||||
func TestRenderCard_DeleteButtonFollowsCanDelete(t *testing.T) {
|
||||
b, _, _, _ := newTestBot(t, []int64{7})
|
||||
|
||||
all := []store.State{
|
||||
store.StateCatched, store.StateDownloading, store.StateCompleted,
|
||||
store.StateRecognizing, store.StateReview, store.StateLinking,
|
||||
store.StateDone, store.StateDeferred, store.StateStuck,
|
||||
store.StateFailed, store.StateCancelled, store.StateReverted,
|
||||
store.StateTargetMissing, store.StateOrphaned, store.StateDeleted,
|
||||
}
|
||||
|
||||
for _, st := range all {
|
||||
rd := reviewData(st)
|
||||
_, kb := b.renderCard(rd)
|
||||
|
||||
found := false
|
||||
if kb != nil {
|
||||
for _, row := range kb.InlineKeyboard {
|
||||
for _, btn := range row {
|
||||
if btn.CallbackData != nil && strings.HasPrefix(*btn.CallbackData, "delete:") {
|
||||
found = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if want := st.CanDelete(); found != want {
|
||||
t.Errorf("%s: кнопка удаления=%v, CanDelete=%v", st, found, want)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user