package render

import (
	"strings"
	"testing"

	"leadb2b.org/internal/api"
)

func TestGroupCNAEsBySection(t *testing.T) {
	items := []api.CnaeItem{
		{Codigo: "6201501", Descricao: "Desenvolvimento de software"},
		{Codigo: "4711301", Descricao: "Comércio varejista"},
		{Codigo: "0111301", Descricao: "Cultivo de arroz"},
	}
	groups := GroupCNAEsBySection(items)
	if len(groups) != 3 {
		t.Fatalf("groups: got %d want 3", len(groups))
	}
	if groups[0].Letter != "A" || groups[0].Items[0].Codigo != "0111301" {
		t.Fatalf("first group: %+v", groups[0])
	}
	if groups[len(groups)-1].Letter != "J" {
		t.Fatalf("last group letter: got %q", groups[len(groups)-1].Letter)
	}
}

func TestBuscaCNAEURL(t *testing.T) {
	got := BuscaCNAEURL("6201501")
	want := "/busca?cnae_fiscal_principal=6201501&situacao_cadastral=2"
	if got != want {
		t.Fatalf("got %q want %q", got, want)
	}
}

func TestCNAECatalogHTML(t *testing.T) {
	html, err := CNAECatalogHTML(GroupCNAEsBySection([]api.CnaeItem{
		{Codigo: "6201501", Descricao: "Desenvolvimento de software"},
	}))
	if err != nil {
		t.Fatal(err)
	}
	if !strings.Contains(html, `href="/busca?cnae_fiscal_principal=6201501&amp;situacao_cadastral=2"`) {
		t.Fatalf("missing busca link: %s", html)
	}
	if !strings.Contains(html, "Desenvolvimento de software") {
		t.Fatalf("missing description")
	}
}
