Files
openserp/yandex/url_test.go

93 lines
2.4 KiB
Go

package yandex
import (
"net/url"
"strings"
"testing"
"github.com/karust/openserp/core"
)
func TestBuildURLLanguageOperator(t *testing.T) {
tests := []struct {
name string
langCode string
wantOp string // expected substring in text query, "" means no lang: operator
}{
{"empty lang adds no operator", "", ""},
{"uppercase language is normalized", "RU", "lang:ru"},
{"region is dropped from lang operator", "en-US", "lang:en"},
{"underscore form is accepted", "DE_at", "lang:de"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := BuildURL(core.Query{Text: "golang", LangCode: tt.langCode}, 0)
if err != nil {
t.Fatalf("BuildURL() error = %v", err)
}
parsed, err := url.Parse(got)
if err != nil {
t.Fatalf("BuildURL() returned invalid URL: %v", err)
}
text := parsed.Query().Get("text")
if tt.wantOp == "" {
if strings.Contains(text, "lang:") {
t.Fatalf("expected no lang: operator, got text=%q", text)
}
return
}
if !strings.Contains(text, tt.wantOp) {
t.Fatalf("expected text to contain %q, got %q", tt.wantOp, text)
}
})
}
}
func TestBuildURLRegionLR(t *testing.T) {
tests := []struct {
name string
region string
wantLR string
}{
{name: "numeric yandex region is lr", region: "213", wantLR: "213"},
{name: "whitespace is trimmed", region: " 1 ", wantLR: "1"},
{name: "country region is ignored by yandex lr", region: "RU", wantLR: ""},
{name: "empty region omits lr", region: "", wantLR: ""},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := BuildURL(core.Query{Text: "golang", Region: tt.region}, 0)
if err != nil {
t.Fatalf("BuildURL() error = %v", err)
}
parsed, err := url.Parse(got)
if err != nil {
t.Fatalf("BuildURL() returned invalid URL: %v", err)
}
if gotLR := parsed.Query().Get("lr"); gotLR != tt.wantLR {
t.Fatalf("unexpected lr value: %q want %q", gotLR, tt.wantLR)
}
})
}
}
func TestBuildImageURLRegionLR(t *testing.T) {
got, err := BuildImageURL(core.Query{Text: "golang", Region: "2"}, 0)
if err != nil {
t.Fatalf("BuildImageURL() error = %v", err)
}
parsed, err := url.Parse(got)
if err != nil {
t.Fatalf("BuildImageURL() returned invalid URL: %v", err)
}
if gotLR := parsed.Query().Get("lr"); gotLR != "2" {
t.Fatalf("unexpected lr value: %q", gotLR)
}
}