tpl/collections: Fix slice type handling in sort

The `sort` template func was producing a `[]page.Page` which did not work in `.Paginate`.

Fixes #6023
This commit is contained in:
Bjørn Erik Pedersen
2019-06-09 12:50:53 +02:00
parent 3e6cb2cb77
commit e8a716b23a
6 changed files with 72 additions and 23 deletions

View File

@@ -66,6 +66,12 @@ func ToPages(seq interface{}) (Pages, error) {
return v.Pages(), nil
case PageGroup:
return v.Pages, nil
case []Page:
pages := make(Pages, len(v))
for i, vv := range v {
pages[i] = vv
}
return pages, nil
case []interface{}:
pages := make(Pages, len(v))
success := true

View File

@@ -53,3 +53,24 @@ func TestProbablyEq(t *testing.T) {
})
}
func TestToPages(t *testing.T) {
assert := require.New(t)
p1, p2 := &testPage{title: "p1"}, &testPage{title: "p2"}
pages12 := Pages{p1, p2}
mustToPages := func(in interface{}) Pages {
p, err := ToPages(in)
assert.NoError(err)
return p
}
assert.Equal(Pages{}, mustToPages(nil))
assert.Equal(pages12, mustToPages(pages12))
assert.Equal(pages12, mustToPages([]Page{p1, p2}))
assert.Equal(pages12, mustToPages([]interface{}{p1, p2}))
_, err := ToPages("not a page")
assert.Error(err)
}