78 lines · 1.9 KB · Go
RawDownload
// Copyright 2022 The Gitea Authors. All rights reserved.// SPDX-License-Identifier: MIT package cache import (	"testing"	"time" 	"github.com/stretchr/testify/assert"	"github.com/stretchr/testify/require") func TestWithCacheContext(t *testing.T) {	ctx := WithCacheContext(t.Context()) 	v := GetContextData(ctx, "empty_field", "my_config1")	assert.Nil(t, v) 	const field = "system_setting"	v = GetContextData(ctx, field, "my_config1")	assert.Nil(t, v)	SetContextData(ctx, field, "my_config1", 1)	v = GetContextData(ctx, field, "my_config1")	assert.NotNil(t, v)	assert.EqualValues(t, 1, v.(int)) 	RemoveContextData(ctx, field, "my_config1")	RemoveContextData(ctx, field, "my_config2") // remove a non-exist key 	v = GetContextData(ctx, field, "my_config1")	assert.Nil(t, v) 	vInt, err := GetWithContextCache(ctx, field, "my_config1", func() (int, error) {		return 1, nil	})	require.NoError(t, err)	assert.EqualValues(t, 1, vInt) 	v = GetContextData(ctx, field, "my_config1")	assert.EqualValues(t, 1, v) 	now := timeNow	defer func() {		timeNow = now	}()	timeNow = func() time.Time {		return now().Add(5 * time.Minute)	}	v = GetContextData(ctx, field, "my_config1")	assert.Nil(t, v)} func TestWithNoCacheContext(t *testing.T) {	ctx := t.Context() 	const field = "system_setting" 	v := GetContextData(ctx, field, "my_config1")	assert.Nil(t, v)	SetContextData(ctx, field, "my_config1", 1)	v = GetContextData(ctx, field, "my_config1")	assert.Nil(t, v) // still no cache 	ctx = WithCacheContext(ctx)	v = GetContextData(ctx, field, "my_config1")	assert.Nil(t, v)	SetContextData(ctx, field, "my_config1", 1)	v = GetContextData(ctx, field, "my_config1")	assert.NotNil(t, v) 	ctx = WithNoCacheContext(ctx)	v = GetContextData(ctx, field, "my_config1")	assert.Nil(t, v)	SetContextData(ctx, field, "my_config1", 1)	v = GetContextData(ctx, field, "my_config1")	assert.Nil(t, v) // still no cache}