code.gitea.io/gitea@v1.22.3/modules/cache/cache_test.go (about)

     1  // Copyright 2021 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package cache
     5  
     6  import (
     7  	"fmt"
     8  	"testing"
     9  	"time"
    10  
    11  	"code.gitea.io/gitea/modules/setting"
    12  
    13  	"github.com/stretchr/testify/assert"
    14  )
    15  
    16  func createTestCache() {
    17  	defaultCache, _ = NewStringCache(setting.Cache{
    18  		Adapter: "memory",
    19  		TTL:     time.Minute,
    20  	})
    21  	setting.CacheService.TTL = 24 * time.Hour
    22  }
    23  
    24  func TestNewContext(t *testing.T) {
    25  	assert.NoError(t, Init())
    26  
    27  	setting.CacheService.Cache = setting.Cache{Adapter: "redis", Conn: "some random string"}
    28  	con, err := NewStringCache(setting.Cache{
    29  		Adapter:  "rand",
    30  		Conn:     "false conf",
    31  		Interval: 100,
    32  	})
    33  	assert.Error(t, err)
    34  	assert.Nil(t, con)
    35  }
    36  
    37  func TestGetCache(t *testing.T) {
    38  	createTestCache()
    39  
    40  	assert.NotNil(t, GetCache())
    41  }
    42  
    43  func TestGetString(t *testing.T) {
    44  	createTestCache()
    45  
    46  	data, err := GetString("key", func() (string, error) {
    47  		return "", fmt.Errorf("some error")
    48  	})
    49  	assert.Error(t, err)
    50  	assert.Equal(t, "", data)
    51  
    52  	data, err = GetString("key", func() (string, error) {
    53  		return "", nil
    54  	})
    55  	assert.NoError(t, err)
    56  	assert.Equal(t, "", data)
    57  
    58  	data, err = GetString("key", func() (string, error) {
    59  		return "some data", nil
    60  	})
    61  	assert.NoError(t, err)
    62  	assert.Equal(t, "", data)
    63  	Remove("key")
    64  
    65  	data, err = GetString("key", func() (string, error) {
    66  		return "some data", nil
    67  	})
    68  	assert.NoError(t, err)
    69  	assert.Equal(t, "some data", data)
    70  
    71  	data, err = GetString("key", func() (string, error) {
    72  		return "", fmt.Errorf("some error")
    73  	})
    74  	assert.NoError(t, err)
    75  	assert.Equal(t, "some data", data)
    76  	Remove("key")
    77  }
    78  
    79  func TestGetInt64(t *testing.T) {
    80  	createTestCache()
    81  
    82  	data, err := GetInt64("key", func() (int64, error) {
    83  		return 0, fmt.Errorf("some error")
    84  	})
    85  	assert.Error(t, err)
    86  	assert.EqualValues(t, 0, data)
    87  
    88  	data, err = GetInt64("key", func() (int64, error) {
    89  		return 0, nil
    90  	})
    91  	assert.NoError(t, err)
    92  	assert.EqualValues(t, 0, data)
    93  
    94  	data, err = GetInt64("key", func() (int64, error) {
    95  		return 100, nil
    96  	})
    97  	assert.NoError(t, err)
    98  	assert.EqualValues(t, 0, data)
    99  	Remove("key")
   100  
   101  	data, err = GetInt64("key", func() (int64, error) {
   102  		return 100, nil
   103  	})
   104  	assert.NoError(t, err)
   105  	assert.EqualValues(t, 100, data)
   106  
   107  	data, err = GetInt64("key", func() (int64, error) {
   108  		return 0, fmt.Errorf("some error")
   109  	})
   110  	assert.NoError(t, err)
   111  	assert.EqualValues(t, 100, data)
   112  	Remove("key")
   113  }