Update TestQueryOne to include the `json` feature

pull/2/head
Vinícius Garcia 2021-03-02 22:16:29 -03:00
parent d56edab07a
commit 587c620a75
2 changed files with 35 additions and 4 deletions

View File

@ -25,6 +25,11 @@ func (j *jsonSerializable) Scan(value interface{}) error {
return nil
}
// Required since sqlite3 returns strings not bytes
if v, ok := value.(string); ok {
value = []byte(v)
}
rawJSON, ok := value.([]byte)
if !ok {
return fmt.Errorf("unexpected type received to Scan: %T", value)

View File

@ -235,7 +235,7 @@ func TestQueryOne(t *testing.T) {
db := connectDB(t, driver)
defer db.Close()
_, err := db.Exec(`INSERT INTO users (name, age) VALUES ('Bia', 0)`)
_, err := db.Exec(`INSERT INTO users (name, age, address) VALUES ('Bia', 0, '{"country":"BR"}')`)
assert.Equal(t, nil, err)
ctx := context.Background()
@ -244,18 +244,44 @@ func TestQueryOne(t *testing.T) {
err = c.QueryOne(ctx, &u, `SELECT * FROM users WHERE name=`+c.dialect.Placeholder(0), "Bia")
assert.Equal(t, nil, err)
assert.Equal(t, "Bia", u.Name)
assert.NotEqual(t, uint(0), u.ID)
assert.Equal(t, "Bia", u.Name)
assert.Equal(t, Address{
Country: "BR",
}, u.Address)
})
t.Run("should return only the first result on multiples matches", func(t *testing.T) {
db := connectDB(t, driver)
defer db.Close()
_, err := db.Exec(`INSERT INTO users (name, age, address) VALUES ('Andréa Sá', 0, '{"country":"US"}')`)
assert.Equal(t, nil, err)
_, err = db.Exec(`INSERT INTO users (name, age, address) VALUES ('Caio Sá', 0, '{"country":"BR"}')`)
assert.Equal(t, nil, err)
ctx := context.Background()
c := newTestDB(db, driver, "users")
var u User
err = c.QueryOne(ctx, &u, `SELECT * FROM users WHERE name like `+c.dialect.Placeholder(0)+` ORDER BY id ASC`, "% Sá")
assert.Equal(t, nil, err)
assert.Equal(t, "Andréa Sá", u.Name)
assert.Equal(t, 0, u.Age)
assert.Equal(t, Address{
Country: "US",
}, u.Address)
})
t.Run("should report error if input is not a pointer to struct", func(t *testing.T) {
db := connectDB(t, driver)
defer db.Close()
_, err := db.Exec(`INSERT INTO users (name, age) VALUES ('Andréa Sá', 0)`)
_, err := db.Exec(`INSERT INTO users (name, age, address) VALUES ('Andréa Sá', 0, '{"country":"US"}')`)
assert.Equal(t, nil, err)
_, err = db.Exec(`INSERT INTO users (name, age) VALUES ('Caio Sá', 0)`)
_, err = db.Exec(`INSERT INTO users (name, age, address) VALUES ('Caio Sá', 0, '{"country":"BR"}')`)
assert.Equal(t, nil, err)
ctx := context.Background()