diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-01-02 14:33:26 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-03-23 20:51:22 +0300 |
commit | 597e418cb02883418f2cebb41400e8e61413f651 (patch) | |
tree | 177ad9c540b2583b6dab138c9f0490d28989c7f7 /related/inverted_index_test.go | |
parent | 44f5c1c14cb1f42cc5f01739c289e9cfc83602af (diff) |
Make Page an interface
The main motivation of this commit is to add a `page.Page` interface to replace the very file-oriented `hugolib.Page` struct.
This is all a preparation step for issue #5074, "pages from other data sources".
But this also fixes a set of annoying limitations, especially related to custom output formats, and shortcodes.
Most notable changes:
* The inner content of shortcodes using the `{{%` as the outer-most delimiter will now be sent to the content renderer, e.g. Blackfriday.
This means that any markdown will partake in the global ToC and footnote context etc.
* The Custom Output formats are now "fully virtualized". This removes many of the current limitations.
* The taxonomy list type now has a reference to the `Page` object.
This improves the taxonomy template `.Title` situation and make common template constructs much simpler.
See #5074
Fixes #5763
Fixes #5758
Fixes #5090
Fixes #5204
Fixes #4695
Fixes #5607
Fixes #5707
Fixes #5719
Fixes #3113
Fixes #5706
Fixes #5767
Fixes #5723
Fixes #5769
Fixes #5770
Fixes #5771
Fixes #5759
Fixes #5776
Fixes #5777
Fixes #5778
Diffstat (limited to 'related/inverted_index_test.go')
-rw-r--r-- | related/inverted_index_test.go | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/related/inverted_index_test.go b/related/inverted_index_test.go index 2e6b90bbf..4ef27875d 100644 --- a/related/inverted_index_test.go +++ b/related/inverted_index_test.go @@ -1,4 +1,4 @@ -// Copyright 2017-present The Hugo Authors. All rights reserved. +// Copyright 2019 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. @@ -25,6 +25,7 @@ import ( type testDoc struct { keywords map[string][]Keyword date time.Time + name string } func (d *testDoc) String() string { @@ -39,11 +40,19 @@ func (d *testDoc) String() string { return s } +func (d *testDoc) Name() string { + return d.name +} + func newTestDoc(name string, keywords ...string) *testDoc { + time.Sleep(1 * time.Millisecond) + return newTestDocWithDate(name, time.Now(), keywords...) +} + +func newTestDocWithDate(name string, date time.Time, keywords ...string) *testDoc { km := make(map[string][]Keyword) - time.Sleep(1 * time.Millisecond) - kw := &testDoc{keywords: km, date: time.Now()} + kw := &testDoc{keywords: km, date: date} kw.addKeywords(name, keywords...) return kw @@ -68,11 +77,11 @@ func createTestKeywords(name string, keywords ...string) map[string][]string { } } -func (d *testDoc) SearchKeywords(cfg IndexConfig) ([]Keyword, error) { +func (d *testDoc) RelatedKeywords(cfg IndexConfig) ([]Keyword, error) { return d.keywords[cfg.Name], nil } -func (d *testDoc) PubDate() time.Time { +func (d *testDoc) PublishDate() time.Time { return d.date } @@ -167,6 +176,29 @@ func TestSearch(t *testing.T) { assert.Equal(docs[3], m[0]) }) + t.Run("searchdoc-keywords-same-date", func(t *testing.T) { + assert := require.New(t) + idx := NewInvertedIndex(config) + + date := time.Now() + + doc := newTestDocWithDate("keywords", date, "a", "b") + doc.name = "thedoc" + + for i := 0; i < 10; i++ { + docc := *doc + docc.name = fmt.Sprintf("doc%d", i) + idx.Add(&docc) + } + + m, err := idx.SearchDoc(doc, "keywords") + assert.NoError(err) + assert.Len(m, 10) + for i := 0; i < 10; i++ { + assert.Equal(fmt.Sprintf("doc%d", i), m[i].Name()) + } + }) + } func BenchmarkRelatedNewIndex(b *testing.B) { |