github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/istructsmem/internal/qnames/provide_test.go (about)

     1  /*
     2   * Copyright (c) 2021-present Sigma-Soft, Ltd.
     3   * @author: Nikolay Nikitin
     4   */
     5  
     6  package qnames
     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 TestQNamesBasicUsage(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 := appdef.NewQName("test", "doc")
    30  	app := appdef.New()
    31  	d := app.AddCDoc(testName)
    32  	d.AddField("f1", appdef.DataKind_int64, false)
    33  	d.AddUnique(appdef.UniqueQName(testName, "f1"), []appdef.FieldName{"f1"})
    34  	appDef, err := app.Build()
    35  	if err != nil {
    36  		panic(err)
    37  	}
    38  
    39  	resources := istructs.IResources(nil) //TODO: add test resources
    40  
    41  	names := New()
    42  	if err := names.Prepare(storage, versions, appDef, resources); err != nil {
    43  		panic(err)
    44  	}
    45  
    46  	require := require.New(t)
    47  	t.Run("basic QNames methods", func(t *testing.T) {
    48  		id, err := names.ID(testName)
    49  		require.NoError(err)
    50  		require.NotEqual(NullQNameID, id)
    51  
    52  		n, err := names.QName(id)
    53  		require.NoError(err)
    54  		require.Equal(testName, n)
    55  
    56  		t.Run("must be able to load early stored names", func(t *testing.T) {
    57  			otherVersions := vers.New()
    58  			if err := otherVersions.Prepare(storage); err != nil {
    59  				panic(err)
    60  			}
    61  
    62  			otherNames := New()
    63  			if err := otherNames.Prepare(storage, versions, nil, nil); err != nil {
    64  				panic(err)
    65  			}
    66  
    67  			id1, err := names.ID(testName)
    68  			require.NoError(err)
    69  			require.Equal(id, id1)
    70  
    71  			n1, err := names.QName(id)
    72  			require.NoError(err)
    73  			require.Equal(testName, n1)
    74  		})
    75  	})
    76  }