jet/tests/mysql/lock_test.go

60 lines
1.2 KiB
Go
Raw Normal View History

package mysql
import (
"source.gleipnir.technology/Gleipnir/jet/internal/testutils"
. "source.gleipnir.technology/Gleipnir/jet/mysql"
. "source.gleipnir.technology/Gleipnir/jet/tests/.gentestdata/mysql/dvds/table"
"github.com/stretchr/testify/require"
"testing"
)
func TestLockRead(t *testing.T) {
query := Customer.LOCK().READ()
testutils.AssertStatementSql(t, query, `
LOCK TABLES dvds.customer READ;
`)
tx, err := db.DB.Begin() // can't prepare LOCK statement
require.NoError(t, err)
defer func() {
err := tx.Rollback()
require.NoError(t, err)
}()
testutils.AssertExec(t, query, tx)
}
func TestLockWrite(t *testing.T) {
query := Customer.LOCK().WRITE()
testutils.AssertStatementSql(t, query, `
LOCK TABLES dvds.customer WRITE;
`)
tx, err := db.DB.Begin() // can't prepare LOCK statement
require.NoError(t, err)
defer func() {
err := tx.Rollback()
require.NoError(t, err)
}()
testutils.AssertExec(t, query, tx)
}
func TestUnlockTables(t *testing.T) {
query := UNLOCK_TABLES()
testutils.AssertStatementSql(t, query, `
UNLOCK TABLES;
`)
tx, err := db.DB.Begin() // can't prepare LOCK statement
require.NoError(t, err)
defer func() {
err := tx.Rollback()
require.NoError(t, err)
}()
testutils.AssertExec(t, query, tx)
}