github.com/lingyao2333/mo-zero@v1.4.1/core/stores/sqlx/sqlconn_test.go (about) 1 package sqlx 2 3 import ( 4 "database/sql" 5 "io" 6 "testing" 7 8 "github.com/DATA-DOG/go-sqlmock" 9 "github.com/lingyao2333/mo-zero/core/logx" 10 "github.com/stretchr/testify/assert" 11 ) 12 13 const mockedDatasource = "sqlmock" 14 15 func init() { 16 logx.Disable() 17 } 18 19 func TestSqlConn(t *testing.T) { 20 mock, err := buildConn() 21 assert.Nil(t, err) 22 mock.ExpectExec("any") 23 mock.ExpectQuery("any").WillReturnRows(sqlmock.NewRows([]string{"foo"})) 24 conn := NewMysql(mockedDatasource) 25 db, err := conn.RawDB() 26 assert.Nil(t, err) 27 rawConn := NewSqlConnFromDB(db, withMysqlAcceptable()) 28 badConn := NewMysql("badsql") 29 _, err = conn.Exec("any", "value") 30 assert.NotNil(t, err) 31 _, err = badConn.Exec("any", "value") 32 assert.NotNil(t, err) 33 _, err = rawConn.Prepare("any") 34 assert.NotNil(t, err) 35 _, err = badConn.Prepare("any") 36 assert.NotNil(t, err) 37 var val string 38 assert.NotNil(t, conn.QueryRow(&val, "any")) 39 assert.NotNil(t, badConn.QueryRow(&val, "any")) 40 assert.NotNil(t, conn.QueryRowPartial(&val, "any")) 41 assert.NotNil(t, badConn.QueryRowPartial(&val, "any")) 42 assert.NotNil(t, conn.QueryRows(&val, "any")) 43 assert.NotNil(t, badConn.QueryRows(&val, "any")) 44 assert.NotNil(t, conn.QueryRowsPartial(&val, "any")) 45 assert.NotNil(t, badConn.QueryRowsPartial(&val, "any")) 46 assert.NotNil(t, conn.Transact(func(session Session) error { 47 return nil 48 })) 49 assert.NotNil(t, badConn.Transact(func(session Session) error { 50 return nil 51 })) 52 } 53 54 func buildConn() (mock sqlmock.Sqlmock, err error) { 55 _, err = connManager.GetResource(mockedDatasource, func() (io.Closer, error) { 56 var db *sql.DB 57 var err error 58 db, mock, err = sqlmock.New() 59 return &pingedDB{ 60 DB: db, 61 }, err 62 }) 63 64 return 65 }