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"
|
|
|
|
|
"github.com/sub0zero/go-sqlbuilder/sqlbuilder"
|
2019-04-07 10:05:41 +02:00
|
|
|
"github.com/sub0zero/go-sqlbuilder/tests/.test_files/dvd_rental/test_sample/model"
|
|
|
|
|
"github.com/sub0zero/go-sqlbuilder/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-04-07 16:54:06 +02:00
|
|
|
insertQuery := table.Link.INSERT(table.Link.URL, table.Link.Name, table.Link.Rel).
|
|
|
|
|
VALUES("http://www.postgresqltutorial.com", "PostgreSQL Tutorial", sqlbuilder.DEFAULT).
|
|
|
|
|
VALUES("http://www.google.com", "Google", sqlbuilder.DEFAULT).
|
|
|
|
|
VALUES("http://www.yahoo.com", "Yahoo", sqlbuilder.DEFAULT).
|
|
|
|
|
VALUES("http://www.bing.com", "Bing", sqlbuilder.DEFAULT).
|
2019-04-07 09:58:12 +02:00
|
|
|
RETURNING(table.Link.ID)
|
|
|
|
|
|
|
|
|
|
insertQueryStr, err := insertQuery.String()
|
|
|
|
|
|
|
|
|
|
assert.NilError(t, err)
|
|
|
|
|
|
|
|
|
|
fmt.Println(insertQueryStr)
|
|
|
|
|
|
2019-04-14 17:55:10 +02:00
|
|
|
assert.Equal(t, insertQueryStr, `INSERT INTO test_sample.link (url,name,rel) VALUES ('http://www.postgresqltutorial.com','PostgreSQL Tutorial',DEFAULT), ('http://www.google.com','Google',DEFAULT), ('http://www.yahoo.com','Yahoo',DEFAULT), ('http://www.bing.com','Bing',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-04-20 19:49:29 +02:00
|
|
|
err = table.Link.SELECT(table.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-04-07 16:54:06 +02:00
|
|
|
query := table.Link.
|
|
|
|
|
INSERT(table.Link.URL, table.Link.Name).
|
2019-04-07 09:58:12 +02:00
|
|
|
VALUES_MAPPING(linkData)
|
|
|
|
|
|
|
|
|
|
queryStr, err := query.String()
|
|
|
|
|
|
|
|
|
|
assert.NilError(t, err)
|
|
|
|
|
|
|
|
|
|
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) {
|
|
|
|
|
|
|
|
|
|
_, err := table.Link.INSERT(table.Link.URL, table.Link.Name).
|
|
|
|
|
VALUES("http://www.postgresqltutorial.com", "PostgreSQL Tutorial").Execute(db)
|
|
|
|
|
|
|
|
|
|
assert.NilError(t, err)
|
|
|
|
|
|
|
|
|
|
query := table.Link.
|
|
|
|
|
INSERT(table.Link.URL, table.Link.Name).
|
|
|
|
|
QUERY(table.Link.SELECT(table.Link.URL, table.Link.Name))
|
|
|
|
|
|
|
|
|
|
queryStr, err := query.String()
|
|
|
|
|
|
|
|
|
|
assert.NilError(t, err)
|
|
|
|
|
|
|
|
|
|
fmt.Println(queryStr)
|
|
|
|
|
|
|
|
|
|
_, err = query.Execute(db)
|
|
|
|
|
|
|
|
|
|
assert.NilError(t, err)
|
|
|
|
|
|
|
|
|
|
allLinks := []model.Link{}
|
2019-04-20 19:49:29 +02:00
|
|
|
err = table.Link.SELECT(table.Link.AllColumns).Query(db, &allLinks)
|
2019-04-07 16:54:06 +02:00
|
|
|
assert.NilError(t, err)
|
|
|
|
|
|
|
|
|
|
spew.Dump(allLinks)
|
|
|
|
|
}
|