github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/istorage/bbolt/impl_test.go (about)

     1  /*
     2   * Copyright (c) 2022-present Sigma-Soft, Ltd.
     3   * @author: Dmitry Molchanovsky
     4   * @author: Maxim Geraskin (refactoring)
     5   */
     6  
     7  package bbolt
     8  
     9  import (
    10  	"os"
    11  	"testing"
    12  
    13  	"github.com/stretchr/testify/require"
    14  
    15  	"github.com/voedger/voedger/pkg/istorage"
    16  	istorageimpl "github.com/voedger/voedger/pkg/istorage/provider"
    17  	"github.com/voedger/voedger/pkg/istructs"
    18  )
    19  
    20  func TestBasicUsage(t *testing.T) {
    21  	params := prepareTestData()
    22  	defer cleanupTestData(params)
    23  	factory := Provide(params)
    24  	istorage.TechnologyCompatibilityKit(t, factory)
    25  }
    26  
    27  func Test_MyTestBasicUsage(t *testing.T) {
    28  	require := require.New(t)
    29  
    30  	params := prepareTestData()
    31  	defer cleanupTestData(params)
    32  
    33  	// creating a StorageProvider
    34  	factory := Provide(params)
    35  	storageProvider := istorageimpl.Provide(factory)
    36  
    37  	// get the required AppStorage for the app
    38  	appStorage, err := storageProvider.AppStorage(istructs.AppQName_test1_app1)
    39  	require.NoError(err)
    40  
    41  	// write the application data to the database
    42  	err = appStorage.Put([]byte("pKey"), []byte("cCols"), []byte("test data string"))
    43  	require.NoError(err)
    44  
    45  	// read the data from the database
    46  	value := make([]byte, 0)
    47  	ok, err := appStorage.Get([]byte("pKey"), []byte("cCols"), &value)
    48  	require.True(ok)
    49  	require.NoError(err)
    50  	require.Equal([]byte("test data string"), value)
    51  }
    52  
    53  func prepareTestData() (params ParamsType) {
    54  	dbDir, err := os.MkdirTemp("", "bolt")
    55  	if err != nil {
    56  		panic(err)
    57  	}
    58  	params.DBDir = dbDir
    59  	return
    60  }
    61  
    62  func cleanupTestData(params ParamsType) {
    63  	if params.DBDir != "" {
    64  		os.RemoveAll(params.DBDir)
    65  		params.DBDir = ""
    66  	}
    67  }
    68  
    69  func Test_PutGet(t *testing.T) {
    70  	require := require.New(t)
    71  
    72  	params := prepareTestData()
    73  	defer cleanupTestData(params)
    74  
    75  	factory := Provide(params)
    76  	storageProvider := istorageimpl.Provide(factory)
    77  
    78  	appStorage, err := storageProvider.AppStorage(istructs.AppQName_test1_app1)
    79  	require.NoError(err)
    80  
    81  	err = appStorage.Put([]byte("persons"), []byte("NNV"), []byte("Nikitin Nikolay Valeryevich"))
    82  	require.NoError(err)
    83  
    84  	err = appStorage.Put([]byte("persons"), []byte("MDA"), []byte("Molchanovsky Dmitry Anatolyevich"))
    85  	require.NoError(err)
    86  
    87  	value := make([]byte, 0)
    88  
    89  	ok, err := appStorage.Get([]byte("persons"), []byte("NNV"), &value)
    90  	require.NoError(err)
    91  	require.True(ok)
    92  	require.Equal("Nikitin Nikolay Valeryevich", string(value))
    93  
    94  	ok, err = appStorage.Get([]byte("persons"), []byte("MDA"), &value)
    95  	require.NoError(err)
    96  	require.True(ok)
    97  	require.Equal("Molchanovsky Dmitry Anatolyevich", string(value))
    98  }