content_factory_test.go (1813B)
1 package hugolib 2 3 import ( 4 "bytes" 5 "path/filepath" 6 "testing" 7 8 qt "github.com/frankban/quicktest" 9 ) 10 11 func TestContentFactory(t *testing.T) { 12 t.Parallel() 13 14 c := qt.New(t) 15 16 c.Run("Simple", func(c *qt.C) { 17 workingDir := "/my/work" 18 b := newTestSitesBuilder(c) 19 b.WithWorkingDir(workingDir).WithConfigFile("toml", ` 20 21 workingDir="/my/work" 22 23 [module] 24 [[module.mounts]] 25 source = 'mcontent/en' 26 target = 'content' 27 lang = 'en' 28 [[module.mounts]] 29 source = 'archetypes' 30 target = 'archetypes' 31 32 `) 33 34 b.WithSourceFile(filepath.Join("mcontent/en/bundle", "index.md"), "") 35 36 b.WithSourceFile(filepath.Join("archetypes", "post.md"), `--- 37 title: "{{ replace .Name "-" " " | title }}" 38 date: {{ .Date }} 39 draft: true 40 --- 41 42 Hello World. 43 `) 44 b.CreateSites() 45 cf := NewContentFactory(b.H) 46 abs, err := cf.CreateContentPlaceHolder(filepath.FromSlash("mcontent/en/blog/mypage.md")) 47 b.Assert(err, qt.IsNil) 48 b.Assert(abs, qt.Equals, filepath.FromSlash("/my/work/mcontent/en/blog/mypage.md")) 49 b.Build(BuildCfg{SkipRender: true}) 50 51 p := b.H.GetContentPage(abs) 52 b.Assert(p, qt.Not(qt.IsNil)) 53 54 var buf bytes.Buffer 55 b.Assert(cf.ApplyArchetypeFilename(&buf, p, "", "post.md"), qt.IsNil) 56 57 b.Assert(buf.String(), qt.Contains, `title: "Mypage"`) 58 }) 59 60 // Issue #9129 61 c.Run("Content in both project and theme", func(c *qt.C) { 62 b := newTestSitesBuilder(c) 63 b.WithConfigFile("toml", ` 64 theme = 'ipsum' 65 `) 66 67 themeDir := filepath.Join("themes", "ipsum") 68 b.WithSourceFile("content/posts/foo.txt", `Hello.`) 69 b.WithSourceFile(filepath.Join(themeDir, "content/posts/foo.txt"), `Hello.`) 70 b.CreateSites() 71 cf := NewContentFactory(b.H) 72 abs, err := cf.CreateContentPlaceHolder(filepath.FromSlash("posts/test.md")) 73 b.Assert(err, qt.IsNil) 74 b.Assert(abs, qt.Equals, filepath.FromSlash("content/posts/test.md")) 75 76 }) 77 78 }