package hugolib import ( "strings" "testing" ) func pageFromString(in, filename string) (*Page, error) { return NewPageFrom(strings.NewReader(in), filename) } func CheckShortCodeMatch(t *testing.T, input, expected string, template Template) { p, _ := pageFromString(SIMPLE_PAGE, "simple.md") output := ShortcodesHandle(input, p, template) if output != expected { t.Fatalf("Shortcode render didn't match. Expected: %q, Got: %q", expected, output) } } func TestNonSC(t *testing.T) { tem := NewTemplate() CheckShortCodeMatch(t, "{{% movie 47238zzb %}}", "{{% movie 47238zzb %}}", tem) } func TestPositionalParamSC(t *testing.T) { tem := NewTemplate() tem.AddInternalShortcode("video.html", `Playing Video {{ .Get 0 }}`) CheckShortCodeMatch(t, "{{% video 47238zzb %}}", "Playing Video 47238zzb", tem) CheckShortCodeMatch(t, "{{% video 47238zzb 132 %}}", "Playing Video 47238zzb", tem) CheckShortCodeMatch(t, "{{%video 47238zzb%}}", "Playing Video 47238zzb", tem) CheckShortCodeMatch(t, "{{%video 47238zzb %}}", "Playing Video 47238zzb", tem) CheckShortCodeMatch(t, "{{% video 47238zzb %}}", "Playing Video 47238zzb", tem) } func TestNamedParamSC(t *testing.T) { tem := NewTemplate() tem.AddInternalShortcode("img.html", ``) CheckShortCodeMatch(t, `{{% img src="one" %}}`, ``, tem) CheckShortCodeMatch(t, `{{% img class="aspen" %}}`, ``, tem) CheckShortCodeMatch(t, `{{% img src= "one" %}}`, ``, tem) CheckShortCodeMatch(t, `{{% img src ="one" %}}`, ``, tem) CheckShortCodeMatch(t, `{{% img src = "one" %}}`, ``, tem) CheckShortCodeMatch(t, `{{% img src = "one" class = "aspen grove" %}}`, ``, tem) } func TestInnerSC(t *testing.T) { tem := NewTemplate() tem.AddInternalShortcode("inside.html", `{{ .Inner }}`) CheckShortCodeMatch(t, `{{% inside class="aspen" %}}`, `
`, tem) CheckShortCodeMatch(t, `{{% inside class="aspen" %}}More Here{{% /inside %}}`, "

More Here

\n
", tem) CheckShortCodeMatch(t, `{{% inside %}}More Here{{% /inside %}}`, "

More Here

\n
", tem) } func TestInnerSCWithMarkdown(t *testing.T) { tem := NewTemplate() tem.AddInternalShortcode("inside.html", `{{ .Inner }}`) CheckShortCodeMatch(t, `{{% inside %}} # More Here [link](http://spf13.com) and text {{% /inside %}}`, "

More Here

\n\n

link and text

\n
", tem) } func TestEmbeddedSC(t *testing.T) { tem := NewTemplate() CheckShortCodeMatch(t, "{{% test %}}", "This is a simple Test", tem) CheckShortCodeMatch(t, `{{% figure src="/found/here" class="bananas orange" %}}`, "\n
\n \n \n \n \n
\n", tem) CheckShortCodeMatch(t, `{{% figure src="/found/here" class="bananas orange" caption="This is a caption" %}}`, "\n
\n \n \"This\n \n \n
\n

\n This is a caption\n \n \n \n

\n
\n \n
\n", tem) } func TestFigureImgWidth(t *testing.T) { tem := NewTemplate() CheckShortCodeMatch(t, `{{% figure src="/found/here" class="bananas orange" alt="apple" width="100px" %}}`, "\n
\n \n \"apple\"\n \n \n
\n", tem) } func TestUnbalancedQuotes(t *testing.T) { tem := NewTemplate() CheckShortCodeMatch(t, `{{% figure src="/uploads/2011/12/spf13-mongosv-speaking-copy-1024x749.jpg "Steve Francia speaking at OSCON 2012" alt="MongoSV 2011" %}}`, "\n
\n \n \"MongoSV\n \n \n
\n", tem) }