diff options
Diffstat (limited to 'hugolib/pagemeta/page_frontmatter_test.go')
-rw-r--r-- | hugolib/pagemeta/page_frontmatter_test.go | 261 |
1 files changed, 0 insertions, 261 deletions
diff --git a/hugolib/pagemeta/page_frontmatter_test.go b/hugolib/pagemeta/page_frontmatter_test.go deleted file mode 100644 index 03f4c2f84..000000000 --- a/hugolib/pagemeta/page_frontmatter_test.go +++ /dev/null @@ -1,261 +0,0 @@ -// Copyright 2018 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. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package pagemeta - -import ( - "fmt" - "strings" - "testing" - "time" - - "github.com/spf13/viper" - - "github.com/stretchr/testify/require" -) - -func TestDateAndSlugFromBaseFilename(t *testing.T) { - - t.Parallel() - - assert := require.New(t) - - tests := []struct { - name string - date string - slug string - }{ - {"page.md", "0001-01-01", ""}, - {"2012-09-12-page.md", "2012-09-12", "page"}, - {"2018-02-28-page.md", "2018-02-28", "page"}, - {"2018-02-28_page.md", "2018-02-28", "page"}, - {"2018-02-28 page.md", "2018-02-28", "page"}, - {"2018-02-28page.md", "2018-02-28", "page"}, - {"2018-02-28-.md", "2018-02-28", ""}, - {"2018-02-28-.md", "2018-02-28", ""}, - {"2018-02-28.md", "2018-02-28", ""}, - {"2018-02-28-page", "2018-02-28", "page"}, - {"2012-9-12-page.md", "0001-01-01", ""}, - {"asdfasdf.md", "0001-01-01", ""}, - } - - for i, test := range tests { - expectedDate, err := time.Parse("2006-01-02", test.date) - assert.NoError(err) - - errMsg := fmt.Sprintf("Test %d", i) - gotDate, gotSlug := dateAndSlugFromBaseFilename(test.name) - - assert.Equal(expectedDate, gotDate, errMsg) - assert.Equal(test.slug, gotSlug, errMsg) - - } -} - -func newTestFd() *FrontMatterDescriptor { - return &FrontMatterDescriptor{ - Frontmatter: make(map[string]interface{}), - Params: make(map[string]interface{}), - Dates: &PageDates{}, - PageURLs: &URLPath{}, - } -} - -func TestFrontMatterNewConfig(t *testing.T) { - assert := require.New(t) - - cfg := viper.New() - - cfg.Set("frontmatter", map[string]interface{}{ - "date": []string{"publishDate", "LastMod"}, - "Lastmod": []string{"publishDate"}, - "expiryDate": []string{"lastMod"}, - "publishDate": []string{"date"}, - }) - - fc, err := newFrontmatterConfig(cfg) - assert.NoError(err) - assert.Equal([]string{"publishdate", "pubdate", "published", "lastmod", "modified"}, fc.date) - assert.Equal([]string{"publishdate", "pubdate", "published"}, fc.lastmod) - assert.Equal([]string{"lastmod", "modified"}, fc.expiryDate) - assert.Equal([]string{"date"}, fc.publishDate) - - // Default - cfg = viper.New() - fc, err = newFrontmatterConfig(cfg) - assert.NoError(err) - assert.Equal([]string{"date", "publishdate", "pubdate", "published", "lastmod", "modified"}, fc.date) - assert.Equal([]string{":git", "lastmod", "modified", "date", "publishdate", "pubdate", "published"}, fc.lastmod) - assert.Equal([]string{"expirydate", "unpublishdate"}, fc.expiryDate) - assert.Equal([]string{"publishdate", "pubdate", "published", "date"}, fc.publishDate) - - // :default keyword - cfg.Set("frontmatter", map[string]interface{}{ - "date": []string{"d1", ":default"}, - "lastmod": []string{"d2", ":default"}, - "expiryDate": []string{"d3", ":default"}, - "publishDate": []string{"d4", ":default"}, - }) - fc, err = newFrontmatterConfig(cfg) - assert.NoError(err) - assert.Equal([]string{"d1", "date", "publishdate", "pubdate", "published", "lastmod", "modified"}, fc.date) - assert.Equal([]string{"d2", ":git", "lastmod", "modified", "date", "publishdate", "pubdate", "published"}, fc.lastmod) - assert.Equal([]string{"d3", "expirydate", "unpublishdate"}, fc.expiryDate) - assert.Equal([]string{"d4", "publishdate", "pubdate", "published", "date"}, fc.publishDate) - -} - -func TestFrontMatterDatesHandlers(t *testing.T) { - assert := require.New(t) - - for _, handlerID := range []string{":filename", ":fileModTime", ":git"} { - - cfg := viper.New() - - cfg.Set("frontmatter", map[string]interface{}{ - "date": []string{handlerID, "date"}, - }) - - handler, err := NewFrontmatterHandler(nil, cfg) - assert.NoError(err) - - d1, _ := time.Parse("2006-01-02", "2018-02-01") - d2, _ := time.Parse("2006-01-02", "2018-02-02") - - d := newTestFd() - switch strings.ToLower(handlerID) { - case ":filename": - d.BaseFilename = "2018-02-01-page.md" - case ":filemodtime": - d.ModTime = d1 - case ":git": - d.GitAuthorDate = d1 - } - d.Frontmatter["date"] = d2 - assert.NoError(handler.HandleDates(d)) - assert.Equal(d1, d.Dates.Date) - assert.Equal(d2, d.Params["date"]) - - d = newTestFd() - d.Frontmatter["date"] = d2 - assert.NoError(handler.HandleDates(d)) - assert.Equal(d2, d.Dates.Date) - assert.Equal(d2, d.Params["date"]) - - } -} - -func TestFrontMatterDatesCustomConfig(t *testing.T) { - t.Parallel() - - assert := require.New(t) - - cfg := viper.New() - cfg.Set("frontmatter", map[string]interface{}{ - "date": []string{"mydate"}, - "lastmod": []string{"publishdate"}, - "publishdate": []string{"publishdate"}, - }) - - handler, err := NewFrontmatterHandler(nil, cfg) - assert.NoError(err) - - testDate, err := time.Parse("2006-01-02", "2018-02-01") - assert.NoError(err) - - d := newTestFd() - d.Frontmatter["mydate"] = testDate - testDate = testDate.Add(24 * time.Hour) - d.Frontmatter["date"] = testDate - testDate = testDate.Add(24 * time.Hour) - d.Frontmatter["lastmod"] = testDate - testDate = testDate.Add(24 * time.Hour) - d.Frontmatter["publishdate"] = testDate - testDate = testDate.Add(24 * time.Hour) - d.Frontmatter["expirydate"] = testDate - - assert.NoError(handler.HandleDates(d)) - - assert.Equal(1, d.Dates.Date.Day()) - assert.Equal(4, d.Dates.Lastmod.Day()) - assert.Equal(4, d.Dates.PublishDate.Day()) - assert.Equal(5, d.Dates.ExpiryDate.Day()) - - assert.Equal(d.Dates.Date, d.Params["date"]) - assert.Equal(d.Dates.Date, d.Params["mydate"]) - assert.Equal(d.Dates.PublishDate, d.Params["publishdate"]) - assert.Equal(d.Dates.ExpiryDate, d.Params["expirydate"]) - - assert.False(handler.IsDateKey("date")) // This looks odd, but is configured like this. - assert.True(handler.IsDateKey("mydate")) - assert.True(handler.IsDateKey("publishdate")) - assert.True(handler.IsDateKey("pubdate")) - -} - -func TestFrontMatterDatesDefaultKeyword(t *testing.T) { - t.Parallel() - - assert := require.New(t) - - cfg := viper.New() - - cfg.Set("frontmatter", map[string]interface{}{ - "date": []string{"mydate", ":default"}, - "publishdate": []string{":default", "mypubdate"}, - }) - - handler, err := NewFrontmatterHandler(nil, cfg) - assert.NoError(err) - - testDate, _ := time.Parse("2006-01-02", "2018-02-01") - d := newTestFd() - d.Frontmatter["mydate"] = testDate - d.Frontmatter["date"] = testDate.Add(1 * 24 * time.Hour) - d.Frontmatter["mypubdate"] = testDate.Add(2 * 24 * time.Hour) - d.Frontmatter["publishdate"] = testDate.Add(3 * 24 * time.Hour) - - assert.NoError(handler.HandleDates(d)) - - assert.Equal(1, d.Dates.Date.Day()) - assert.Equal(2, d.Dates.Lastmod.Day()) - assert.Equal(4, d.Dates.PublishDate.Day()) - assert.True(d.Dates.ExpiryDate.IsZero()) - -} - -func TestExpandDefaultValues(t *testing.T) { - assert := require.New(t) - assert.Equal([]string{"a", "b", "c", "d"}, expandDefaultValues([]string{"a", ":default", "d"}, []string{"b", "c"})) - assert.Equal([]string{"a", "b", "c"}, expandDefaultValues([]string{"a", "b", "c"}, []string{"a", "b", "c"})) - assert.Equal([]string{"b", "c", "a", "b", "c", "d"}, expandDefaultValues([]string{":default", "a", ":default", "d"}, []string{"b", "c"})) - -} - -func TestFrontMatterDateFieldHandler(t *testing.T) { - t.Parallel() - - assert := require.New(t) - - handlers := new(frontmatterFieldHandlers) - - fd := newTestFd() - d, _ := time.Parse("2006-01-02", "2018-02-01") - fd.Frontmatter["date"] = d - h := handlers.newDateFieldHandler("date", func(d *FrontMatterDescriptor, t time.Time) { d.Dates.Date = t }) - - handled, err := h(fd) - assert.True(handled) - assert.NoError(err) - assert.Equal(d, fd.Dates.Date) -} |