summaryrefslogtreecommitdiffstats
path: root/helpers/url_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'helpers/url_test.go')
-rw-r--r--helpers/url_test.go142
1 files changed, 73 insertions, 69 deletions
diff --git a/helpers/url_test.go b/helpers/url_test.go
index e248036ae..787cdd6e8 100644
--- a/helpers/url_test.go
+++ b/helpers/url_test.go
@@ -1,4 +1,4 @@
-// Copyright 2015 The Hugo Authors. All rights reserved.
+// Copyright 2023 The Hugo Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -11,21 +11,20 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package helpers
+package helpers_test
import (
+ "fmt"
"strings"
"testing"
qt "github.com/frankban/quicktest"
- "github.com/gohugoio/hugo/hugofs"
- "github.com/gohugoio/hugo/langs"
+ "github.com/gohugoio/hugo/config"
+ "github.com/gohugoio/hugo/helpers"
)
func TestURLize(t *testing.T) {
- v := newTestCfg()
- l := langs.NewDefaultLanguage(v)
- p, _ := NewPathSpec(hugofs.NewMem(v), l, nil)
+ p := newTestPathSpec()
tests := []struct {
input string
@@ -61,10 +60,6 @@ func TestAbsURL(t *testing.T) {
func doTestAbsURL(t *testing.T, defaultInSubDir, addLanguage, multilingual bool, lang string) {
c := qt.New(t)
- v := newTestCfg()
- v.Set("multilingual", multilingual)
- v.Set("defaultContentLanguage", "en")
- v.Set("defaultContentLanguageInSubdir", defaultInSubDir)
tests := []struct {
input string
@@ -103,24 +98,42 @@ func doTestAbsURL(t *testing.T, defaultInSubDir, addLanguage, multilingual bool,
}
for _, test := range tests {
- v.Set("baseURL", test.baseURL)
- v.Set("contentDir", "content")
- l := langs.NewLanguage(lang, v)
- p, _ := NewPathSpec(hugofs.NewMem(v), l, nil)
-
- output := p.AbsURL(test.input, addLanguage)
- expected := test.expected
- if multilingual && addLanguage {
- if !defaultInSubDir && lang == "en" {
- expected = strings.Replace(expected, "MULTI", "", 1)
+ c.Run(fmt.Sprintf("%v/%t-%t-%t/%s", test, defaultInSubDir, addLanguage, multilingual, lang), func(c *qt.C) {
+ v := config.New()
+ if multilingual {
+ v.Set("languages", map[string]any{
+ "fr": map[string]interface{}{
+ "weight": 20,
+ },
+ "en": map[string]interface{}{
+ "weight": 10,
+ },
+ })
+ }
+ v.Set("defaultContentLanguage", "en")
+ v.Set("defaultContentLanguageInSubdir", defaultInSubDir)
+ v.Set("baseURL", test.baseURL)
+
+ var configLang string
+ if multilingual {
+ configLang = lang
+ }
+ p := newTestPathSpecFromCfgAndLang(v, configLang)
+
+ output := p.AbsURL(test.input, addLanguage)
+ expected := test.expected
+ if multilingual && addLanguage {
+ if !defaultInSubDir && lang == "en" {
+ expected = strings.Replace(expected, "MULTI", "", 1)
+ } else {
+ expected = strings.Replace(expected, "MULTI", lang+"/", 1)
+ }
} else {
- expected = strings.Replace(expected, "MULTI", lang+"/", 1)
+ expected = strings.Replace(expected, "MULTI", "", 1)
}
- } else {
- expected = strings.Replace(expected, "MULTI", "", 1)
- }
- c.Assert(output, qt.Equals, expected)
+ c.Assert(output, qt.Equals, expected)
+ })
}
}
@@ -137,9 +150,19 @@ func TestRelURL(t *testing.T) {
}
func doTestRelURL(t *testing.T, defaultInSubDir, addLanguage, multilingual bool, lang string) {
+ t.Helper()
c := qt.New(t)
- v := newTestCfg()
- v.Set("multilingual", multilingual)
+ v := config.New()
+ if multilingual {
+ v.Set("languages", map[string]any{
+ "fr": map[string]interface{}{
+ "weight": 20,
+ },
+ "en": map[string]interface{}{
+ "weight": 10,
+ },
+ })
+ }
v.Set("defaultContentLanguage", "en")
v.Set("defaultContentLanguageInSubdir", defaultInSubDir)
@@ -182,25 +205,31 @@ func doTestRelURL(t *testing.T, defaultInSubDir, addLanguage, multilingual bool,
}
for i, test := range tests {
- v.Set("baseURL", test.baseURL)
- v.Set("canonifyURLs", test.canonify)
- l := langs.NewLanguage(lang, v)
- p, _ := NewPathSpec(hugofs.NewMem(v), l, nil)
+ c.Run(fmt.Sprintf("%v/%t%t%t/%s", test, defaultInSubDir, addLanguage, multilingual, lang), func(c *qt.C) {
- output := p.RelURL(test.input, addLanguage)
+ v.Set("baseURL", test.baseURL)
+ v.Set("canonifyURLs", test.canonify)
+ var configLang string
+ if multilingual {
+ configLang = lang
+ }
+ p := newTestPathSpecFromCfgAndLang(v, configLang)
- expected := test.expected
- if multilingual && addLanguage {
- if !defaultInSubDir && lang == "en" {
- expected = strings.Replace(expected, "MULTI", "", 1)
+ output := p.RelURL(test.input, addLanguage)
+
+ expected := test.expected
+ if multilingual && addLanguage {
+ if !defaultInSubDir && lang == "en" {
+ expected = strings.Replace(expected, "MULTI", "", 1)
+ } else {
+ expected = strings.Replace(expected, "MULTI", "/"+lang, 1)
+ }
} else {
- expected = strings.Replace(expected, "MULTI", "/"+lang, 1)
+ expected = strings.Replace(expected, "MULTI", "", 1)
}
- } else {
- expected = strings.Replace(expected, "MULTI", "", 1)
- }
- c.Assert(output, qt.Equals, expected, qt.Commentf("[%d] %s", i, test.input))
+ c.Assert(output, qt.Equals, expected, qt.Commentf("[%d] %s", i, test.input))
+ })
}
}
@@ -216,8 +245,8 @@ func TestSanitizeURL(t *testing.T) {
}
for i, test := range tests {
- o1 := SanitizeURL(test.input)
- o2 := SanitizeURLKeepTrailingSlash(test.input)
+ o1 := helpers.SanitizeURL(test.input)
+ o2 := helpers.SanitizeURLKeepTrailingSlash(test.input)
expected2 := test.expected
@@ -233,28 +262,3 @@ func TestSanitizeURL(t *testing.T) {
}
}
}
-
-func TestURLPrep(t *testing.T) {
- type test struct {
- ugly bool
- input string
- output string
- }
-
- data := []test{
- {false, "/section/name.html", "/section/name/"},
- {true, "/section/name/index.html", "/section/name.html"},
- }
-
- for i, d := range data {
- v := newTestCfg()
- v.Set("uglyURLs", d.ugly)
- l := langs.NewDefaultLanguage(v)
- p, _ := NewPathSpec(hugofs.NewMem(v), l, nil)
-
- output := p.URLPrep(d.input)
- if d.output != output {
- t.Errorf("Test #%d failed. Expected %q got %q", i, d.output, output)
- }
- }
-}