29 lines
1.0 KiB
Go
29 lines
1.0 KiB
Go
package repository
|
|
|
|
import "testing"
|
|
|
|
func TestRebindPostgresParameters(t *testing.T) {
|
|
query := "SELECT * FROM tasks WHERE domain_id = ? AND status = ?"
|
|
want := "SELECT * FROM tasks WHERE domain_id = $1 AND status = $2"
|
|
if got := Rebind("postgres", query); got != want {
|
|
t.Fatalf("PostgreSQL 占位符转换错误:%q", got)
|
|
}
|
|
}
|
|
|
|
func TestRebindDoesNotChangeQuotedQuestionMarks(t *testing.T) {
|
|
query := "SELECT '?' AS literal, \"?\" AS identifier, `?` AS legacy_identifier WHERE id = ? AND note = 'it''s ?'"
|
|
want := "SELECT '?' AS literal, \"?\" AS identifier, `?` AS legacy_identifier WHERE id = $1 AND note = 'it''s ?'"
|
|
if got := Rebind("postgres", query); got != want {
|
|
t.Fatalf("字符串或标识符中的问号被错误转换:%q", got)
|
|
}
|
|
}
|
|
|
|
func TestRebindLeavesSQLiteAndMySQLUntouched(t *testing.T) {
|
|
query := "SELECT * FROM tasks WHERE id = ?"
|
|
for _, driver := range []string{"sqlite", "mysql", ""} {
|
|
if got := Rebind(driver, query); got != query {
|
|
t.Fatalf("%s 的占位符不应改变:%q", driver, got)
|
|
}
|
|
}
|
|
}
|