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  }