jet/tests/insert_test.go

121 lines
2.5 KiB
Go
Raw Normal View History

2019-04-07 09:58:12 +02:00
package tests
import (
"fmt"
2019-04-07 16:54:06 +02:00
"github.com/davecgh/go-spew/spew"
2019-06-11 12:47:35 +02:00
. "github.com/go-jet/jet/sqlbuilder"
2019-06-05 17:56:24 +02:00
"github.com/go-jet/jet/tests/.test_files/dvd_rental/test_sample/model"
2019-06-11 12:47:35 +02:00
. "github.com/go-jet/jet/tests/.test_files/dvd_rental/test_sample/table"
2019-04-07 09:58:12 +02:00
"gotest.tools/assert"
"testing"
)
func TestInsertValues(t *testing.T) {
2019-06-11 12:47:35 +02:00
insertQuery := Link.INSERT(Link.URL, Link.Name, Link.Rel).
VALUES("http://www.postgresqltutorial.com", "PostgreSQL Tutorial", DEFAULT).
VALUES("http://www.google.com", "Google", DEFAULT).
VALUES("http://www.yahoo.com", "Yahoo", DEFAULT).
VALUES("http://www.bing.com", "Bing", DEFAULT).
RETURNING(Link.ID)
2019-04-07 09:58:12 +02:00
insertQueryStr, args, err := insertQuery.Sql()
2019-04-07 09:58:12 +02:00
assert.NilError(t, err)
assert.Equal(t, len(args), 8)
2019-04-07 09:58:12 +02:00
fmt.Println(insertQueryStr)
2019-05-12 18:15:23 +02:00
assert.Equal(t, insertQueryStr, `
INSERT INTO test_sample.link (url,name,rel) VALUES
($1, $2, DEFAULT),
($3, $4, DEFAULT),
($5, $6, DEFAULT),
($7, $8, DEFAULT)
RETURNING link.id AS "link.id";
`)
2019-04-07 09:58:12 +02:00
res, err := insertQuery.Execute(db)
assert.NilError(t, err)
rowsAffected, err := res.RowsAffected()
assert.NilError(t, err)
assert.Equal(t, rowsAffected, int64(4))
link := []model.Link{}
2019-06-11 12:47:35 +02:00
err = Link.SELECT(Link.AllColumns).Query(db, &link)
2019-04-07 09:58:12 +02:00
assert.NilError(t, err)
assert.Equal(t, len(link), 4)
assert.DeepEqual(t, link[0], model.Link{
ID: 1,
URL: "http://www.postgresqltutorial.com",
Name: "PostgreSQL Tutorial",
Rel: nil,
})
assert.DeepEqual(t, link[3], model.Link{
ID: 4,
URL: "http://www.bing.com",
Name: "Bing",
Rel: nil,
})
}
func TestInsertDataObject(t *testing.T) {
linkData := model.Link{
URL: "http://www.duckduckgo.com",
Name: "Duck Duck go",
Rel: nil,
}
2019-06-11 12:47:35 +02:00
query := Link.
INSERT(Link.URL, Link.Name).
MODEL(linkData)
2019-04-07 09:58:12 +02:00
queryStr, args, err := query.Sql()
2019-04-07 09:58:12 +02:00
assert.NilError(t, err)
assert.Equal(t, len(args), 2)
2019-04-07 09:58:12 +02:00
fmt.Println(queryStr)
result, err := query.Execute(db)
assert.NilError(t, err)
fmt.Println(result)
}
2019-04-07 16:54:06 +02:00
func TestInsertQuery(t *testing.T) {
2019-06-11 12:47:35 +02:00
_, err := Link.INSERT(Link.URL, Link.Name).
2019-04-07 16:54:06 +02:00
VALUES("http://www.postgresqltutorial.com", "PostgreSQL Tutorial").Execute(db)
assert.NilError(t, err)
2019-06-11 12:47:35 +02:00
query := Link.
INSERT(Link.URL, Link.Name).
QUERY(Link.SELECT(Link.URL, Link.Name))
2019-04-07 16:54:06 +02:00
queryStr, args, err := query.Sql()
2019-04-07 16:54:06 +02:00
assert.NilError(t, err)
assert.Equal(t, len(args), 0)
2019-04-07 16:54:06 +02:00
fmt.Println(queryStr)
_, err = query.Execute(db)
assert.NilError(t, err)
allLinks := []model.Link{}
2019-06-11 12:47:35 +02:00
err = Link.SELECT(Link.AllColumns).Query(db, &allLinks)
2019-04-07 16:54:06 +02:00
assert.NilError(t, err)
spew.Dump(allLinks)
}