package render

import (
	"net/http/httptest"
	"strings"
	"testing"

	"leadb2b.org/internal/api"
	siteweb "leadb2b.org/web"
)

func TestKanbanTemplateRendersStagesAndCards(t *testing.T) {
	engine, err := NewEngine("https://leadb2b.org", siteweb.Templates)
	if err != nil {
		t.Fatal(err)
	}
	name := "LML"
	cols := map[string][]api.KanbanCardOut{
		"novos": {{
			ID: 5, CNPJ: "16507280000169", CompanyName: &name,
			HasPhone: true, HasEmail: true,
		}},
	}
	for _, st := range KanbanStages() {
		if _, ok := cols[st.Code]; !ok {
			cols[st.Code] = []api.KanbanCardOut{}
		}
	}
	data := struct {
		Kanban       map[string][]api.KanbanCardOut
		KanbanStages []KanbanStageDef
		Limits       *api.LimitsInfo
	}{
		Kanban:       cols,
		KanbanStages: KanbanStages(),
		Limits:       &api.LimitsInfo{ActiveLeadsCount: 5, SlotsRemaining: 0},
	}
	rec := httptest.NewRecorder()
	if err := engine.RenderBlock(rec, "app-kanban", "content", data); err != nil {
		t.Fatal(err)
	}
	html := rec.Body.String()
	if !strings.Contains(html, `data-stage="novos"`) {
		t.Fatal("missing novos column")
	}
	if !strings.Contains(html, `data-stage="arquivado"`) {
		t.Fatal("missing arquivado column")
	}
	if !strings.Contains(html, "LML") {
		t.Fatal("missing company card")
	}
	if strings.Count(html, `class="leadb2b-kanban-col"`) != 7 {
		t.Fatalf("expected 7 columns, got %d", strings.Count(html, `class="leadb2b-kanban-col"`))
	}
}
