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  }