- // Copyright 2022 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package cache
-
- import (
- "context"
- "testing"
- "time"
-
- "github.com/stretchr/testify/assert"
- )
-
- func TestWithCacheContext(t *testing.T) {
- ctx := WithCacheContext(context.Background())
-
- 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
- })
- assert.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(10 * time.Second)
- }
- v = GetContextData(ctx, field, "my_config1")
- assert.Nil(t, v)
- }
-
- func TestWithNoCacheContext(t *testing.T) {
- ctx := context.Background()
-
- 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
- }
|