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) } } }