github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/topic/topicreaderinternal/transaction_mock_test.go (about) 1 package topicreaderinternal 2 3 import ( 4 "context" 5 6 "github.com/ydb-platform/ydb-go-sdk/v3/internal/query" 7 "github.com/ydb-platform/ydb-go-sdk/v3/internal/tx" 8 ) 9 10 func newMockTransactionWrapper(sessionID, transactinID string) *mockTransaction { 11 return &mockTransaction{ 12 Identifier: tx.ID("lazy-id"), 13 materializedID: tx.ID(transactinID), 14 sessionID: sessionID, 15 onCompleted: nil, 16 } 17 } 18 19 type mockTransaction struct { //nolint:maligned 20 tx.Identifier 21 materializedID tx.Identifier 22 materialized bool 23 sessionID string 24 onCompleted []tx.OnTransactionCompletedFunc 25 RolledBack bool 26 } 27 28 func (m *mockTransaction) UnLazy(_ context.Context) error { 29 m.materialized = true 30 m.Identifier = m.materializedID 31 32 return nil 33 } 34 35 func (m *mockTransaction) SessionID() string { 36 return m.sessionID 37 } 38 39 func (m *mockTransaction) OnBeforeCommit(f tx.OnTransactionBeforeCommit) { 40 } 41 42 func (m *mockTransaction) OnCompleted(f tx.OnTransactionCompletedFunc) { 43 m.onCompleted = append(m.onCompleted, f) 44 } 45 46 func (m *mockTransaction) Rollback(ctx context.Context) error { 47 m.RolledBack = true 48 for _, f := range m.onCompleted { 49 f(query.ErrTransactionRollingBack) 50 } 51 52 return nil 53 }