github.com/RevenueMonster/sqlike@v1.0.6/sql/dialect/mysql/table_test.go (about) 1 package mysql 2 3 import ( 4 "testing" 5 6 sqlstmt "github.com/RevenueMonster/sqlike/sql/stmt" 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestHasPrimaryKey(t *testing.T) { 11 ms := New() 12 stmt := sqlstmt.AcquireStmt(ms) 13 defer sqlstmt.ReleaseStmt(stmt) 14 15 ms.HasPrimaryKey(stmt, "db", "table") 16 require.Equal(t, "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND CONSTRAINT_TYPE = 'PRIMARY KEY';", stmt.String()) 17 require.ElementsMatch(t, []interface{}{"db", "table"}, stmt.Args()) 18 } 19 20 func TestDropTable(t *testing.T) { 21 ms := New() 22 stmt := sqlstmt.AcquireStmt(ms) 23 defer sqlstmt.ReleaseStmt(stmt) 24 25 { 26 ms.DropTable(stmt, "db", "table", true) 27 require.Equal(t, "DROP TABLE IF EXISTS `db`.`table`;", stmt.String()) 28 require.ElementsMatch(t, []interface{}{}, stmt.Args()) 29 } 30 31 stmt.Reset() 32 33 { 34 ms.DropTable(stmt, "db", "table", false) 35 require.Equal(t, "DROP TABLE `db`.`table`;", stmt.String()) 36 require.ElementsMatch(t, []interface{}{}, stmt.Args()) 37 } 38 } 39 40 func TestRenameTable(t *testing.T) { 41 ms := New() 42 stmt := sqlstmt.AcquireStmt(ms) 43 defer sqlstmt.ReleaseStmt(stmt) 44 ms.RenameTable(stmt, "db", "oldName", "newName") 45 require.Equal(t, "RENAME TABLE `db`.`oldName` TO `db`.`newName`;", stmt.String()) 46 require.ElementsMatch(t, []interface{}{}, stmt.Args()) 47 } 48 49 func TestTruncateTable(t *testing.T) { 50 ms := New() 51 stmt := sqlstmt.AcquireStmt(ms) 52 defer sqlstmt.ReleaseStmt(stmt) 53 54 ms.TruncateTable(stmt, "db", "table") 55 require.Equal(t, "TRUNCATE TABLE `db`.`table`;", stmt.String()) 56 require.ElementsMatch(t, []interface{}{}, stmt.Args()) 57 } 58 59 func TestHasTable(t *testing.T) { 60 ms := New() 61 stmt := sqlstmt.AcquireStmt(ms) 62 defer sqlstmt.ReleaseStmt(stmt) 63 64 ms.HasTable(stmt, "db", "table") 65 require.Equal(t, "SELECT count(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?;", stmt.String()) 66 require.ElementsMatch(t, []interface{}{"db", "table"}, stmt.Args()) 67 68 }