voucher-data #138
@ -2050,29 +2050,6 @@ func TestCheckVouchers(t *testing.T) {
 | 
				
			|||||||
	mockAccountService.AssertExpectations(t)
 | 
						mockAccountService.AssertExpectations(t)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestProcessVouchers(t *testing.T) {
 | 
					 | 
				
			||||||
	holdings := []struct {
 | 
					 | 
				
			||||||
		ContractAddress string `json:"contractAddress"`
 | 
					 | 
				
			||||||
		TokenSymbol     string `json:"tokenSymbol"`
 | 
					 | 
				
			||||||
		TokenDecimals   string `json:"tokenDecimals"`
 | 
					 | 
				
			||||||
		Balance         string `json:"balance"`
 | 
					 | 
				
			||||||
	}{
 | 
					 | 
				
			||||||
		{ContractAddress: "0xd4c288865Ce", TokenSymbol: "SRF", TokenDecimals: "6", Balance: "100"},
 | 
					 | 
				
			||||||
		{ContractAddress: "0x41c188d63Qa", TokenSymbol: "MILO", TokenDecimals: "4", Balance: "200"},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	expectedResult := VoucherMetadata{
 | 
					 | 
				
			||||||
		Symbol:  "1:SRF\n2:MILO",
 | 
					 | 
				
			||||||
		Balance: "1:100\n2:200",
 | 
					 | 
				
			||||||
		Decimal: "1:6\n2:4",
 | 
					 | 
				
			||||||
		Address: "1:0xd4c288865Ce\n2:0x41c188d63Qa",
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	result := processVouchers(holdings)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	assert.Equal(t, expectedResult, result)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestGetVoucherList(t *testing.T) {
 | 
					func TestGetVoucherList(t *testing.T) {
 | 
				
			||||||
	mockSubPrefixDb := new(mocks.MockSubPrefixDb)
 | 
						mockSubPrefixDb := new(mocks.MockSubPrefixDb)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2141,92 +2118,6 @@ func TestViewVoucher(t *testing.T) {
 | 
				
			|||||||
	mockSubPrefixDb.AssertExpectations(t)
 | 
						mockSubPrefixDb.AssertExpectations(t)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestGetVoucherData(t *testing.T) {
 | 
					 | 
				
			||||||
	mockSubPrefixDb := new(mocks.MockSubPrefixDb)
 | 
					 | 
				
			||||||
	ctx := context.Background()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Mocked voucher data
 | 
					 | 
				
			||||||
	mockData := map[string][]byte{
 | 
					 | 
				
			||||||
		"sym":  []byte("1:SRF\n2:MILO"),
 | 
					 | 
				
			||||||
		"bal":  []byte("1:100\n2:200"),
 | 
					 | 
				
			||||||
		"deci": []byte("1:6\n2:4"),
 | 
					 | 
				
			||||||
		"addr": []byte("1:0xd4c288865Ce\n2:0x41c188d63Qa"),
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Mock Get calls
 | 
					 | 
				
			||||||
	for key, value := range mockData {
 | 
					 | 
				
			||||||
		mockSubPrefixDb.On("Get", ctx, []byte(key)).Return(value, nil)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	result, err := getVoucherData(ctx, mockSubPrefixDb, "1")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	assert.NoError(t, err)
 | 
					 | 
				
			||||||
	assert.Equal(t, "SRF", result.Symbol)
 | 
					 | 
				
			||||||
	assert.Equal(t, "100", result.Balance)
 | 
					 | 
				
			||||||
	assert.Equal(t, "6", result.Decimal)
 | 
					 | 
				
			||||||
	assert.Equal(t, "0xd4c288865Ce", result.Address)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	mockSubPrefixDb.AssertExpectations(t)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestMatchVoucher(t *testing.T) {
 | 
					 | 
				
			||||||
	symbols := "1:SRF\n2:MILO"
 | 
					 | 
				
			||||||
	balances := "1:100\n2:200"
 | 
					 | 
				
			||||||
	decimals := "1:6\n2:4"
 | 
					 | 
				
			||||||
	addresses := "1:0xd4c288865Ce\n2:0x41c188d63Qa"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Test for valid voucher
 | 
					 | 
				
			||||||
	symbol, balance, decimal, address := matchVoucher("2", symbols, balances, decimals, addresses)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Assertions for valid voucher
 | 
					 | 
				
			||||||
	assert.Equal(t, "MILO", symbol)
 | 
					 | 
				
			||||||
	assert.Equal(t, "200", balance)
 | 
					 | 
				
			||||||
	assert.Equal(t, "4", decimal)
 | 
					 | 
				
			||||||
	assert.Equal(t, "0x41c188d63Qa", address)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Test for non-existent voucher
 | 
					 | 
				
			||||||
	symbol, balance, decimal, address = matchVoucher("3", symbols, balances, decimals, addresses)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Assertions for non-match
 | 
					 | 
				
			||||||
	assert.Equal(t, "", symbol)
 | 
					 | 
				
			||||||
	assert.Equal(t, "", balance)
 | 
					 | 
				
			||||||
	assert.Equal(t, "", decimal)
 | 
					 | 
				
			||||||
	assert.Equal(t, "", address)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestStoreTemporaryVoucher(t *testing.T) {
 | 
					 | 
				
			||||||
	mockDataStore := new(mocks.MockUserDataStore)
 | 
					 | 
				
			||||||
	ctx := context.Background()
 | 
					 | 
				
			||||||
	sessionId := "session123"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	voucherData := &VoucherMetadata{
 | 
					 | 
				
			||||||
		Symbol:  "SRF",
 | 
					 | 
				
			||||||
		Balance: "200",
 | 
					 | 
				
			||||||
		Decimal: "6",
 | 
					 | 
				
			||||||
		Address: "0xd4c288865Ce0985a481Eef3be02443dF5E2e4Ea9",
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Define expected entries to be written
 | 
					 | 
				
			||||||
	expectedEntries := map[utils.DataTyp][]byte{
 | 
					 | 
				
			||||||
		utils.DATA_TEMPORARY_SYM:     []byte("SRF"),
 | 
					 | 
				
			||||||
		utils.DATA_TEMPORARY_BAL:     []byte("200"),
 | 
					 | 
				
			||||||
		utils.DATA_TEMPORARY_DECIMAL: []byte("6"),
 | 
					 | 
				
			||||||
		utils.DATA_TEMPORARY_ADDRESS: []byte("0xd4c288865Ce0985a481Eef3be02443dF5E2e4Ea9"),
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Mock WriteEntry calls
 | 
					 | 
				
			||||||
	for key, value := range expectedEntries {
 | 
					 | 
				
			||||||
		mockDataStore.On("WriteEntry", ctx, sessionId, key, value).Return(nil)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	h := &Handlers{userdataStore: mockDataStore}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	err := h.storeTemporaryVoucher(ctx, sessionId, voucherData)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	assert.NoError(t, err)
 | 
					 | 
				
			||||||
	mockDataStore.AssertExpectations(t)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestSetVoucher(t *testing.T) {
 | 
					func TestSetVoucher(t *testing.T) {
 | 
				
			||||||
	mockDataStore := new(mocks.MockUserDataStore)
 | 
						mockDataStore := new(mocks.MockUserDataStore)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2285,63 +2176,3 @@ func TestSetVoucher(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	mockDataStore.AssertExpectations(t)
 | 
						mockDataStore.AssertExpectations(t)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestGetTemporaryVoucherData(t *testing.T) {
 | 
					 | 
				
			||||||
	mockDataStore := new(mocks.MockUserDataStore)
 | 
					 | 
				
			||||||
	sessionId := "session123"
 | 
					 | 
				
			||||||
	ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	h := &Handlers{userdataStore: mockDataStore}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Mock temporary voucher data
 | 
					 | 
				
			||||||
	tempData := &VoucherMetadata{
 | 
					 | 
				
			||||||
		Symbol:  "SRF",
 | 
					 | 
				
			||||||
		Balance: "100",
 | 
					 | 
				
			||||||
		Decimal: "6",
 | 
					 | 
				
			||||||
		Address: "0xd4c288865Ce",
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Set up mocks for reading entries
 | 
					 | 
				
			||||||
	mockDataStore.On("ReadEntry", ctx, sessionId, utils.DATA_TEMPORARY_SYM).Return([]byte(tempData.Symbol), nil)
 | 
					 | 
				
			||||||
	mockDataStore.On("ReadEntry", ctx, sessionId, utils.DATA_TEMPORARY_BAL).Return([]byte(tempData.Balance), nil)
 | 
					 | 
				
			||||||
	mockDataStore.On("ReadEntry", ctx, sessionId, utils.DATA_TEMPORARY_DECIMAL).Return([]byte(tempData.Decimal), nil)
 | 
					 | 
				
			||||||
	mockDataStore.On("ReadEntry", ctx, sessionId, utils.DATA_TEMPORARY_ADDRESS).Return([]byte(tempData.Address), nil)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	data, err := h.getTemporaryVoucherData(ctx, sessionId)
 | 
					 | 
				
			||||||
	assert.NoError(t, err)
 | 
					 | 
				
			||||||
	assert.Equal(t, tempData, data)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	mockDataStore.AssertExpectations(t)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestUpdateVoucherData(t *testing.T) {
 | 
					 | 
				
			||||||
	mockDataStore := new(mocks.MockUserDataStore)
 | 
					 | 
				
			||||||
	ctx := context.Background()
 | 
					 | 
				
			||||||
	sessionId := "session123"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	h := &Handlers{userdataStore: mockDataStore}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	data := &VoucherMetadata{
 | 
					 | 
				
			||||||
		Symbol:  "SRF",
 | 
					 | 
				
			||||||
		Balance: "100",
 | 
					 | 
				
			||||||
		Decimal: "6",
 | 
					 | 
				
			||||||
		Address: "0xd4c288865Ce",
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Mock WriteEntry for active data
 | 
					 | 
				
			||||||
	mockDataStore.On("WriteEntry", ctx, sessionId, utils.DATA_ACTIVE_SYM, []byte(data.Symbol)).Return(nil)
 | 
					 | 
				
			||||||
	mockDataStore.On("WriteEntry", ctx, sessionId, utils.DATA_ACTIVE_BAL, []byte(data.Balance)).Return(nil)
 | 
					 | 
				
			||||||
	mockDataStore.On("WriteEntry", ctx, sessionId, utils.DATA_ACTIVE_DECIMAL, []byte(data.Decimal)).Return(nil)
 | 
					 | 
				
			||||||
	mockDataStore.On("WriteEntry", ctx, sessionId, utils.DATA_ACTIVE_ADDRESS, []byte(data.Address)).Return(nil)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Mock WriteEntry for clearing temporary data
 | 
					 | 
				
			||||||
	mockDataStore.On("WriteEntry", ctx, sessionId, utils.DATA_TEMPORARY_SYM, []byte("")).Return(nil)
 | 
					 | 
				
			||||||
	mockDataStore.On("WriteEntry", ctx, sessionId, utils.DATA_TEMPORARY_BAL, []byte("")).Return(nil)
 | 
					 | 
				
			||||||
	mockDataStore.On("WriteEntry", ctx, sessionId, utils.DATA_TEMPORARY_DECIMAL, []byte("")).Return(nil)
 | 
					 | 
				
			||||||
	mockDataStore.On("WriteEntry", ctx, sessionId, utils.DATA_TEMPORARY_ADDRESS, []byte("")).Return(nil)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	err := h.updateVoucherData(ctx, sessionId, data)
 | 
					 | 
				
			||||||
	assert.NoError(t, err)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	mockDataStore.AssertExpectations(t)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										240
									
								
								internal/utils/vouchers_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										240
									
								
								internal/utils/vouchers_test.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,240 @@
 | 
				
			|||||||
 | 
					package utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.grassecon.net/urdt/ussd/internal/storage"
 | 
				
			||||||
 | 
						"github.com/alecthomas/assert/v2"
 | 
				
			||||||
 | 
						"github.com/stretchr/testify/require"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						memdb "git.defalsify.org/vise.git/db/mem"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// AssertEmptyValue checks if a value is empty/nil/zero
 | 
				
			||||||
 | 
					func AssertEmptyValue(t *testing.T, value []byte, msgAndArgs ...interface{}) {
 | 
				
			||||||
 | 
						assert.Equal(t, len(value), 0, msgAndArgs...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestMatchVoucher(t *testing.T) {
 | 
				
			||||||
 | 
						symbols := "1:SRF\n2:MILO"
 | 
				
			||||||
 | 
						balances := "1:100\n2:200"
 | 
				
			||||||
 | 
						decimals := "1:6\n2:4"
 | 
				
			||||||
 | 
						addresses := "1:0xd4c288865Ce\n2:0x41c188d63Qa"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Test for valid voucher
 | 
				
			||||||
 | 
						symbol, balance, decimal, address := MatchVoucher("2", symbols, balances, decimals, addresses)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Assertions for valid voucher
 | 
				
			||||||
 | 
						assert.Equal(t, "MILO", symbol)
 | 
				
			||||||
 | 
						assert.Equal(t, "200", balance)
 | 
				
			||||||
 | 
						assert.Equal(t, "4", decimal)
 | 
				
			||||||
 | 
						assert.Equal(t, "0x41c188d63Qa", address)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Test for non-existent voucher
 | 
				
			||||||
 | 
						symbol, balance, decimal, address = MatchVoucher("3", symbols, balances, decimals, addresses)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Assertions for non-match
 | 
				
			||||||
 | 
						assert.Equal(t, "", symbol)
 | 
				
			||||||
 | 
						assert.Equal(t, "", balance)
 | 
				
			||||||
 | 
						assert.Equal(t, "", decimal)
 | 
				
			||||||
 | 
						assert.Equal(t, "", address)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestProcessVouchers(t *testing.T) {
 | 
				
			||||||
 | 
						holdings := []struct {
 | 
				
			||||||
 | 
							ContractAddress string `json:"contractAddress"`
 | 
				
			||||||
 | 
							TokenSymbol     string `json:"tokenSymbol"`
 | 
				
			||||||
 | 
							TokenDecimals   string `json:"tokenDecimals"`
 | 
				
			||||||
 | 
							Balance         string `json:"balance"`
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							{ContractAddress: "0xd4c288865Ce", TokenSymbol: "SRF", TokenDecimals: "6", Balance: "100"},
 | 
				
			||||||
 | 
							{ContractAddress: "0x41c188d63Qa", TokenSymbol: "MILO", TokenDecimals: "4", Balance: "200"},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						expectedResult := VoucherMetadata{
 | 
				
			||||||
 | 
							Symbol:  "1:SRF\n2:MILO",
 | 
				
			||||||
 | 
							Balance: "1:100\n2:200",
 | 
				
			||||||
 | 
							Decimal: "1:6\n2:4",
 | 
				
			||||||
 | 
							Address: "1:0xd4c288865Ce\n2:0x41c188d63Qa",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						result := ProcessVouchers(holdings)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert.Equal(t, expectedResult, result)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestGetVoucherData(t *testing.T) {
 | 
				
			||||||
 | 
						ctx := context.Background()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						db := memdb.NewMemDb()
 | 
				
			||||||
 | 
						err := db.Connect(ctx, "")
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Fatal(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						spdb := storage.NewSubPrefixDb(db, []byte("vouchers"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Test voucher data
 | 
				
			||||||
 | 
						mockData := map[string][]byte{
 | 
				
			||||||
 | 
							"sym":  []byte("1:SRF\n2:MILO"),
 | 
				
			||||||
 | 
							"bal":  []byte("1:100\n2:200"),
 | 
				
			||||||
 | 
							"deci": []byte("1:6\n2:4"),
 | 
				
			||||||
 | 
							"addr": []byte("1:0xd4c288865Ce\n2:0x41c188d63Qa"),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Put the data
 | 
				
			||||||
 | 
						for key, value := range mockData {
 | 
				
			||||||
 | 
							err = spdb.Put(ctx, []byte(key), []byte(value))
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								t.Fatal(err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						result, err := GetVoucherData(ctx, spdb, "1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						assert.NoError(t, err)
 | 
				
			||||||
 | 
						assert.Equal(t, "SRF", result.Symbol)
 | 
				
			||||||
 | 
						assert.Equal(t, "100", result.Balance)
 | 
				
			||||||
 | 
						assert.Equal(t, "6", result.Decimal)
 | 
				
			||||||
 | 
						assert.Equal(t, "0xd4c288865Ce", result.Address)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestStoreTemporaryVoucher(t *testing.T) {
 | 
				
			||||||
 | 
						ctx := context.Background()
 | 
				
			||||||
 | 
						sessionId := "session123"
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						// Initialize memDb
 | 
				
			||||||
 | 
						db := memdb.NewMemDb()
 | 
				
			||||||
 | 
						err := db.Connect(ctx, "")
 | 
				
			||||||
 | 
						require.NoError(t, err)
 | 
				
			||||||
 | 
						defer db.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create UserDataStore with memDb
 | 
				
			||||||
 | 
						store := &UserDataStore{
 | 
				
			||||||
 | 
							Db: db,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Test data
 | 
				
			||||||
 | 
						voucherData := &VoucherMetadata{
 | 
				
			||||||
 | 
							Symbol:   "SRF",
 | 
				
			||||||
 | 
							Balance:  "200",
 | 
				
			||||||
 | 
							Decimal:  "6",
 | 
				
			||||||
 | 
							Address:  "0xd4c288865Ce0985a481Eef3be02443dF5E2e4Ea9",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Execute the function being tested
 | 
				
			||||||
 | 
						err = StoreTemporaryVoucher(ctx, store, sessionId, voucherData)
 | 
				
			||||||
 | 
						assert.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Verify stored data
 | 
				
			||||||
 | 
						expectedEntries := map[DataTyp][]byte{
 | 
				
			||||||
 | 
							DATA_TEMPORARY_SYM:     []byte("SRF"),
 | 
				
			||||||
 | 
							DATA_TEMPORARY_BAL:     []byte("200"),
 | 
				
			||||||
 | 
							DATA_TEMPORARY_DECIMAL: []byte("6"),
 | 
				
			||||||
 | 
							DATA_TEMPORARY_ADDRESS: []byte("0xd4c288865Ce0985a481Eef3be02443dF5E2e4Ea9"),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for key, expectedValue := range expectedEntries {
 | 
				
			||||||
 | 
							storedValue, err := store.ReadEntry(ctx, sessionId, key)
 | 
				
			||||||
 | 
							assert.NoError(t, err)
 | 
				
			||||||
 | 
							assert.Equal(t, expectedValue, storedValue, "Mismatch for key %v", key)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestGetTemporaryVoucherData(t *testing.T) {
 | 
				
			||||||
 | 
						sessionId := "session123"
 | 
				
			||||||
 | 
						ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Initialize memDb
 | 
				
			||||||
 | 
						db := memdb.NewMemDb()
 | 
				
			||||||
 | 
						err := db.Connect(ctx, "")
 | 
				
			||||||
 | 
						require.NoError(t, err)
 | 
				
			||||||
 | 
						defer db.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create UserDataStore with memDb
 | 
				
			||||||
 | 
						store := &UserDataStore{
 | 
				
			||||||
 | 
							Db: db,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Test voucher data
 | 
				
			||||||
 | 
						tempData := &VoucherMetadata{
 | 
				
			||||||
 | 
							Symbol:   "SRF",
 | 
				
			||||||
 | 
							Balance:  "200",
 | 
				
			||||||
 | 
							Decimal:  "6",
 | 
				
			||||||
 | 
							Address:  "0xd4c288865Ce0985a481Eef3be02443dF5E2e4Ea9",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// store the data
 | 
				
			||||||
 | 
						err = StoreTemporaryVoucher(ctx, store, sessionId, tempData)
 | 
				
			||||||
 | 
						assert.NoError(t, err)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						// Execute the function being tested
 | 
				
			||||||
 | 
						data, err := GetTemporaryVoucherData(ctx, store, sessionId)
 | 
				
			||||||
 | 
						assert.NoError(t, err)
 | 
				
			||||||
 | 
						assert.Equal(t, tempData, data)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestUpdateVoucherData(t *testing.T) {
 | 
				
			||||||
 | 
						sessionId := "session123"
 | 
				
			||||||
 | 
						ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Initialize memDb
 | 
				
			||||||
 | 
						db := memdb.NewMemDb()
 | 
				
			||||||
 | 
						err := db.Connect(ctx, "")
 | 
				
			||||||
 | 
						require.NoError(t, err)
 | 
				
			||||||
 | 
						defer db.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						store := &UserDataStore{
 | 
				
			||||||
 | 
							Db: db,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Test data
 | 
				
			||||||
 | 
						data := &VoucherMetadata{
 | 
				
			||||||
 | 
							Symbol:   "SRF",
 | 
				
			||||||
 | 
							Balance:  "200",
 | 
				
			||||||
 | 
							Decimal:  "6",
 | 
				
			||||||
 | 
							Address:  "0xd4c288865Ce0985a481Eef3be02443dF5E2e4Ea9",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// First store some temporary data to verify it gets cleared
 | 
				
			||||||
 | 
						tempData := &VoucherMetadata{
 | 
				
			||||||
 | 
							Symbol:   "OLD",
 | 
				
			||||||
 | 
							Balance:  "100",
 | 
				
			||||||
 | 
							Decimal:  "8",
 | 
				
			||||||
 | 
							Address:  "0xold",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						err = StoreTemporaryVoucher(ctx, store, sessionId, tempData)
 | 
				
			||||||
 | 
						require.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Execute update
 | 
				
			||||||
 | 
						err = UpdateVoucherData(ctx, store, sessionId, data)
 | 
				
			||||||
 | 
						assert.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Verify active data was stored correctly
 | 
				
			||||||
 | 
						activeEntries := map[DataTyp][]byte{
 | 
				
			||||||
 | 
							DATA_ACTIVE_SYM:     []byte(data.Symbol),
 | 
				
			||||||
 | 
							DATA_ACTIVE_BAL:     []byte(data.Balance),
 | 
				
			||||||
 | 
							DATA_ACTIVE_DECIMAL: []byte(data.Decimal),
 | 
				
			||||||
 | 
							DATA_ACTIVE_ADDRESS: []byte(data.Address),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for key, expectedValue := range activeEntries {
 | 
				
			||||||
 | 
							storedValue, err := store.ReadEntry(ctx, sessionId, key)
 | 
				
			||||||
 | 
							assert.NoError(t, err)
 | 
				
			||||||
 | 
							assert.Equal(t, expectedValue, storedValue, "Active data mismatch for key %v", key)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Verify temporary data was cleared
 | 
				
			||||||
 | 
						tempKeys := []DataTyp{
 | 
				
			||||||
 | 
							DATA_TEMPORARY_SYM,
 | 
				
			||||||
 | 
							DATA_TEMPORARY_BAL,
 | 
				
			||||||
 | 
							DATA_TEMPORARY_DECIMAL,
 | 
				
			||||||
 | 
							DATA_TEMPORARY_ADDRESS,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, key := range tempKeys {
 | 
				
			||||||
 | 
							storedValue, err := store.ReadEntry(ctx, sessionId, key)
 | 
				
			||||||
 | 
							assert.NoError(t, err)
 | 
				
			||||||
 | 
							AssertEmptyValue(t, storedValue, "Temporary data not cleared for key %v", key)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user