1
0
Fork 0

Simple named param parser unit test

master
Philip O'Toole 3 years ago
parent 7fc50b7b67
commit cafbd02f0d

@ -1,6 +1,7 @@
package http
import (
"encoding/json"
"fmt"
"testing"
)
@ -112,6 +113,27 @@ func Test_SingleParameterizedRequest(t *testing.T) {
}
}
func Test_SingleNamedParameterizedRequest(t *testing.T) {
s := "SELECT * FROM foo WHERE bar=:bar AND qux=:qux"
b := []byte(fmt.Sprintf(`[["%s", %s]]`, s, mustJSONMarshal(map[string]interface{}{"bar": 1, "qux": "some string"})))
stmts, err := ParseRequest(b)
if err != nil {
t.Fatalf("failed to parse request: %s", err.Error())
}
if len(stmts) != 1 {
t.Fatalf("incorrect number of statements returned: %d", len(stmts))
}
if stmts[0].Sql != s {
t.Fatalf("incorrect statement parsed, exp %s, got %s", s, stmts[0].Sql)
}
if len(stmts[0].Parameters) != 2 {
t.Fatalf("incorrect number of parameters returned: %d", len(stmts[0].Parameters))
}
}
func Test_SingleParameterizedRequestNoParams(t *testing.T) {
s := "SELECT * FROM foo"
b := []byte(fmt.Sprintf(`[["%s"]]`, s))
@ -223,3 +245,11 @@ func Test_SingleInvalidTypeRequests(t *testing.T) {
t.Fatal("got unexpected error for invalid request")
}
}
func mustJSONMarshal(v interface{}) []byte {
b, err := json.Marshal(v)
if err != nil {
panic("failed to JSON marshal value")
}
return b
}

Loading…
Cancel
Save