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