More tests for simplate type detection
This commit is contained in:
parent
bfc7c0cdc6
commit
f61d845eca
@ -1,6 +1,8 @@
|
||||
package smplt
|
||||
|
||||
import (
|
||||
"mime"
|
||||
"path"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@ -8,17 +10,27 @@ const (
|
||||
SIMPLATE_TYPE_RENDERED = "rendered"
|
||||
SIMPLATE_TYPE_STATIC = "static"
|
||||
SIMPLATE_TYPE_NEGOTIATED = "negotiated"
|
||||
SIMPLATE_TYPE_JSON = "json"
|
||||
)
|
||||
|
||||
type Simplate struct {
|
||||
Type string
|
||||
Filename string
|
||||
Type string
|
||||
ContentType string
|
||||
}
|
||||
|
||||
func SimplateFromString(filename, content string) *Simplate {
|
||||
nbreaks := strings.Count(content, "")
|
||||
|
||||
s := &Simplate{
|
||||
Type: SIMPLATE_TYPE_STATIC,
|
||||
Filename: filename,
|
||||
Type: SIMPLATE_TYPE_STATIC,
|
||||
ContentType: mime.TypeByExtension(path.Ext(filename)),
|
||||
}
|
||||
|
||||
if nbreaks == 1 && s.ContentType == "application/json" {
|
||||
s.Type = SIMPLATE_TYPE_JSON
|
||||
return s
|
||||
}
|
||||
|
||||
if nbreaks == 2 {
|
||||
|
@ -1,12 +1,14 @@
|
||||
package smplt_test
|
||||
|
||||
import (
|
||||
"mime"
|
||||
"testing"
|
||||
|
||||
. "github.com/meatballhat/box-o-sand/gotime/smplt"
|
||||
)
|
||||
|
||||
const BASIC_RENDERED_TXT_SIMPLATE = `
|
||||
const (
|
||||
BASIC_RENDERED_TXT_SIMPLATE = `
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
@ -17,16 +19,70 @@ type Dance struct {
|
||||
}
|
||||
|
||||
d := &Dance{
|
||||
Who: "Everybody",
|
||||
Who: "Everybody",
|
||||
When: time.Now(),
|
||||
}
|
||||
|
||||
{{d.Who}} Dance {{d.When}}!
|
||||
`
|
||||
|
||||
const BASIC_STATIC_TXT_SIMPLATE = `
|
||||
BASIC_STATIC_TXT_SIMPLATE = `
|
||||
Everybody Dance Now!
|
||||
`
|
||||
BASIC_JSON_SIMPLATE = `
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type Dance struct {
|
||||
Who string
|
||||
When time.Time
|
||||
}
|
||||
|
||||
d := &Dance{
|
||||
Who: "Everybody",
|
||||
When: time.Now(),
|
||||
}
|
||||
response.SetBody(d)
|
||||
`
|
||||
BASIC_NEGOTIATED_SIMPLATE = `
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type Dance struct {
|
||||
Who string
|
||||
When time.Time
|
||||
}
|
||||
|
||||
d := &Dance{
|
||||
Who: "Everybody",
|
||||
When: time.Now(),
|
||||
}
|
||||
text/plain
|
||||
{{d.Who}} Dance {{d.When}}!
|
||||
|
||||
application/json
|
||||
{"who":"{{d.Who}}","when":"{{d.When}}"}
|
||||
`
|
||||
)
|
||||
|
||||
func TestSimplateKnowsItsFilename(t *testing.T) {
|
||||
s := SimplateFromString("hasty-decisions.txt", "herpherpderpherp")
|
||||
if s.Filename != "hasty-decisions.txt" {
|
||||
t.Errorf("Simplate filename incorrectly assigned as %s instead of %s",
|
||||
s.Filename, "hasty-decisions.txt")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSimplateKnowsItsContentType(t *testing.T) {
|
||||
s := SimplateFromString("hasty-decisions.js", "function herp() { return 'derp'; }")
|
||||
expected := mime.TypeByExtension(".js")
|
||||
|
||||
if s.ContentType != expected {
|
||||
t.Errorf("Simplate content type incorrectly assigned as %s instead of %s",
|
||||
s.ContentType, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDetectsRenderedSimplate(t *testing.T) {
|
||||
s := SimplateFromString("basic-rendered.txt", BASIC_RENDERED_TXT_SIMPLATE)
|
||||
@ -41,3 +97,18 @@ func TestDetectsStaticSimplate(t *testing.T) {
|
||||
t.Errorf("Simplate detected as %s instead of %s", s.Type, SIMPLATE_TYPE_STATIC)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDetectsJSONSimplates(t *testing.T) {
|
||||
s := SimplateFromString("basic.json", BASIC_JSON_SIMPLATE)
|
||||
if s.Type != SIMPLATE_TYPE_JSON {
|
||||
t.Errorf("Simplate detected as %s instead of %s", s.Type, SIMPLATE_TYPE_JSON)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDetectsNegotiatedSimplates(t *testing.T) {
|
||||
s := SimplateFromString("hork", BASIC_NEGOTIATED_SIMPLATE)
|
||||
if s.Type != SIMPLATE_TYPE_NEGOTIATED {
|
||||
t.Errorf("Simplate detected as %s instead of %s",
|
||||
s.Type, SIMPLATE_TYPE_NEGOTIATED)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user