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  }