|
4 | 4 | "context" |
5 | 5 | "fmt" |
6 | 6 | "maps" |
| 7 | + "strings" |
7 | 8 | "testing" |
8 | 9 | "time" |
9 | 10 |
|
@@ -241,3 +242,30 @@ func TestFactoryWithTemplate(t *testing.T) { |
241 | 242 | require.ErrorIs(t, err, ErrInvalidKind) |
242 | 243 | }) |
243 | 244 | } |
| 245 | + |
| 246 | +func TestCachedTemplateFactory(t *testing.T) { |
| 247 | + def := []TemplateDefinition{ |
| 248 | + { |
| 249 | + Name: "test", |
| 250 | + Kind: GrafanaKind, |
| 251 | + Template: fmt.Sprintf(`{{ define "factory_test" }}TEST %s KIND{{ end }}`, GrafanaKind), |
| 252 | + }, |
| 253 | + } |
| 254 | + f, err := NewFactory(def, log.NewNopLogger(), "http://localhost") |
| 255 | + require.NoError(t, err) |
| 256 | + cached := NewCachedFactory(f) |
| 257 | + |
| 258 | + for i := 0; i < 3; i++ { // check many times to ensure that clone it always return clean clone |
| 259 | + tmpl, err := cached.GetTemplate(GrafanaKind) |
| 260 | + require.NoError(t, err) |
| 261 | + |
| 262 | + expanded, err := tmpl.ExecuteTextString(`{{ template "factory_test" . }}`, nil) |
| 263 | + require.NoError(t, err) |
| 264 | + require.Equal(t, `TEST Grafana KIND`, expanded) |
| 265 | + // redefine template |
| 266 | + require.NoError(t, tmpl.Parse(strings.NewReader(`{{ define "factory_test" }}TEST{{ end }}`))) |
| 267 | + expanded, err = tmpl.ExecuteTextString(`{{ template "factory_test" . }}`, nil) |
| 268 | + require.NoError(t, err) |
| 269 | + require.Equal(t, `TEST`, expanded) |
| 270 | + } |
| 271 | +} |
0 commit comments