package render

import (
	"testing"

	"leadb2b.org/internal/api"
)

func TestEmpresaSlug(t *testing.T) {
	got := EmpresaSlug("33000167000101", "Petróleo Brasileiro S.A.", "Rio de Janeiro", "RJ")
	want := "petroleo-brasileiro-s-a-rio-de-janeiro-rj-33000167000101"
	if got != want {
		t.Fatalf("got %q want %q", got, want)
	}
}

func TestCNPJFromEmpresaSlug(t *testing.T) {
	cases := []struct {
		slug string
		want string
		ok   bool
	}{
		{"33000167000101", "33000167000101", true},
		{"petroleo-brasileiro-s-a-rio-de-janeiro-rj-33000167000101", "33000167000101", true},
		{"empresa-invalida", "", false},
	}
	for _, c := range cases {
		got, ok := CNPJFromEmpresaSlug(c.slug)
		if ok != c.ok || got != c.want {
			t.Fatalf("slug %q: got (%q,%v) want (%q,%v)", c.slug, got, ok, c.want, c.ok)
		}
	}
}

func TestEmpresaPath(t *testing.T) {
	p := EmpresaPath("12345678000199", "ACME Ltda", "São Paulo", "SP", false)
	if p != "/empresa/acme-ltda-sao-paulo-sp-12345678000199" {
		t.Fatalf("unexpected path: %s", p)
	}
}

func TestEmpresaPathFromList_NomeFantasia(t *testing.T) {
	fantasia := "Banco do Brasil"
	item := api.EstabelecimentoOut{
		CNPJ:          "00000000000191",
		RazaoSocial:   "Banco do Brasil S.A.",
		NomeFantasia:  &fantasia,
		MunicipioNome: "Brasilia",
		UF:            "DF",
	}
	p := EmpresaPathFromList(item)
	want := "/empresa/banco-do-brasil-brasilia-df-00000000000191"
	if p != want {
		t.Fatalf("got %q want %q", p, want)
	}
}
