Skip to content
Snippets Groups Projects
Select Git revision
  • 365182a54626ba0f15a5d1b5064f7f7e124ad93a
  • master default protected
  • bugfix/fix-return-var-in-find
  • feature/upgrade2
  • v1.10.0
  • v1.8.2
  • v1.8.1
  • v1.8.0
  • 1.7.3
  • v1.7.1
  • v1.6.1
  • v1.6.0
  • v1.5.0
  • v1.4.1
  • v1.3.0
  • v1.2.2
  • v1.2.1
  • v1.2.0
  • v1.0.1
  • v1.0.0
  • v0.0.23
  • v0.0.17
  • v0.0.10
  • v0.0.9
24 results

README.md

Blame
  • caching_middleware_test.go 38.92 KiB
    package middleware
    
    import (
    	"context"
    	"testing"
    	"time"
    
    	"git.perx.ru/perxis/perxis-go/pkg/cache"
    	"git.perx.ru/perxis/perxis-go/pkg/environments"
    	envmocks "git.perx.ru/perxis/perxis-go/pkg/environments/mocks"
    	"git.perx.ru/perxis/perxis-go/pkg/errors"
    	"git.perx.ru/perxis/perxis-go/pkg/items"
    	itmsmocks "git.perx.ru/perxis/perxis-go/pkg/items/mocks"
    	"github.com/stretchr/testify/assert"
    	"github.com/stretchr/testify/mock"
    	"github.com/stretchr/testify/require"
    )
    
    func TestItemsCache(t *testing.T) {
    
    	const (
    		colID    = "colID"
    		spaceID  = "spaceID"
    		envID    = "envID"
    		envAlias = "envAlias"
    		itemID   = "itemID"
    		locID    = "locID"
    		size     = 5
    		ttl      = 20 * time.Millisecond
    	)
    
    	errNotFound := errors.NotFound(errors.New("not found"))
    
    	ctx := context.Background()
    
    	t.Run("Get from cache", func(t *testing.T) {
    		itms := &itmsmocks.Items{}
    		env := &envmocks.Environments{}
    
    		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
    
    		env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once()
    		itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once()
    
    		v1, err := svc.Get(ctx, spaceID, envID, colID, itemID)
    		require.NoError(t, err)
    
    		v2, err := svc.Get(ctx, spaceID, envID, colID, itemID)
    		require.NoError(t, err)
    		assert.Same(t, v1, v2, "Ожидается получение объекта из кеша, при повторном запросе.")
    
    		v3, err := svc.Get(ctx, spaceID, envAlias, colID, itemID)
    		assert.Same(t, v3, v2, "Ожидается получение объекта из кеша, при запросе того же объекта по alias окружения.")
    		require.NoError(t, err)
    
    		env.AssertExpectations(t)
    		itms.AssertExpectations(t)
    	})
    
    	t.Run("Get from cache(by Alias)", func(t *testing.T) {
    		itms := &itmsmocks.Items{}
    		env := &envmocks.Environments{}
    
    		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
    
    		env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once()
    		itms.On("Get", mock.Anything, spaceID, envAlias, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once()
    
    		v1, err := svc.Get(ctx, spaceID, envAlias, colID, itemID)
    		require.NoError(t, err)