This is an automated email from the ASF dual-hosted git repository.
jimin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-seata-go.git
The following commit(s) were added to refs/heads/master by this push:
new cc5edf7a test: improve test coverage for pkg/datasource/sql/mock (#976)
cc5edf7a is described below
commit cc5edf7a1982e2da55f9e71e74ee38722325c340
Author: 深几许 <[email protected]>
AuthorDate: Tue Nov 4 23:26:07 2025 +0800
test: improve test coverage for pkg/datasource/sql/mock (#976)
---
.../sql/mock/mock_datasource_manager_test.go | 209 ++++++++++++++++
.../sql/mock/mock_driver_components_test.go | 203 ++++++++++++++++
pkg/datasource/sql/mock/mock_driver_test.go | 262 +++++++++++++++++++++
.../sql/mock/mock_table_meta_cache_test.go | 91 +++++++
4 files changed, 765 insertions(+)
diff --git a/pkg/datasource/sql/mock/mock_datasource_manager_test.go
b/pkg/datasource/sql/mock/mock_datasource_manager_test.go
new file mode 100644
index 00000000..cfe00f98
--- /dev/null
+++ b/pkg/datasource/sql/mock/mock_datasource_manager_test.go
@@ -0,0 +1,209 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package mock
+
+import (
+ "context"
+ "database/sql"
+ "sync"
+ "testing"
+
+ "github.com/golang/mock/gomock"
+ "github.com/stretchr/testify/assert"
+
+ "seata.apache.org/seata-go/pkg/datasource/sql/datasource"
+ "seata.apache.org/seata-go/pkg/datasource/sql/types"
+ "seata.apache.org/seata-go/pkg/protocol/branch"
+ "seata.apache.org/seata-go/pkg/rm"
+)
+
+func TestNewMockDataSourceManager(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDSM := NewMockDataSourceManager(ctrl)
+ assert.NotNil(t, mockDSM)
+ assert.NotNil(t, mockDSM.EXPECT())
+}
+
+func TestMockDataSourceManager_BranchCommit(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDSM := NewMockDataSourceManager(ctrl)
+ ctx := context.Background()
+ resource := rm.BranchResource{
+ ResourceId: "test-resource",
+ BranchId: 123,
+ Xid: "test-xid",
+ }
+
+ expectedStatus :=
branch.BranchStatus(branch.BranchStatusPhasetwoCommitted)
+ mockDSM.EXPECT().BranchCommit(ctx, resource).Return(expectedStatus, nil)
+
+ status, err := mockDSM.BranchCommit(ctx, resource)
+ assert.NoError(t, err)
+ assert.Equal(t, expectedStatus, status)
+}
+
+func TestMockDataSourceManager_BranchRollback(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDSM := NewMockDataSourceManager(ctrl)
+ ctx := context.Background()
+ resource := rm.BranchResource{
+ ResourceId: "test-resource",
+ BranchId: 456,
+ Xid: "test-xid",
+ }
+
+ expectedStatus :=
branch.BranchStatus(branch.BranchStatusPhasetwoRollbacked)
+ mockDSM.EXPECT().BranchRollback(ctx, resource).Return(expectedStatus,
nil)
+
+ status, err := mockDSM.BranchRollback(ctx, resource)
+ assert.NoError(t, err)
+ assert.Equal(t, expectedStatus, status)
+}
+
+func TestMockDataSourceManager_BranchRegister(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDSM := NewMockDataSourceManager(ctrl)
+ ctx := context.Background()
+ param := rm.BranchRegisterParam{
+ Xid: "test-xid",
+ ResourceId: "test-resource",
+ LockKeys: "key1,key2",
+ }
+
+ expectedBranchID := int64(789)
+ mockDSM.EXPECT().BranchRegister(ctx, param).Return(expectedBranchID,
nil)
+
+ branchID, err := mockDSM.BranchRegister(ctx, param)
+ assert.NoError(t, err)
+ assert.Equal(t, expectedBranchID, branchID)
+}
+
+func TestMockDataSourceManager_BranchReport(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDSM := NewMockDataSourceManager(ctrl)
+ ctx := context.Background()
+ param := rm.BranchReportParam{
+ Xid: "test-xid",
+ BranchId: 123,
+ Status:
branch.BranchStatus(branch.BranchStatusPhasetwoCommitted),
+ }
+
+ mockDSM.EXPECT().BranchReport(ctx, param).Return(nil)
+
+ err := mockDSM.BranchReport(ctx, param)
+ assert.NoError(t, err)
+}
+
+func TestMockDataSourceManager_CreateTableMetaCache(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDSM := NewMockDataSourceManager(ctrl)
+ ctx := context.Background()
+ resID := "test-resource"
+ dbType := types.DBTypeMySQL
+ db := &sql.DB{}
+
+ expectedCache := datasource.TableMetaCache(nil)
+ mockDSM.EXPECT().CreateTableMetaCache(ctx, resID, dbType,
db).Return(expectedCache, nil)
+
+ cache, err := mockDSM.CreateTableMetaCache(ctx, resID, dbType, db)
+ assert.NoError(t, err)
+ assert.Equal(t, expectedCache, cache)
+}
+
+func TestMockDataSourceManager_GetSetBranchType(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDSM := NewMockDataSourceManager(ctrl)
+ expectedBranchType := branch.BranchTypeAT
+
+ mockDSM.SetBranchType(expectedBranchType)
+ branchType := mockDSM.GetBranchType()
+ assert.Equal(t, expectedBranchType, branchType)
+}
+
+func TestMockDataSourceManager_GetCachedResources(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDSM := NewMockDataSourceManager(ctrl)
+ expectedMap := &sync.Map{}
+
+ mockDSM.EXPECT().GetCachedResources().Return(expectedMap)
+
+ resources := mockDSM.GetCachedResources()
+ assert.Equal(t, expectedMap, resources)
+}
+
+func TestMockDataSourceManager_LockQuery(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDSM := NewMockDataSourceManager(ctrl)
+ ctx := context.Background()
+ param := rm.LockQueryParam{
+ Xid: "test-xid",
+ ResourceId: "test-resource",
+ LockKeys: "key1,key2",
+ }
+
+ expectedResult := true
+ mockDSM.EXPECT().LockQuery(ctx, param).Return(expectedResult, nil)
+
+ result, err := mockDSM.LockQuery(ctx, param)
+ assert.NoError(t, err)
+ assert.Equal(t, expectedResult, result)
+}
+
+func TestMockDataSourceManager_RegisterResource(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDSM := NewMockDataSourceManager(ctrl)
+ resource := rm.Resource(nil)
+
+ mockDSM.EXPECT().RegisterResource(resource).Return(nil)
+
+ err := mockDSM.RegisterResource(resource)
+ assert.NoError(t, err)
+}
+
+func TestMockDataSourceManager_UnregisterResource(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDSM := NewMockDataSourceManager(ctrl)
+ resource := rm.Resource(nil)
+
+ mockDSM.EXPECT().UnregisterResource(resource).Return(nil)
+
+ err := mockDSM.UnregisterResource(resource)
+ assert.NoError(t, err)
+}
diff --git a/pkg/datasource/sql/mock/mock_driver_components_test.go
b/pkg/datasource/sql/mock/mock_driver_components_test.go
new file mode 100644
index 00000000..c01192c6
--- /dev/null
+++ b/pkg/datasource/sql/mock/mock_driver_components_test.go
@@ -0,0 +1,203 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package mock
+
+import (
+ "context"
+ "database/sql/driver"
+ "testing"
+
+ "github.com/golang/mock/gomock"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestNewMockTestDriverStmt(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockStmt := NewMockTestDriverStmt(ctrl)
+ assert.NotNil(t, mockStmt)
+ assert.NotNil(t, mockStmt.EXPECT())
+}
+
+func TestMockTestDriverStmt_Close(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockStmt := NewMockTestDriverStmt(ctrl)
+
+ mockStmt.EXPECT().Close().Return(nil)
+
+ err := mockStmt.Close()
+ assert.NoError(t, err)
+}
+
+func TestMockTestDriverStmt_NumInput(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockStmt := NewMockTestDriverStmt(ctrl)
+ expectedNum := 2
+
+ mockStmt.EXPECT().NumInput().Return(expectedNum)
+
+ num := mockStmt.NumInput()
+ assert.Equal(t, expectedNum, num)
+}
+
+func TestMockTestDriverStmt_Exec(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockStmt := NewMockTestDriverStmt(ctrl)
+ args := []driver.Value{"test", 123}
+ result := driver.Result(nil)
+
+ mockStmt.EXPECT().Exec(args).Return(result, nil)
+
+ res, err := mockStmt.Exec(args)
+ assert.NoError(t, err)
+ assert.Equal(t, result, res)
+}
+
+func TestMockTestDriverStmt_ExecContext(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockStmt := NewMockTestDriverStmt(ctrl)
+ ctx := context.Background()
+ args := []driver.NamedValue{{Value: "test"}, {Value: 123}}
+ result := driver.Result(nil)
+
+ mockStmt.EXPECT().ExecContext(ctx, args).Return(result, nil)
+
+ res, err := mockStmt.ExecContext(ctx, args)
+ assert.NoError(t, err)
+ assert.Equal(t, result, res)
+}
+
+func TestMockTestDriverStmt_Query(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockStmt := NewMockTestDriverStmt(ctrl)
+ mockRows := NewMockTestDriverRows(ctrl)
+ args := []driver.Value{"test"}
+
+ mockStmt.EXPECT().Query(args).Return(mockRows, nil)
+
+ rows, err := mockStmt.Query(args)
+ assert.NoError(t, err)
+ assert.Equal(t, mockRows, rows)
+}
+
+func TestMockTestDriverStmt_QueryContext(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockStmt := NewMockTestDriverStmt(ctrl)
+ mockRows := NewMockTestDriverRows(ctrl)
+ ctx := context.Background()
+ args := []driver.NamedValue{{Value: "test"}}
+
+ mockStmt.EXPECT().QueryContext(ctx, args).Return(mockRows, nil)
+
+ rows, err := mockStmt.QueryContext(ctx, args)
+ assert.NoError(t, err)
+ assert.Equal(t, mockRows, rows)
+}
+
+func TestNewMockTestDriverTx(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockTx := NewMockTestDriverTx(ctrl)
+ assert.NotNil(t, mockTx)
+ assert.NotNil(t, mockTx.EXPECT())
+}
+
+func TestMockTestDriverTx_Commit(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockTx := NewMockTestDriverTx(ctrl)
+
+ mockTx.EXPECT().Commit().Return(nil)
+
+ err := mockTx.Commit()
+ assert.NoError(t, err)
+}
+
+func TestMockTestDriverTx_Rollback(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockTx := NewMockTestDriverTx(ctrl)
+
+ mockTx.EXPECT().Rollback().Return(nil)
+
+ err := mockTx.Rollback()
+ assert.NoError(t, err)
+}
+
+func TestNewMockTestDriverRows(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockRows := NewMockTestDriverRows(ctrl)
+ assert.NotNil(t, mockRows)
+ assert.NotNil(t, mockRows.EXPECT())
+}
+
+func TestMockTestDriverRows_Columns(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockRows := NewMockTestDriverRows(ctrl)
+ expectedColumns := []string{"id", "name", "age"}
+
+ mockRows.EXPECT().Columns().Return(expectedColumns)
+
+ columns := mockRows.Columns()
+ assert.Equal(t, expectedColumns, columns)
+}
+
+func TestMockTestDriverRows_Close(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockRows := NewMockTestDriverRows(ctrl)
+
+ mockRows.EXPECT().Close().Return(nil)
+
+ err := mockRows.Close()
+ assert.NoError(t, err)
+}
+
+func TestMockTestDriverRows_Next(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockRows := NewMockTestDriverRows(ctrl)
+ dest := make([]driver.Value, 3)
+
+ mockRows.EXPECT().Next(dest).Return(nil)
+
+ err := mockRows.Next(dest)
+ assert.NoError(t, err)
+}
diff --git a/pkg/datasource/sql/mock/mock_driver_test.go
b/pkg/datasource/sql/mock/mock_driver_test.go
new file mode 100644
index 00000000..fb538d9b
--- /dev/null
+++ b/pkg/datasource/sql/mock/mock_driver_test.go
@@ -0,0 +1,262 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package mock
+
+import (
+ "context"
+ "database/sql/driver"
+ "testing"
+
+ "github.com/golang/mock/gomock"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestNewMockTestDriver(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDriver := NewMockTestDriver(ctrl)
+ assert.NotNil(t, mockDriver)
+ assert.NotNil(t, mockDriver.EXPECT())
+}
+
+func TestMockTestDriver_Open(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockDriver := NewMockTestDriver(ctrl)
+ mockConn := NewMockTestDriverConn(ctrl)
+ dsn := "test:test@tcp(localhost:3306)/test"
+
+ mockDriver.EXPECT().Open(dsn).Return(mockConn, nil)
+
+ conn, err := mockDriver.Open(dsn)
+ assert.NoError(t, err)
+ assert.Equal(t, mockConn, conn)
+}
+
+func TestNewMockTestDriverConnector(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConnector := NewMockTestDriverConnector(ctrl)
+ assert.NotNil(t, mockConnector)
+ assert.NotNil(t, mockConnector.EXPECT())
+}
+
+func TestMockTestDriverConnector_Connect(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConnector := NewMockTestDriverConnector(ctrl)
+ mockConn := NewMockTestDriverConn(ctrl)
+ ctx := context.Background()
+
+ mockConnector.EXPECT().Connect(ctx).Return(mockConn, nil)
+
+ conn, err := mockConnector.Connect(ctx)
+ assert.NoError(t, err)
+ assert.Equal(t, mockConn, conn)
+}
+
+func TestMockTestDriverConnector_Driver(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConnector := NewMockTestDriverConnector(ctrl)
+ mockDriver := NewMockTestDriver(ctrl)
+
+ mockConnector.EXPECT().Driver().Return(mockDriver)
+
+ drv := mockConnector.Driver()
+ assert.Equal(t, mockDriver, drv)
+}
+
+func TestNewMockTestDriverConn(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConn := NewMockTestDriverConn(ctrl)
+ assert.NotNil(t, mockConn)
+ assert.NotNil(t, mockConn.EXPECT())
+}
+
+func TestMockTestDriverConn_Close(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConn := NewMockTestDriverConn(ctrl)
+
+ mockConn.EXPECT().Close().Return(nil)
+
+ err := mockConn.Close()
+ assert.NoError(t, err)
+}
+
+func TestMockTestDriverConn_Begin(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConn := NewMockTestDriverConn(ctrl)
+ mockTx := NewMockTestDriverTx(ctrl)
+
+ mockConn.EXPECT().Begin().Return(mockTx, nil)
+
+ tx, err := mockConn.Begin()
+ assert.NoError(t, err)
+ assert.Equal(t, mockTx, tx)
+}
+
+func TestMockTestDriverConn_BeginTx(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConn := NewMockTestDriverConn(ctrl)
+ mockTx := NewMockTestDriverTx(ctrl)
+ ctx := context.Background()
+ opts := driver.TxOptions{}
+
+ mockConn.EXPECT().BeginTx(ctx, opts).Return(mockTx, nil)
+
+ tx, err := mockConn.BeginTx(ctx, opts)
+ assert.NoError(t, err)
+ assert.Equal(t, mockTx, tx)
+}
+
+func TestMockTestDriverConn_Prepare(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConn := NewMockTestDriverConn(ctrl)
+ mockStmt := NewMockTestDriverStmt(ctrl)
+ query := "SELECT * FROM test WHERE id = ?"
+
+ mockConn.EXPECT().Prepare(query).Return(mockStmt, nil)
+
+ stmt, err := mockConn.Prepare(query)
+ assert.NoError(t, err)
+ assert.Equal(t, mockStmt, stmt)
+}
+
+func TestMockTestDriverConn_PrepareContext(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConn := NewMockTestDriverConn(ctrl)
+ mockStmt := NewMockTestDriverStmt(ctrl)
+ ctx := context.Background()
+ query := "SELECT * FROM test WHERE id = ?"
+
+ mockConn.EXPECT().PrepareContext(ctx, query).Return(mockStmt, nil)
+
+ stmt, err := mockConn.PrepareContext(ctx, query)
+ assert.NoError(t, err)
+ assert.Equal(t, mockStmt, stmt)
+}
+
+func TestMockTestDriverConn_Exec(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConn := NewMockTestDriverConn(ctrl)
+ query := "INSERT INTO test (name) VALUES (?)"
+ args := []driver.Value{"test"}
+ result := driver.Result(nil)
+
+ mockConn.EXPECT().Exec(query, args).Return(result, nil)
+
+ res, err := mockConn.Exec(query, args)
+ assert.NoError(t, err)
+ assert.Equal(t, result, res)
+}
+
+func TestMockTestDriverConn_ExecContext(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConn := NewMockTestDriverConn(ctrl)
+ ctx := context.Background()
+ query := "INSERT INTO test (name) VALUES (?)"
+ args := []driver.NamedValue{{Value: "test"}}
+ result := driver.Result(nil)
+
+ mockConn.EXPECT().ExecContext(ctx, query, args).Return(result, nil)
+
+ res, err := mockConn.ExecContext(ctx, query, args)
+ assert.NoError(t, err)
+ assert.Equal(t, result, res)
+}
+
+func TestMockTestDriverConn_Query(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConn := NewMockTestDriverConn(ctrl)
+ mockRows := NewMockTestDriverRows(ctrl)
+ query := "SELECT * FROM test"
+ args := []driver.Value{}
+
+ mockConn.EXPECT().Query(query, args).Return(mockRows, nil)
+
+ rows, err := mockConn.Query(query, args)
+ assert.NoError(t, err)
+ assert.Equal(t, mockRows, rows)
+}
+
+func TestMockTestDriverConn_QueryContext(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConn := NewMockTestDriverConn(ctrl)
+ mockRows := NewMockTestDriverRows(ctrl)
+ ctx := context.Background()
+ query := "SELECT * FROM test"
+ args := []driver.NamedValue{}
+
+ mockConn.EXPECT().QueryContext(ctx, query, args).Return(mockRows, nil)
+
+ rows, err := mockConn.QueryContext(ctx, query, args)
+ assert.NoError(t, err)
+ assert.Equal(t, mockRows, rows)
+}
+
+func TestMockTestDriverConn_Ping(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConn := NewMockTestDriverConn(ctrl)
+ ctx := context.Background()
+
+ mockConn.EXPECT().Ping(ctx).Return(nil)
+
+ err := mockConn.Ping(ctx)
+ assert.NoError(t, err)
+}
+
+func TestMockTestDriverConn_ResetSession(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockConn := NewMockTestDriverConn(ctrl)
+ ctx := context.Background()
+
+ mockConn.EXPECT().ResetSession(ctx).Return(nil)
+
+ err := mockConn.ResetSession(ctx)
+ assert.NoError(t, err)
+}
diff --git a/pkg/datasource/sql/mock/mock_table_meta_cache_test.go
b/pkg/datasource/sql/mock/mock_table_meta_cache_test.go
new file mode 100644
index 00000000..391e9909
--- /dev/null
+++ b/pkg/datasource/sql/mock/mock_table_meta_cache_test.go
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package mock
+
+import (
+ "context"
+ "database/sql"
+ "testing"
+
+ "github.com/golang/mock/gomock"
+ "github.com/stretchr/testify/assert"
+
+ "seata.apache.org/seata-go/pkg/datasource/sql/types"
+)
+
+func TestNewMockTableMetaCache(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockCache := NewMockTableMetaCache(ctrl)
+ assert.NotNil(t, mockCache)
+ assert.NotNil(t, mockCache.EXPECT())
+}
+
+func TestMockTableMetaCache_GetTableMeta(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockCache := NewMockTableMetaCache(ctrl)
+ ctx := context.Background()
+ dbName := "test_db"
+ tableName := "test_table"
+
+ expectedTableMeta := &types.TableMeta{
+ TableName: tableName,
+ Columns: map[string]types.ColumnMeta{
+ "id": {
+ ColumnName: "id",
+ ColumnType: "BIGINT",
+ },
+ },
+ }
+
+ mockCache.EXPECT().GetTableMeta(ctx, dbName,
tableName).Return(expectedTableMeta, nil)
+
+ tableMeta, err := mockCache.GetTableMeta(ctx, dbName, tableName)
+ assert.NoError(t, err)
+ assert.Equal(t, expectedTableMeta, tableMeta)
+ assert.Equal(t, tableName, tableMeta.TableName)
+}
+
+func TestMockTableMetaCache_Init(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockCache := NewMockTableMetaCache(ctrl)
+ ctx := context.Background()
+ db := &sql.DB{}
+
+ mockCache.EXPECT().Init(ctx, db).Return(nil)
+
+ err := mockCache.Init(ctx, db)
+ assert.NoError(t, err)
+}
+
+func TestMockTableMetaCache_Destroy(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ mockCache := NewMockTableMetaCache(ctrl)
+
+ mockCache.EXPECT().Destroy().Return(nil)
+
+ err := mockCache.Destroy()
+ assert.NoError(t, err)
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]