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  }