package ucca

import "testing"

func TestConceptNorms(t *testing.T) {
	q := "Was muss ich beachten wenn ich meine Datenschutzerklärung schreibe für meine Website mit Cookie Banner?"
	got := ConceptNorms(q)
	want := map[string]bool{
		"EU-DSGVO-Art12": true, "EU-DSGVO-Art13": true, "EU-DSGVO-Art14": true,
		"DE-TDDDG-§25": true, "EU-DSGVO-Art6": true, "EU-DSGVO-Art7": true,
	}
	for _, nid := range got {
		delete(want, nid)
	}
	if len(want) > 0 {
		t.Errorf("ConceptNorms missing %v; got %v", want, got)
	}
	if len(ConceptNorms("Wie ist das Wetter heute?")) != 0 {
		t.Errorf("no concept named should yield no norms")
	}
}

func TestInjectConceptNorms(t *testing.T) {
	results := []LegalSearchResult{
		{CitationUnit: "DSK OH Telemedien", Score: 0.98},
		{CitationUnit: "Art. 25 DSGVO", Score: 0.95},
	}
	injected := []LegalSearchResult{
		{CitationUnit: "Art. 13 DSGVO", Score: 0.979},
		{CitationUnit: "Art. 25 DSGVO", Score: 0.979}, // already present -> must not double
	}
	out := InjectConceptNorms(results, injected, 10)
	if out[0].CitationUnit != "DSK OH Telemedien" {
		t.Errorf("top document hit must stay #1 (not dominated), got %s", out[0].CitationUnit)
	}
	if len(out) != 3 {
		t.Errorf("expected 3 (Art.25 not duplicated), got %d", len(out))
	}
	found := false
	for _, r := range out {
		if r.CitationUnit == "Art. 13 DSGVO" {
			found = true
		}
	}
	if !found {
		t.Errorf("Art. 13 DSGVO must be injected + visible")
	}
}
