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