github.com/RevenueMonster/sqlike@v1.0.6/sql/dialect/mysql/index_test.go (about) 1 package mysql 2 3 import ( 4 "testing" 5 6 sqlstmt "github.com/RevenueMonster/sqlike/sql/stmt" 7 "github.com/RevenueMonster/sqlike/sqlike/indexes" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestHasIndexByName(t *testing.T) { 12 ms := New() 13 stmt := sqlstmt.AcquireStmt(ms) 14 defer sqlstmt.ReleaseStmt(stmt) 15 ms.HasIndexByName(stmt, "db", "table", "idx1") 16 require.Equal(t, `SELECT COUNT(1) FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND INDEX_NAME = ?;`, stmt.String()) 17 require.ElementsMatch(t, []interface{}{"db", "table", "idx1"}, stmt.Args()) 18 } 19 20 func TestGetIndexes(t *testing.T) { 21 ms := New() 22 stmt := sqlstmt.AcquireStmt(ms) 23 defer sqlstmt.ReleaseStmt(stmt) 24 25 ms.GetIndexes(stmt, "db", "table") 26 require.Equal(t, "SELECT DISTINCT INDEX_NAME, INDEX_TYPE, NON_UNIQUE FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?;", stmt.String()) 27 require.ElementsMatch(t, []interface{}{"db", "table"}, stmt.Args()) 28 } 29 30 func TestGetIndexByType(t *testing.T) { 31 ms := New() 32 require.Equal(t, "FULLTEXT INDEX", ms.getIndexByType(indexes.FullText)) 33 require.Equal(t, "SPATIAL INDEX", ms.getIndexByType(indexes.Spatial)) 34 require.Equal(t, "UNIQUE INDEX", ms.getIndexByType(indexes.Unique)) 35 require.Equal(t, "PRIMARY KEY", ms.getIndexByType(indexes.Primary)) 36 require.Equal(t, "INDEX", ms.getIndexByType(0)) 37 }