github.com/bilus/oya@v0.0.3-0.20190301162104-da4acbd394c6/pkg/template/template_test.go (about) 1 package template_test 2 3 import ( 4 "bytes" 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 "testing" 9 10 "github.com/bilus/oya/pkg/template" 11 tu "github.com/bilus/oya/testutil" 12 ) 13 14 func TestLoad(t *testing.T) { 15 _, err := template.Load("./fixtures/good.txt.kasia") 16 tu.AssertNoErr(t, err, "Expected template to load") 17 } 18 19 func TestParse(t *testing.T) { 20 _, err := template.Parse("$foo") 21 tu.AssertNoErr(t, err, "Expected template to parse") 22 } 23 24 func TestTemplate_Render_Loaded(t *testing.T) { 25 tpl, err := template.Load("./fixtures/good.txt.kasia") 26 tu.AssertNoErr(t, err, "Expected template to load") 27 output := new(bytes.Buffer) 28 err = tpl.Render(output, map[string]string{"foo": "bar"}) 29 tu.AssertNoErr(t, err, "Expected template to render") 30 tu.AssertEqual(t, "bar\n", output.String()) 31 } 32 33 func TestTemplate_Render_Parsed(t *testing.T) { 34 tpl, err := template.Parse("$foo") 35 tu.AssertNoErr(t, err, "Expected template to parse") 36 output := new(bytes.Buffer) 37 err = tpl.Render(output, map[string]string{"foo": "bar"}) 38 tu.AssertNoErr(t, err, "Expected template to render") 39 tu.AssertEqual(t, "bar", output.String()) 40 } 41 42 func TestTemplate_Render_MissingVariables(t *testing.T) { 43 tpl, err := template.Parse("$noSuchVar") 44 tu.AssertNoErr(t, err, "Expected template to parse") 45 err = tpl.Render(ioutil.Discard, map[string]string{"foo": "bar"}) 46 tu.AssertErr(t, err, "Expected template not to render") 47 } 48 49 func TestRenderAll_Directory(t *testing.T) { 50 outputDir, err := ioutil.TempDir("", "oya") 51 tu.AssertNoErr(t, err, "Error creating temporary output dir") 52 defer os.RemoveAll(outputDir) 53 54 err = template.RenderAll("./fixtures/", nil, outputDir, template.Scope{"foo": "bar"}) 55 tu.AssertNoErr(t, err, "Expected templates to render") 56 57 tu.AssertFileContains(t, filepath.Join(outputDir, "good.txt.kasia"), "bar\n") 58 tu.AssertFileContains(t, filepath.Join(outputDir, "subdir/nested.txt.kasia"), "bar\n") 59 } 60 61 func TestRenderAll_SingleFile(t *testing.T) { 62 outputDir, err := ioutil.TempDir("", "oya") 63 tu.AssertNoErr(t, err, "Error creating temporary output dir") 64 defer os.RemoveAll(outputDir) 65 66 err = template.RenderAll("./fixtures/good.txt.kasia", nil, outputDir, template.Scope{"foo": "bar"}) 67 tu.AssertNoErr(t, err, "Expected templates to render") 68 69 tu.AssertFileContains(t, filepath.Join(outputDir, "good.txt.kasia"), "bar\n") 70 } 71 72 func TestRenderAll_ExcludedPaths(t *testing.T) { 73 outputDir, err := ioutil.TempDir("", "oya") 74 tu.AssertNoErr(t, err, "Error creating temporary output dir") 75 defer os.RemoveAll(outputDir) 76 77 excludedPaths := []string{"good.txt.kasia"} 78 err = template.RenderAll("./fixtures/", excludedPaths, outputDir, template.Scope{"foo": "bar"}) 79 tu.AssertNoErr(t, err, "Expected templates to render") 80 81 tu.AssertPathNotExists(t, filepath.Join(outputDir, "good.txt.kasia")) 82 tu.AssertFileContains(t, filepath.Join(outputDir, "subdir/nested.txt.kasia"), "bar\n") 83 } 84 85 func TestRenderAll_ExcludedPatterns(t *testing.T) { 86 outputDir, err := ioutil.TempDir("", "oya") 87 tu.AssertNoErr(t, err, "Error creating temporary output dir") 88 defer os.RemoveAll(outputDir) 89 90 excludedPaths := []string{"**.txt.kasia"} 91 err = template.RenderAll("./fixtures/", excludedPaths, outputDir, template.Scope{"foo": "bar"}) 92 tu.AssertNoErr(t, err, "Expected templates to render") 93 94 tu.AssertPathNotExists(t, filepath.Join(outputDir, "good.txt.kasia")) 95 tu.AssertPathNotExists(t, filepath.Join(outputDir, "subdir/nested.txt.kasia")) 96 }