mirror of
https://github.com/karust/openserp.git
synced 2026-08-05 16:53:54 +08:00
93 lines
2.4 KiB
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)
|
|
}
|
|
}
|