updated the correct swap data keys and use the userstore instead of the prefixdb
This commit is contained in:
parent
126415050c
commit
c8159113f0
@ -37,9 +37,9 @@ func ReadSwapData(ctx context.Context, store DataStore, sessionId string) (SwapD
|
|||||||
fieldToKey := map[string]storedb.DataTyp{
|
fieldToKey := map[string]storedb.DataTyp{
|
||||||
"PublicKey": storedb.DATA_PUBLIC_KEY,
|
"PublicKey": storedb.DATA_PUBLIC_KEY,
|
||||||
"ActivePoolAddress": storedb.DATA_ACTIVE_POOL_ADDRESS,
|
"ActivePoolAddress": storedb.DATA_ACTIVE_POOL_ADDRESS,
|
||||||
"ActiveSwapFromSym": storedb.DATA_ACTIVE_SWAP_FROM_SYM,
|
"ActiveSwapFromSym": storedb.DATA_ACTIVE_SYM,
|
||||||
"ActiveSwapFromDecimal": storedb.DATA_ACTIVE_SWAP_FROM_DECIMAL,
|
"ActiveSwapFromDecimal": storedb.DATA_ACTIVE_DECIMAL,
|
||||||
"ActiveSwapFromAddress": storedb.DATA_ACTIVE_SWAP_FROM_ADDRESS,
|
"ActiveSwapFromAddress": storedb.DATA_ACTIVE_ADDRESS,
|
||||||
"ActiveSwapToSym": storedb.DATA_ACTIVE_SWAP_TO_SYM,
|
"ActiveSwapToSym": storedb.DATA_ACTIVE_SWAP_TO_SYM,
|
||||||
"ActiveSwapToAddress": storedb.DATA_ACTIVE_SWAP_TO_ADDRESS,
|
"ActiveSwapToAddress": storedb.DATA_ACTIVE_SWAP_TO_ADDRESS,
|
||||||
}
|
}
|
||||||
@ -66,10 +66,10 @@ func ReadSwapPreviewData(ctx context.Context, store DataStore, sessionId string)
|
|||||||
fieldToKey := map[string]storedb.DataTyp{
|
fieldToKey := map[string]storedb.DataTyp{
|
||||||
"PublicKey": storedb.DATA_PUBLIC_KEY,
|
"PublicKey": storedb.DATA_PUBLIC_KEY,
|
||||||
"ActiveSwapMaxAmount": storedb.DATA_ACTIVE_SWAP_MAX_AMOUNT,
|
"ActiveSwapMaxAmount": storedb.DATA_ACTIVE_SWAP_MAX_AMOUNT,
|
||||||
"ActiveSwapFromDecimal": storedb.DATA_ACTIVE_SWAP_FROM_DECIMAL,
|
"ActiveSwapFromDecimal": storedb.DATA_ACTIVE_DECIMAL,
|
||||||
"ActivePoolAddress": storedb.DATA_ACTIVE_POOL_ADDRESS,
|
"ActivePoolAddress": storedb.DATA_ACTIVE_POOL_ADDRESS,
|
||||||
"ActiveSwapFromAddress": storedb.DATA_ACTIVE_SWAP_FROM_ADDRESS,
|
"ActiveSwapFromAddress": storedb.DATA_ACTIVE_ADDRESS,
|
||||||
"ActiveSwapFromSym": storedb.DATA_ACTIVE_SWAP_FROM_SYM,
|
"ActiveSwapFromSym": storedb.DATA_ACTIVE_SYM,
|
||||||
"ActiveSwapToAddress": storedb.DATA_ACTIVE_SWAP_TO_ADDRESS,
|
"ActiveSwapToAddress": storedb.DATA_ACTIVE_SWAP_TO_ADDRESS,
|
||||||
"ActiveSwapToSym": storedb.DATA_ACTIVE_SWAP_TO_SYM,
|
"ActiveSwapToSym": storedb.DATA_ACTIVE_SWAP_TO_SYM,
|
||||||
"ActiveSwapToDecimal": storedb.DATA_ACTIVE_SWAP_TO_DECIMAL,
|
"ActiveSwapToDecimal": storedb.DATA_ACTIVE_SWAP_TO_DECIMAL,
|
||||||
@ -93,7 +93,7 @@ func ReadSwapPreviewData(ctx context.Context, store DataStore, sessionId string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetSwapFromVoucherData retrieves and matches swap from voucher data
|
// GetSwapFromVoucherData retrieves and matches swap from voucher data
|
||||||
func GetSwapFromVoucherData(ctx context.Context, db storedb.PrefixDb, input string) (*dataserviceapi.TokenHoldings, error) {
|
func GetSwapFromVoucherData(ctx context.Context, store DataStore, sessionId string, input string) (*dataserviceapi.TokenHoldings, error) {
|
||||||
keys := []storedb.DataTyp{
|
keys := []storedb.DataTyp{
|
||||||
storedb.DATA_POOL_FROM_SYMBOLS,
|
storedb.DATA_POOL_FROM_SYMBOLS,
|
||||||
storedb.DATA_POOL_FROM_BALANCES,
|
storedb.DATA_POOL_FROM_BALANCES,
|
||||||
@ -103,9 +103,9 @@ func GetSwapFromVoucherData(ctx context.Context, db storedb.PrefixDb, input stri
|
|||||||
data := make(map[storedb.DataTyp]string)
|
data := make(map[storedb.DataTyp]string)
|
||||||
|
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
value, err := db.Get(ctx, storedb.ToBytes(key))
|
value, err := store.ReadEntry(ctx, sessionId, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to get prefix key %x: %v", storedb.ToBytes(key), err)
|
return nil, fmt.Errorf("failed to get data key %x: %v", key, err)
|
||||||
}
|
}
|
||||||
data[key] = string(value)
|
data[key] = string(value)
|
||||||
}
|
}
|
||||||
@ -129,28 +129,8 @@ func GetSwapFromVoucherData(ctx context.Context, db storedb.PrefixDb, input stri
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateSwapFromVoucherData updates the active swap to voucher data in the DataStore.
|
|
||||||
func UpdateSwapFromVoucherData(ctx context.Context, store DataStore, sessionId string, data *dataserviceapi.TokenHoldings) error {
|
|
||||||
logg.TraceCtxf(ctx, "dtal", "data", data)
|
|
||||||
// Active swap from voucher data entries
|
|
||||||
activeEntries := map[storedb.DataTyp][]byte{
|
|
||||||
storedb.DATA_ACTIVE_SWAP_FROM_SYM: []byte(data.TokenSymbol),
|
|
||||||
storedb.DATA_ACTIVE_SWAP_FROM_DECIMAL: []byte(data.TokenDecimals),
|
|
||||||
storedb.DATA_ACTIVE_SWAP_FROM_ADDRESS: []byte(data.ContractAddress),
|
|
||||||
}
|
|
||||||
|
|
||||||
// Write active data
|
|
||||||
for key, value := range activeEntries {
|
|
||||||
if err := store.WriteEntry(ctx, sessionId, key, value); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSwapToVoucherData retrieves and matches voucher data
|
// GetSwapToVoucherData retrieves and matches voucher data
|
||||||
func GetSwapToVoucherData(ctx context.Context, db storedb.PrefixDb, input string) (*dataserviceapi.TokenHoldings, error) {
|
func GetSwapToVoucherData(ctx context.Context, store DataStore, sessionId string, input string) (*dataserviceapi.TokenHoldings, error) {
|
||||||
keys := []storedb.DataTyp{
|
keys := []storedb.DataTyp{
|
||||||
storedb.DATA_POOL_TO_SYMBOLS,
|
storedb.DATA_POOL_TO_SYMBOLS,
|
||||||
storedb.DATA_POOL_TO_BALANCES,
|
storedb.DATA_POOL_TO_BALANCES,
|
||||||
@ -160,9 +140,9 @@ func GetSwapToVoucherData(ctx context.Context, db storedb.PrefixDb, input string
|
|||||||
data := make(map[storedb.DataTyp]string)
|
data := make(map[storedb.DataTyp]string)
|
||||||
|
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
value, err := db.Get(ctx, storedb.ToBytes(key))
|
value, err := store.ReadEntry(ctx, sessionId, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to get prefix key %x: %v", storedb.ToBytes(key), err)
|
return nil, fmt.Errorf("failed to get data key %x: %v", key, err)
|
||||||
}
|
}
|
||||||
data[key] = string(value)
|
data[key] = string(value)
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,10 @@
|
|||||||
package store
|
package store
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
visedb "git.defalsify.org/vise.git/db"
|
|
||||||
memdb "git.defalsify.org/vise.git/db/mem"
|
|
||||||
storedb "git.grassecon.net/grassrootseconomics/sarafu-vise/store/db"
|
storedb "git.grassecon.net/grassrootseconomics/sarafu-vise/store/db"
|
||||||
"github.com/alecthomas/assert/v2"
|
"github.com/alecthomas/assert/v2"
|
||||||
dataserviceapi "github.com/grassrootseconomics/ussd-data-service/pkg/api"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestReadSwapData(t *testing.T) {
|
func TestReadSwapData(t *testing.T) {
|
||||||
@ -95,16 +90,8 @@ func TestReadSwapPreviewData(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetSwapFromVoucherData(t *testing.T) {
|
func TestGetSwapFromVoucherData(t *testing.T) {
|
||||||
ctx := context.Background()
|
sessionId := "session123"
|
||||||
|
ctx, store := InitializeTestDb(t)
|
||||||
db := memdb.NewMemDb()
|
|
||||||
err := db.Connect(ctx, "")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
prefix := storedb.ToBytes(visedb.DATATYPE_USERDATA)
|
|
||||||
spdb := storedb.NewSubPrefixDb(db, prefix)
|
|
||||||
|
|
||||||
// Test pool swap data
|
// Test pool swap data
|
||||||
mockData := map[storedb.DataTyp][]byte{
|
mockData := map[storedb.DataTyp][]byte{
|
||||||
@ -116,13 +103,12 @@ func TestGetSwapFromVoucherData(t *testing.T) {
|
|||||||
|
|
||||||
// Put the data
|
// Put the data
|
||||||
for key, value := range mockData {
|
for key, value := range mockData {
|
||||||
err = spdb.Put(ctx, []byte(storedb.ToBytes(key)), []byte(value))
|
if err := store.WriteEntry(ctx, sessionId, key, []byte(value)); err != nil {
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result, err := GetSwapFromVoucherData(ctx, spdb, "1")
|
result, err := GetSwapFromVoucherData(ctx, store, sessionId, "1")
|
||||||
|
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "AMANI", result.TokenSymbol)
|
assert.Equal(t, "AMANI", result.TokenSymbol)
|
||||||
@ -131,54 +117,9 @@ func TestGetSwapFromVoucherData(t *testing.T) {
|
|||||||
assert.Equal(t, "0xc7B78Ac9ACB9E025C8234621FC515bC58179dEAe", result.ContractAddress)
|
assert.Equal(t, "0xc7B78Ac9ACB9E025C8234621FC515bC58179dEAe", result.ContractAddress)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateSwapFromVoucherData(t *testing.T) {
|
|
||||||
ctx, store := InitializeTestDb(t)
|
|
||||||
sessionId := "session123"
|
|
||||||
|
|
||||||
// New swap from voucher data
|
|
||||||
newData := &dataserviceapi.TokenHoldings{
|
|
||||||
TokenSymbol: "AMANI",
|
|
||||||
TokenDecimals: "6",
|
|
||||||
ContractAddress: "0xc7B78Ac9ACB9E025C8234621FC515bC58179dEAe",
|
|
||||||
}
|
|
||||||
|
|
||||||
// Old temporary data
|
|
||||||
tempData := &dataserviceapi.TokenHoldings{
|
|
||||||
TokenSymbol: "OLD",
|
|
||||||
TokenDecimals: "8",
|
|
||||||
ContractAddress: "0xold",
|
|
||||||
}
|
|
||||||
require.NoError(t, StoreTemporaryVoucher(ctx, store, sessionId, tempData))
|
|
||||||
|
|
||||||
// Execute update
|
|
||||||
err := UpdateSwapFromVoucherData(ctx, store, sessionId, newData)
|
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
// Verify active swap from data was stored correctly
|
|
||||||
activeEntries := map[storedb.DataTyp][]byte{
|
|
||||||
storedb.DATA_ACTIVE_SWAP_FROM_SYM: []byte(newData.TokenSymbol),
|
|
||||||
storedb.DATA_ACTIVE_SWAP_FROM_DECIMAL: []byte(newData.TokenDecimals),
|
|
||||||
storedb.DATA_ACTIVE_SWAP_FROM_ADDRESS: []byte(newData.ContractAddress),
|
|
||||||
}
|
|
||||||
|
|
||||||
for key, expectedValue := range activeEntries {
|
|
||||||
storedValue, err := store.ReadEntry(ctx, sessionId, key)
|
|
||||||
require.NoError(t, err)
|
|
||||||
require.Equal(t, expectedValue, storedValue, "Active swap from data mismatch for key %v", key)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetSwapToVoucherData(t *testing.T) {
|
func TestGetSwapToVoucherData(t *testing.T) {
|
||||||
ctx := context.Background()
|
sessionId := "session123"
|
||||||
|
ctx, store := InitializeTestDb(t)
|
||||||
db := memdb.NewMemDb()
|
|
||||||
err := db.Connect(ctx, "")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
prefix := storedb.ToBytes(visedb.DATATYPE_USERDATA)
|
|
||||||
spdb := storedb.NewSubPrefixDb(db, prefix)
|
|
||||||
|
|
||||||
// Test pool swap data
|
// Test pool swap data
|
||||||
mockData := map[storedb.DataTyp][]byte{
|
mockData := map[storedb.DataTyp][]byte{
|
||||||
@ -190,17 +131,16 @@ func TestGetSwapToVoucherData(t *testing.T) {
|
|||||||
|
|
||||||
// Put the data
|
// Put the data
|
||||||
for key, value := range mockData {
|
for key, value := range mockData {
|
||||||
err = spdb.Put(ctx, []byte(storedb.ToBytes(key)), []byte(value))
|
if err := store.WriteEntry(ctx, sessionId, key, []byte(value)); err != nil {
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result, err := GetSwapToVoucherData(ctx, spdb, "1")
|
result, err := GetSwapToVoucherData(ctx, store, sessionId, "1")
|
||||||
|
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "cUSD", result.TokenSymbol)
|
assert.Equal(t, "cUSD", result.TokenSymbol)
|
||||||
assert.Equal(t, "", result.Balance)
|
assert.Equal(t, "", result.Balance)
|
||||||
assert.Equal(t, "6", result.TokenDecimals)
|
assert.Equal(t, "6", result.TokenDecimals)
|
||||||
assert.Equal(t, "0xc7B78Ac9ACB9E025C8234621", result.ContractAddress)
|
assert.Equal(t, "0xc7B78Ac9ACB9E025C8234621", result.ContractAddress)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user