github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/istructsmem/internal/containers/provide_test.go (about) 1 /* 2 * Copyright (c) 2021-present Sigma-Soft, Ltd. 3 * @author: Nikolay Nikitin 4 */ 5 6 package containers 7 8 import ( 9 "testing" 10 11 "github.com/stretchr/testify/require" 12 13 "github.com/voedger/voedger/pkg/appdef" 14 "github.com/voedger/voedger/pkg/istorage/mem" 15 istorageimpl "github.com/voedger/voedger/pkg/istorage/provider" 16 "github.com/voedger/voedger/pkg/istructs" 17 "github.com/voedger/voedger/pkg/istructsmem/internal/vers" 18 ) 19 20 func Test_BasicUsage(t *testing.T) { 21 sp := istorageimpl.Provide(mem.Provide()) 22 storage, _ := sp.AppStorage(istructs.AppQName_test1_app1) 23 24 versions := vers.New() 25 if err := versions.Prepare(storage); err != nil { 26 panic(err) 27 } 28 29 testName := "test" 30 adb := appdef.New() 31 adb.AddPackage("test", "test.com/test") 32 33 adb.AddObject(appdef.NewQName("test", "obj")). 34 AddContainer(testName, appdef.NewQName("test", "obj"), 0, appdef.Occurs_Unbounded) 35 appDef, err := adb.Build() 36 if err != nil { 37 panic(err) 38 } 39 40 containers := New() 41 if err := containers.Prepare(storage, versions, appDef); err != nil { 42 panic(err) 43 } 44 45 require := require.New(t) 46 t.Run("basic Containers methods", func(t *testing.T) { 47 id, err := containers.ID(testName) 48 require.NoError(err) 49 require.NotEqual(NullContainerID, id) 50 51 n, err := containers.Container(id) 52 require.NoError(err) 53 require.Equal(testName, n) 54 55 t.Run("must be able to load early stored names", func(t *testing.T) { 56 otherVersions := vers.New() 57 if err := otherVersions.Prepare(storage); err != nil { 58 panic(err) 59 } 60 61 otherContainers := New() 62 if err := otherContainers.Prepare(storage, versions, nil); err != nil { 63 panic(err) 64 } 65 66 id1, err := containers.ID(testName) 67 require.NoError(err) 68 require.Equal(id, id1) 69 70 n1, err := containers.Container(id) 71 require.NoError(err) 72 require.Equal(testName, n1) 73 }) 74 }) 75 }