Update TestQuery() to work with postgres

pull/2/head
Vinícius Garcia 2020-12-30 12:26:35 -03:00
parent f782fabb37
commit 0cdaf00aaf
2 changed files with 97 additions and 93 deletions

View File

@ -90,7 +90,7 @@ func (c Client) Query(
rows, err := c.db.DB().QueryContext(ctx, query, params...)
if err != nil {
return err
return fmt.Errorf("error running query: %s", err.Error())
}
defer rows.Close()

View File

@ -21,17 +21,19 @@ type User struct {
}
func TestQuery(t *testing.T) {
err := createTable("sqlite3")
for _, driver := range []string{"sqlite3", "postgres"} {
t.Run(driver, func(t *testing.T) {
err := createTable(driver)
if err != nil {
t.Fatal("could not create test table!")
}
t.Run("should return 0 results correctly", func(t *testing.T) {
db := connectDB(t, "sqlite3")
db := connectDB(t, driver)
defer db.Close()
ctx := context.Background()
c := newTestClient(db, "sqlite3", "users")
c := newTestClient(db, driver, "users")
var users []User
err := c.Query(ctx, &users, `SELECT * FROM users WHERE id=1;`)
assert.Equal(t, nil, err)
@ -44,7 +46,7 @@ func TestQuery(t *testing.T) {
})
t.Run("should return a user correctly", func(t *testing.T) {
db := connectDB(t, "sqlite3")
db := connectDB(t, driver)
defer db.Close()
db.Create(&User{
@ -52,9 +54,9 @@ func TestQuery(t *testing.T) {
})
ctx := context.Background()
c := newTestClient(db, "sqlite3", "users")
c := newTestClient(db, driver, "users")
var users []User
err = c.Query(ctx, &users, `SELECT * FROM users WHERE name=?;`, "Bia")
err = c.Query(ctx, &users, `SELECT * FROM users WHERE name=`+c.dialect.Placeholder(0), "Bia")
assert.Equal(t, nil, err)
assert.Equal(t, 1, len(users))
@ -63,7 +65,7 @@ func TestQuery(t *testing.T) {
})
t.Run("should return multiple users correctly", func(t *testing.T) {
db := connectDB(t, "sqlite3")
db := connectDB(t, driver)
defer db.Close()
db.Create(&User{
@ -75,9 +77,9 @@ func TestQuery(t *testing.T) {
})
ctx := context.Background()
c := newTestClient(db, "sqlite3", "users")
c := newTestClient(db, driver, "users")
var users []User
err = c.Query(ctx, &users, `SELECT * FROM users WHERE name like ?;`, "% Garcia")
err = c.Query(ctx, &users, `SELECT * FROM users WHERE name like `+c.dialect.Placeholder(0), "% Garcia")
assert.Equal(t, nil, err)
assert.Equal(t, 2, len(users))
@ -88,7 +90,7 @@ func TestQuery(t *testing.T) {
})
t.Run("should report error if input is not a pointer to a slice of structs", func(t *testing.T) {
db := connectDB(t, "sqlite3")
db := connectDB(t, driver)
defer db.Close()
db.Create(&User{
@ -101,19 +103,21 @@ func TestQuery(t *testing.T) {
ctx := context.Background()
c := newTestClient(db, "postgres", "users")
err = c.Query(ctx, &User{}, `SELECT * FROM users WHERE name like ?;`, "% Sá")
err = c.Query(ctx, &User{}, `SELECT * FROM users WHERE name like `+c.dialect.Placeholder(0), "% Sá")
assert.NotEqual(t, nil, err)
err = c.Query(ctx, []User{}, `SELECT * FROM users WHERE name like ?;`, "% Sá")
err = c.Query(ctx, []User{}, `SELECT * FROM users WHERE name like `+c.dialect.Placeholder(0), "% Sá")
assert.NotEqual(t, nil, err)
var i int
err = c.Query(ctx, &i, `SELECT * FROM users WHERE name like ?;`, "% Sá")
err = c.Query(ctx, &i, `SELECT * FROM users WHERE name like `+c.dialect.Placeholder(0), "% Sá")
assert.NotEqual(t, nil, err)
err = c.Query(ctx, &[]int{}, `SELECT * FROM users WHERE name like ?;`, "% Sá")
err = c.Query(ctx, &[]int{}, `SELECT * FROM users WHERE name like `+c.dialect.Placeholder(0), "% Sá")
assert.NotEqual(t, nil, err)
})
})
}
}
func TestQueryOne(t *testing.T) {