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 }