pages_related_test.go - hugo - [fork] hugo port for 9front
HTML git clone https://git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
pages_related_test.go (2615B)
---
1 // Copyright 2019 The Hugo Authors. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 // http://www.apache.org/licenses/LICENSE-2.0
7 //
8 // Unless required by applicable law or agreed to in writing, software
9 // distributed under the License is distributed on an "AS IS" BASIS,
10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 // See the License for the specific language governing permissions and
12 // limitations under the License.
13
14 package page
15
16 import (
17 "context"
18 "testing"
19 "time"
20
21 "github.com/gohugoio/hugo/common/types"
22
23 qt "github.com/frankban/quicktest"
24 )
25
26 func TestRelated(t *testing.T) {
27 c := qt.New(t)
28
29 t.Parallel()
30
31 pages := Pages{
32 &testPage{
33 title: "Page 1",
34 pubDate: mustParseDate("2017-01-03"),
35 params: map[string]any{
36 "keywords": []string{"hugo", "says"},
37 },
38 },
39 &testPage{
40 title: "Page 2",
41 pubDate: mustParseDate("2017-01-02"),
42 params: map[string]any{
43 "keywords": []string{"hugo", "rocks"},
44 },
45 },
46 &testPage{
47 title: "Page 3",
48 pubDate: mustParseDate("2017-01-01"),
49 params: map[string]any{
50 "keywords": []string{"bep", "says"},
51 },
52 },
53 }
54
55 ctx := context.Background()
56 opts := map[string]any{
57 "namedSlices": types.NewKeyValuesStrings("keywords", "hugo", "rocks"),
58 }
59 result, err := pages.Related(ctx, opts)
60
61 c.Assert(err, qt.IsNil)
62 c.Assert(len(result), qt.Equals, 2)
63 c.Assert(result[0].Title(), qt.Equals, "Page 2")
64 c.Assert(result[1].Title(), qt.Equals, "Page 1")
65
66 result, err = pages.Related(ctx, pages[0])
67 c.Assert(err, qt.IsNil)
68 c.Assert(len(result), qt.Equals, 2)
69 c.Assert(result[0].Title(), qt.Equals, "Page 2")
70 c.Assert(result[1].Title(), qt.Equals, "Page 3")
71
72 opts = map[string]any{
73 "document": pages[0],
74 "indices": []string{"keywords"},
75 }
76 result, err = pages.Related(ctx, opts)
77 c.Assert(err, qt.IsNil)
78 c.Assert(len(result), qt.Equals, 2)
79 c.Assert(result[0].Title(), qt.Equals, "Page 2")
80 c.Assert(result[1].Title(), qt.Equals, "Page 3")
81
82 opts = map[string]any{
83 "namedSlices": []types.KeyValues{
84 {
85 Key: "keywords",
86 Values: []any{"bep", "rocks"},
87 },
88 },
89 }
90 result, err = pages.Related(context.Background(), opts)
91 c.Assert(err, qt.IsNil)
92 c.Assert(len(result), qt.Equals, 2)
93 c.Assert(result[0].Title(), qt.Equals, "Page 2")
94 c.Assert(result[1].Title(), qt.Equals, "Page 3")
95 }
96
97 func mustParseDate(s string) time.Time {
98 d, err := time.Parse("2006-01-02", s)
99 if err != nil {
100 panic(err)
101 }
102 return d
103 }