package duckduckgo import ( "testing" ) func TestConfig_ToSearchURL_Default(t *testing.T) { c := Config{SafeSearch: SafeSearchOff} u := c.ToSearchURL("test query") if u.Host != "duckduckgo.com" { t.Errorf("Host = %q, want %q", u.Host, "duckduckgo.com") } if u.Query().Get("q") != "test query" { t.Errorf("q = %q, want %q", u.Query().Get("q"), "test query") } if u.Query().Get("kp") != "-2" { t.Errorf("kp = %q, want %q", u.Query().Get("kp"), "-2") } } func TestConfig_ToSearchURL_SafeSearchOn(t *testing.T) { c := Config{SafeSearch: SafeSearchOn} u := c.ToSearchURL("test") if u.Query().Get("kp") != "1" { t.Errorf("kp = %q, want %q", u.Query().Get("kp"), "1") } } func TestConfig_ToSearchURL_SafeSearchModerate(t *testing.T) { c := Config{SafeSearch: SafeSearchModerate} u := c.ToSearchURL("test") if u.Query().Get("kp") != "-1" { t.Errorf("kp = %q, want %q", u.Query().Get("kp"), "-1") } } func TestConfig_ToSearchURL_SafeSearchOff(t *testing.T) { c := Config{SafeSearch: SafeSearchOff} u := c.ToSearchURL("test") if u.Query().Get("kp") != "-2" { t.Errorf("kp = %q, want %q", u.Query().Get("kp"), "-2") } } func TestConfig_ToSearchURL_WithRegion(t *testing.T) { c := Config{SafeSearch: SafeSearchOff, Region: "us-en"} u := c.ToSearchURL("test") if u.Query().Get("kl") != "us-en" { t.Errorf("kl = %q, want %q", u.Query().Get("kl"), "us-en") } } func TestConfig_ToSearchURL_WithQuery(t *testing.T) { c := Config{SafeSearch: SafeSearchOff} u := c.ToSearchURL("golang testing") if u.Query().Get("q") != "golang testing" { t.Errorf("q = %q, want %q", u.Query().Get("q"), "golang testing") } } func TestConfig_Validate_DefaultsSafeSearch(t *testing.T) { c := Config{SafeSearch: 0} c = c.validate() if c.SafeSearch != SafeSearchOff { t.Errorf("validate() SafeSearch = %d, want %d (SafeSearchOff)", c.SafeSearch, SafeSearchOff) } } func TestConfig_ToSearchURL_NoRegion(t *testing.T) { c := Config{SafeSearch: SafeSearchOff} u := c.ToSearchURL("test") if u.Query().Get("kl") != "" { t.Errorf("kl should be empty when no region, got %q", u.Query().Get("kl")) } }