Add support for automatic query logging.
This commit is contained in:
parent
5d742837f1
commit
0d3ec872d6
22 changed files with 152 additions and 13 deletions
|
|
@ -80,6 +80,7 @@ func TestUUID(t *testing.T) {
|
|||
require.True(t, dest.UUID.String() != uuid.UUID{}.String())
|
||||
require.True(t, dest.StrUUID.String() != uuid.UUID{}.String())
|
||||
require.Equal(t, dest.StrUUID.String(), dest.BinUUID.String())
|
||||
requireLogged(t, query)
|
||||
}
|
||||
|
||||
func TestExpressionOperators(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -68,4 +68,6 @@ FROM test_sample.all_types;
|
|||
Unsigned: 15,
|
||||
Binary: "Some text",
|
||||
})
|
||||
|
||||
requireLogged(t, query)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ WHERE link.name IN ('Gmail', 'Outlook');
|
|||
|
||||
testutils.AssertDebugStatementSql(t, deleteStmt, expectedSQL, "Gmail", "Outlook")
|
||||
testutils.AssertExec(t, deleteStmt, db, 2)
|
||||
requireLogged(t, deleteStmt)
|
||||
}
|
||||
|
||||
func TestDeleteWithWhereOrderByLimit(t *testing.T) {
|
||||
|
|
@ -43,6 +44,7 @@ LIMIT 1;
|
|||
|
||||
testutils.AssertDebugStatementSql(t, deleteStmt, expectedSQL, "Gmail", "Outlook", int64(1))
|
||||
testutils.AssertExec(t, deleteStmt, db, 1)
|
||||
requireLogged(t, deleteStmt)
|
||||
}
|
||||
|
||||
func TestDeleteQueryContext(t *testing.T) {
|
||||
|
|
@ -61,6 +63,7 @@ func TestDeleteQueryContext(t *testing.T) {
|
|||
err := deleteStmt.QueryContext(ctx, db, &dest)
|
||||
|
||||
require.Error(t, err, "context deadline exceeded")
|
||||
requireLogged(t, deleteStmt)
|
||||
}
|
||||
|
||||
func TestDeleteExecContext(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ VALUES (100, 'http://www.postgresqltutorial.com', 'PostgreSQL Tutorial', DEFAULT
|
|||
|
||||
_, err := insertQuery.Exec(db)
|
||||
require.NoError(t, err)
|
||||
requireLogged(t, insertQuery)
|
||||
|
||||
insertedLinks := []model.Link{}
|
||||
|
||||
|
|
@ -82,6 +83,7 @@ VALUES (100, 'http://www.postgresqltutorial.com', 'PostgreSQL Tutorial', DEFAULT
|
|||
|
||||
_, err := stmt.Exec(db)
|
||||
require.NoError(t, err)
|
||||
requireLogged(t, stmt)
|
||||
|
||||
insertedLinks := []model.Link{}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ LOCK TABLES dvds.customer READ;
|
|||
|
||||
_, err := query.Exec(db)
|
||||
require.NoError(t, err)
|
||||
requireLogged(t, query)
|
||||
}
|
||||
|
||||
func TestLockWrite(t *testing.T) {
|
||||
|
|
@ -28,6 +29,7 @@ LOCK TABLES dvds.customer WRITE;
|
|||
|
||||
_, err := query.Exec(db)
|
||||
require.NoError(t, err)
|
||||
requireLogged(t, query)
|
||||
}
|
||||
|
||||
func TestUnlockTables(t *testing.T) {
|
||||
|
|
@ -39,4 +41,5 @@ UNLOCK TABLES;
|
|||
|
||||
_, err := query.Exec(db)
|
||||
require.NoError(t, err)
|
||||
requireLogged(t, query)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,13 @@
|
|||
package mysql
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"flag"
|
||||
jetmysql "github.com/go-jet/jet/mysql"
|
||||
"github.com/go-jet/jet/postgres"
|
||||
"github.com/go-jet/jet/tests/dbconfig"
|
||||
"github.com/stretchr/testify/require"
|
||||
"math/rand"
|
||||
"time"
|
||||
|
||||
|
|
@ -44,3 +48,21 @@ func TestMain(m *testing.M) {
|
|||
|
||||
os.Exit(ret)
|
||||
}
|
||||
|
||||
var loggedSQL string
|
||||
var loggedSQLArgs []interface{}
|
||||
var loggedDebugSQL string
|
||||
|
||||
func init() {
|
||||
jetmysql.SetLogger(func(ctx context.Context, statement jetmysql.LoggableStatement) {
|
||||
loggedSQL, loggedSQLArgs = statement.Sql()
|
||||
loggedDebugSQL = statement.DebugSql()
|
||||
})
|
||||
}
|
||||
|
||||
func requireLogged(t *testing.T, statement postgres.Statement) {
|
||||
query, args := statement.Sql()
|
||||
require.Equal(t, loggedSQL, query)
|
||||
require.Equal(t, loggedSQLArgs, args)
|
||||
require.Equal(t, loggedDebugSQL, statement.DebugSql())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ WHERE actor.actor_id = ?;
|
|||
require.NoError(t, err)
|
||||
|
||||
testutils.AssertDeepEqual(t, actor, actor2)
|
||||
requireLogged(t, query)
|
||||
}
|
||||
|
||||
var actor2 = model.Actor{
|
||||
|
|
@ -67,6 +68,7 @@ ORDER BY actor.actor_id;
|
|||
//testutils.PrintJson(dest)
|
||||
//testutils.SaveJsonFile(dest, "mysql/testdata/all_actors.json")
|
||||
testutils.AssertJSONFile(t, dest, "./testdata/results/mysql/all_actors.json")
|
||||
requireLogged(t, query)
|
||||
}
|
||||
|
||||
func TestSelectGroupByHaving(t *testing.T) {
|
||||
|
|
@ -144,6 +146,7 @@ ORDER BY payment.customer_id, SUM(payment.amount) ASC;
|
|||
|
||||
//testutils.SaveJsonFile(dest, "mysql/testdata/customer_payment_sum.json")
|
||||
testutils.AssertJSONFile(t, dest, "./testdata/results/mysql/customer_payment_sum.json")
|
||||
requireLogged(t, query)
|
||||
}
|
||||
|
||||
func TestSubQuery(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ WHERE link.name = 'Bing';
|
|||
|
||||
testutils.AssertDebugStatementSql(t, query, expectedSQL, "Bong", "http://bong.com", "Bing")
|
||||
testutils.AssertExec(t, query, db)
|
||||
requireLogged(t, query)
|
||||
})
|
||||
|
||||
t.Run("new version", func(t *testing.T) {
|
||||
|
|
@ -42,6 +43,7 @@ WHERE link.name = 'Bing';
|
|||
|
||||
testutils.AssertDebugStatementSql(t, stmt, expectedSQL, "Bong", "http://bong.com", "Bing")
|
||||
testutils.AssertExec(t, stmt, db)
|
||||
requireLogged(t, stmt)
|
||||
})
|
||||
|
||||
links := []model.Link{}
|
||||
|
|
@ -88,6 +90,7 @@ WHERE link.name = ?;
|
|||
|
||||
testutils.AssertStatementSql(t, query, expectedSQL, "Bong", "Youtube", "Bing")
|
||||
testutils.AssertExec(t, query, db)
|
||||
requireLogged(t, query)
|
||||
})
|
||||
|
||||
t.Run("new version", func(t *testing.T) {
|
||||
|
|
@ -105,6 +108,7 @@ WHERE link.name = ?;
|
|||
|
||||
testutils.AssertStatementSql(t, query, expectedSQL, "Bong", "Youtube", "Bing")
|
||||
testutils.AssertExec(t, query, db)
|
||||
requireLogged(t, query)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -130,10 +134,10 @@ SET id = ?,
|
|||
description = ?
|
||||
WHERE link.id = ?;
|
||||
`
|
||||
fmt.Println(stmt.Sql())
|
||||
testutils.AssertStatementSql(t, stmt, expectedSQL, int32(201), "http://www.duckduckgo.com", "DuckDuckGo", nil, int64(201))
|
||||
|
||||
testutils.AssertExec(t, stmt, db)
|
||||
requireLogged(t, stmt)
|
||||
}
|
||||
|
||||
func TestUpdateWithModelDataAndPredefinedColumnList(t *testing.T) {
|
||||
|
|
@ -165,10 +169,10 @@ WHERE link.id = 201;
|
|||
testutils.AssertDebugStatementSql(t, stmt, expectedSQL, nil, "DuckDuckGo", "http://www.duckduckgo.com", int64(201))
|
||||
|
||||
testutils.AssertExec(t, stmt, db)
|
||||
requireLogged(t, stmt)
|
||||
}
|
||||
|
||||
func TestUpdateWithModelDataAndMutableColumns(t *testing.T) {
|
||||
|
||||
setupLinkTableForUpdateTest(t)
|
||||
|
||||
link := model.Link{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue