integration_test.go (3335B)
1 // Copyright 2021 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_test 15 16 import ( 17 "testing" 18 19 "github.com/gohugoio/hugo/hugolib" 20 ) 21 22 func TestGroupByLocalizedDate(t *testing.T) { 23 24 files := ` 25 -- config.toml -- 26 defaultContentLanguage = 'en' 27 defaultContentLanguageInSubdir = true 28 [languages] 29 [languages.en] 30 title = 'My blog' 31 weight = 1 32 [languages.fr] 33 title = 'Mon blogue' 34 weight = 2 35 [languages.nn] 36 title = 'Bloggen min' 37 weight = 3 38 -- content/p1.md -- 39 --- 40 title: "Post 1" 41 date: "2020-01-01" 42 --- 43 -- content/p2.md -- 44 --- 45 title: "Post 2" 46 date: "2020-02-01" 47 --- 48 -- content/p1.fr.md -- 49 --- 50 title: "Post 1" 51 date: "2020-01-01" 52 --- 53 -- content/p2.fr.md -- 54 --- 55 title: "Post 2" 56 date: "2020-02-01" 57 --- 58 -- layouts/index.html -- 59 {{ range $k, $v := site.RegularPages.GroupByDate "January, 2006" }}{{ $k }}|{{ $v.Key }}|{{ $v.Pages }}{{ end }} 60 61 ` 62 63 b := hugolib.NewIntegrationTestBuilder( 64 hugolib.IntegrationTestConfig{ 65 T: t, 66 TxtarString: files, 67 NeedsOsFS: true, 68 }).Build() 69 70 b.AssertFileContent("public/en/index.html", "0|February, 2020|Pages(1)1|January, 2020|Pages(1)") 71 b.AssertFileContent("public/fr/index.html", "0|février, 2020|Pages(1)1|janvier, 2020|Pages(1)") 72 } 73 74 func TestPagesSortCollation(t *testing.T) { 75 76 files := ` 77 -- config.toml -- 78 defaultContentLanguage = 'en' 79 defaultContentLanguageInSubdir = true 80 [languages] 81 [languages.en] 82 title = 'My blog' 83 weight = 1 84 [languages.fr] 85 title = 'Mon blogue' 86 weight = 2 87 [languages.nn] 88 title = 'Bloggen min' 89 weight = 3 90 -- content/p1.md -- 91 --- 92 title: "zulu" 93 date: "2020-01-01" 94 param1: "xylophone" 95 tags: ["xylophone", "éclair", "zulu", "emma"] 96 --- 97 -- content/p2.md -- 98 --- 99 title: "émotion" 100 date: "2020-01-01" 101 param1: "violin" 102 --- 103 -- content/p3.md -- 104 --- 105 title: "alpha" 106 date: "2020-01-01" 107 param1: "éclair" 108 --- 109 -- layouts/index.html -- 110 ByTitle: {{ range site.RegularPages.ByTitle }}{{ .Title }}|{{ end }} 111 ByLinkTitle: {{ range site.RegularPages.ByLinkTitle }}{{ .Title }}|{{ end }} 112 ByParam: {{ range site.RegularPages.ByParam "param1" }}{{ .Params.param1 }}|{{ end }} 113 Tags Alphabetical: {{ range site.Taxonomies.tags.Alphabetical }}{{ .Term }}|{{ end }} 114 GroupBy: {{ range site.RegularPages.GroupBy "Title" }}{{ .Key }}|{{ end }} 115 {{ with (site.GetPage "p1").Params.tags }} 116 Sort: {{ sort . }} 117 ByWeight: {{ range site.RegularPages.ByWeight }}{{ .Title }}|{{ end }} 118 {{ end }} 119 120 ` 121 122 b := hugolib.NewIntegrationTestBuilder( 123 hugolib.IntegrationTestConfig{ 124 T: t, 125 TxtarString: files, 126 NeedsOsFS: true, 127 }).Build() 128 129 b.AssertFileContent("public/en/index.html", ` 130 ByTitle: alpha|émotion|zulu| 131 ByLinkTitle: alpha|émotion|zulu| 132 ByParam: éclair|violin|xylophone 133 Tags Alphabetical: éclair|emma|xylophone|zulu| 134 GroupBy: alpha|émotion|zulu| 135 Sort: [éclair emma xylophone zulu] 136 ByWeight: alpha|émotion|zulu| 137 `) 138 }