package domain import ( "net/url" "path" "path/filepath" "testing" "time" ) type Site struct { DefaultLanguage Language Language Language Languages []Language BaseURL *url.URL Params map[string]any TimeZone *time.Location File Path Title string Resources Resources } func (s Site) LanguagePrefix() string { if s.Language != LanguageUnd { return path.Join("/", s.Language.lang, "/") } return "" } func (s Site) IsMultiLingual() bool { return 1 < len(s.Languages) } func TestSite(tb testing.TB) *Site { tb.Helper() ru := NewLanguage("ru") en := NewLanguage("en") return &Site{ DefaultLanguage: en, Language: ru, Languages: []Language{en, ru}, BaseURL: &url.URL{Scheme: "http", Host: "127.0.0.1:3000", Path: "/"}, TimeZone: time.UTC, File: NewPath(filepath.Join("content", "index.en.md")), Title: "Testing", Resources: make([]*Resource, 0), Params: map[string]any{ "server": map[string]any{ "headers": []any{map[string]any{ "path": "/**", "values": map[string]any{ "Link": `; rel="indieauth-metadata", ` + `; rel="micropub"`, "X-Koroko": "Ya-ha-ha!", }, }, map[string]any{ "path": "/foo/bar", "values": map[string]any{ "X-Testing": `sample-text`, }, }}, "redirects": []any{map[string]any{ "from": "/foo/bar", "to": "/bar/foo", "status": 302, }, map[string]any{ "from": "/foo", "to": "https://example.com/", "status": 301, "force": true, }}, }, }, } }