mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
6b619d2cd6
Added the new url module test file. This replaces the original helpers_test.go file. The TestUrlPrep test currently fails. The only minor change to url.go is to add some trace printf's to UrlPrep.
99 lines
3.2 KiB
Go
99 lines
3.2 KiB
Go
package helpers
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestUrlize(t *testing.T) {
|
|
tests := []struct {
|
|
input string
|
|
expected string
|
|
}{
|
|
{" foo bar ", "foo-bar"},
|
|
{"foo.bar/foo_bar-foo", "foo.bar/foo_bar-foo"},
|
|
{"foo,bar:foo%bar", "foobarfoobar"},
|
|
{"foo/bar.html", "foo/bar.html"},
|
|
{"трям/трям", "%D1%82%D1%80%D1%8F%D0%BC/%D1%82%D1%80%D1%8F%D0%BC"},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
output := Urlize(test.input)
|
|
if output != test.expected {
|
|
t.Errorf("Expected %#v, got %#v\n", test.expected, output)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestMakePermalink(t *testing.T) {
|
|
type test struct {
|
|
host, link, output string
|
|
}
|
|
|
|
data := []test{
|
|
{"http://abc.com/foo", "post/bar", "http://abc.com/foo/post/bar"},
|
|
{"http://abc.com/foo/", "post/bar", "http://abc.com/foo/post/bar"},
|
|
{"http://abc.com", "post/bar", "http://abc.com/post/bar"},
|
|
{"http://abc.com", "bar", "http://abc.com/bar"},
|
|
{"http://abc.com/foo/bar", "post/bar", "http://abc.com/foo/bar/post/bar"},
|
|
{"http://abc.com/foo/bar", "post/bar/", "http://abc.com/foo/bar/post/bar/"},
|
|
}
|
|
|
|
for i, d := range data {
|
|
output := MakePermalink(d.host, d.link).String()
|
|
if d.output != output {
|
|
t.Errorf("Test #%d failed. Expected %q got %q", i, d.output, output)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestUrlPrep(t *testing.T) {
|
|
type test struct {
|
|
ugly bool
|
|
input string
|
|
output string
|
|
}
|
|
|
|
data := []test{
|
|
{false, "/section/name.html", "/section/name/index.html"},
|
|
{true, "/section/name/index.html", "/section/name.html"},
|
|
}
|
|
for i, d := range data {
|
|
output := UrlPrep(d.ugly, d.input)
|
|
if d.output != output {
|
|
t.Errorf("Test #%d failed. Expected %q got %q", i, d.output, output)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
func TestPretty(t *testing.T) {
|
|
assert.Equal(t, PrettifyPath("/section/name.html"), "/section/name/index.html")
|
|
assert.Equal(t, PrettifyPath("/section/sub/name.html"), "/section/sub/name/index.html")
|
|
assert.Equal(t, PrettifyPath("/section/name/"), "/section/name/index.html")
|
|
assert.Equal(t, PrettifyPath("/section/name/index.html"), "/section/name/index.html")
|
|
assert.Equal(t, PrettifyPath("/index.html"), "/index.html")
|
|
assert.Equal(t, PrettifyPath("/name.xml"), "/name/index.xml")
|
|
assert.Equal(t, PrettifyPath("/"), "/")
|
|
assert.Equal(t, PrettifyPath(""), "/")
|
|
assert.Equal(t, PrettifyUrl("/section/name.html"), "/section/name")
|
|
assert.Equal(t, PrettifyUrl("/section/sub/name.html"), "/section/sub/name")
|
|
assert.Equal(t, PrettifyUrl("/section/name/"), "/section/name")
|
|
assert.Equal(t, PrettifyUrl("/section/name/index.html"), "/section/name")
|
|
assert.Equal(t, PrettifyUrl("/index.html"), "/")
|
|
assert.Equal(t, PrettifyUrl("/name.xml"), "/name/index.xml")
|
|
assert.Equal(t, PrettifyUrl("/"), "/")
|
|
assert.Equal(t, PrettifyUrl(""), "/")
|
|
}
|
|
|
|
func TestUgly(t *testing.T) {
|
|
assert.Equal(t, Uglify("/section/name.html"), "/section/name.html")
|
|
assert.Equal(t, Uglify("/section/sub/name.html"), "/section/sub/name.html")
|
|
assert.Equal(t, Uglify("/section/name/"), "/section/name.html")
|
|
assert.Equal(t, Uglify("/section/name/index.html"), "/section/name.html")
|
|
assert.Equal(t, Uglify("/index.html"), "/index.html")
|
|
assert.Equal(t, Uglify("/name.xml"), "/name.xml")
|
|
assert.Equal(t, Uglify("/"), "/")
|
|
assert.Equal(t, Uglify(""), "/")
|
|
}
|