github.com/VMitov/casper@v0.4.0/build_test.go (about)

     1  package casper
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/miracl/casper/source"
     9  )
    10  
    11  func TestBuild(t *testing.T) {
    12  	testCases := []struct {
    13  		tmpl   string
    14  		source source.Getter
    15  		res    string
    16  	}{
    17  		{
    18  			`{"cfg1": "{{.key1}}", "cfg2": "{{.key2}}"}`,
    19  			source.NewSource(map[string]interface{}{
    20  				"key1": "var1",
    21  				"key2": "var2",
    22  			}),
    23  			`{"cfg1": "var1", "cfg2": "var2"}`,
    24  		},
    25  		{
    26  			`{"cfg1": "{{.key1}}", "cfg2": "{{if .key2}}{{.key2}}{{end}}", "cfg3": "{{.key3}}"}`,
    27  			source.NewSource(map[string]interface{}{
    28  				"key1": "var1",
    29  			}),
    30  			`{"cfg1": "var1", "cfg2": "", "cfg3": "<no value>"}`,
    31  		},
    32  		{
    33  			``,
    34  			source.NewSource(map[string]interface{}{
    35  				"key1": "var1",
    36  			}),
    37  			``,
    38  		},
    39  	}
    40  
    41  	for i, tc := range testCases {
    42  		t.Run(fmt.Sprintf("Case%v", i), func(t *testing.T) {
    43  			// build
    44  			config, err := BuildConfig{
    45  				Template: bytes.NewBufferString(tc.tmpl),
    46  				Source:   tc.source,
    47  			}.Build()
    48  			if err != nil {
    49  				t.Fatal(err)
    50  			}
    51  
    52  			// compare
    53  			if string(config) != tc.res {
    54  				t.Errorf("Got %v; want %v", string(config), tc.res)
    55  			}
    56  		})
    57  	}
    58  }