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  }