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

     1  /*
     2   * Copyright (c) 2021-present Sigma-Soft, Ltd.
     3   * @author: Nikolay Nikitin
     4   */
     5  
     6  package qrename
     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/istructsmem/internal/qnames"
    15  	"github.com/voedger/voedger/pkg/istructsmem/internal/teststore"
    16  	"github.com/voedger/voedger/pkg/istructsmem/internal/vers"
    17  )
    18  
    19  func TestRenameQName(t *testing.T) {
    20  
    21  	require := require.New(t)
    22  
    23  	oldQName := appdef.NewQName("test", "old")
    24  	newQName := appdef.NewQName("test", "new")
    25  
    26  	storage := teststore.NewStorage()
    27  
    28  	t.Run("prepare storage with old QName", func(t *testing.T) {
    29  		versions := vers.New()
    30  		err := versions.Prepare(storage)
    31  		require.NoError(err)
    32  
    33  		adb := appdef.New()
    34  		adb.AddPackage("test", "test.com/test")
    35  
    36  		_ = adb.AddObject(oldQName)
    37  		appDef, err := adb.Build()
    38  		require.NoError(err)
    39  
    40  		names := qnames.New()
    41  		err = names.Prepare(storage, versions, appDef, nil)
    42  		require.NoError(err)
    43  	})
    44  
    45  	t.Run("basic usage", func(t *testing.T) {
    46  		err := Rename(storage, oldQName, newQName)
    47  		require.NoError(err)
    48  	})
    49  
    50  	t.Run("check result", func(t *testing.T) {
    51  		versions := vers.New()
    52  		err := versions.Prepare(storage)
    53  		require.NoError(err)
    54  
    55  		names := qnames.New()
    56  		err = names.Prepare(storage, versions, nil, nil)
    57  		require.NoError(err)
    58  
    59  		t.Run("check old is deleted", func(t *testing.T) {
    60  			id, err := names.ID(oldQName)
    61  			require.ErrorIs(err, qnames.ErrNameNotFound)
    62  			require.Equal(qnames.NullQNameID, id)
    63  		})
    64  
    65  		t.Run("check new is not null", func(t *testing.T) {
    66  			id, err := names.ID(newQName)
    67  			require.NoError(err)
    68  			require.Greater(id, qnames.QNameIDSysLast)
    69  		})
    70  	})
    71  }