package report import ( "testing" "gitea.dooplex.hu/admin/felhom-controller/internal/settings" ) // buildGeoRestrictionReport must ALWAYS return a non-nil, present-but-disabled report for // a nil input. The old inline code left Report.GeoRestriction nil (omitempty), which made // the hub hide the whole geo section for a never-configured controller — this test fails // against that old behaviour (companion). func TestBuildGeoRestrictionReport_NilIsPresentAndDisabled(t *testing.T) { gr := buildGeoRestrictionReport(nil) if gr == nil { t.Fatal("geo report is nil for nil input — the hub would omit the section") } if gr.Enabled { t.Fatalf("Enabled = true, want false for nil input") } if gr.AllowedCountries == nil { t.Fatalf("AllowedCountries is nil, want empty non-nil slice (renders as [], not null)") } } func TestBuildGeoRestrictionReport_PopulatedPassesThrough(t *testing.T) { in := &settings.GeoRestriction{Enabled: true, AllowedCountries: []string{"HU", "DE"}} gr := buildGeoRestrictionReport(in) if gr == nil || !gr.Enabled || len(gr.AllowedCountries) != 2 { t.Fatalf("passthrough failed: %+v", gr) } } // A disabled config with a nil country list must still yield an empty (non-nil) list. func TestBuildGeoRestrictionReport_DisabledNilCountries(t *testing.T) { gr := buildGeoRestrictionReport(&settings.GeoRestriction{Enabled: false}) if gr == nil || gr.Enabled || gr.AllowedCountries == nil { t.Fatalf("disabled report wrong: %+v", gr) } }