code.gitea.io/gitea@v1.19.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  	conn, _ = newCache(setting.Cache{
    18  		Adapter: "memory",
    19  		TTL:     time.Minute,
    20  	})
    21  }
    22  
    23  func TestNewContext(t *testing.T) {
    24  	assert.NoError(t, NewContext())
    25  
    26  	setting.CacheService.Cache = setting.Cache{Enabled: true, Adapter: "redis", Conn: "some random string"}
    27  	con, err := newCache(setting.Cache{
    28  		Adapter:  "rand",
    29  		Conn:     "false conf",
    30  		Interval: 100,
    31  	})
    32  	assert.Error(t, err)
    33  	assert.Nil(t, con)
    34  }
    35  
    36  func TestGetCache(t *testing.T) {
    37  	createTestCache()
    38  
    39  	assert.NotNil(t, GetCache())
    40  }
    41  
    42  func TestGetString(t *testing.T) {
    43  	createTestCache()
    44  
    45  	data, err := GetString("key", func() (string, error) {
    46  		return "", fmt.Errorf("some error")
    47  	})
    48  	assert.Error(t, err)
    49  	assert.Equal(t, "", data)
    50  
    51  	data, err = GetString("key", func() (string, error) {
    52  		return "", nil
    53  	})
    54  	assert.NoError(t, err)
    55  	assert.Equal(t, "", data)
    56  
    57  	// data, err = GetString("key", func() (string, error) {
    58  	// 	return "some data", nil
    59  	// })
    60  	// assert.NoError(t, err)
    61  	// assert.Equal(t, "", data)
    62  	// Remove("key")
    63  
    64  	data, err = GetString("key", func() (string, error) {
    65  		return "some data", nil
    66  	})
    67  	assert.NoError(t, err)
    68  	assert.Equal(t, "some data", data)
    69  
    70  	// data, err = GetString("key", func() (string, error) {
    71  	// 	return "", fmt.Errorf("some error")
    72  	// })
    73  	// assert.NoError(t, err)
    74  	// assert.Equal(t, "some data", data)
    75  
    76  	// TODO: uncommented code works in IDE but not with go test
    77  }
    78  
    79  func TestGetInt(t *testing.T) {
    80  	createTestCache()
    81  
    82  	data, err := GetInt("key", func() (int, error) {
    83  		return 0, fmt.Errorf("some error")
    84  	})
    85  	assert.Error(t, err)
    86  	assert.Equal(t, 0, data)
    87  
    88  	data, err = GetInt("key", func() (int, error) {
    89  		return 0, nil
    90  	})
    91  	assert.NoError(t, err)
    92  	assert.Equal(t, 0, data)
    93  
    94  	// data, err = GetInt("key", func() (int, error) {
    95  	// 	return 100, nil
    96  	// })
    97  	// assert.NoError(t, err)
    98  	// assert.Equal(t, 0, data)
    99  	// Remove("key")
   100  
   101  	data, err = GetInt("key", func() (int, error) {
   102  		return 100, nil
   103  	})
   104  	assert.NoError(t, err)
   105  	assert.Equal(t, 100, data)
   106  
   107  	// data, err = GetInt("key", func() (int, error) {
   108  	// 	return 0, fmt.Errorf("some error")
   109  	// })
   110  	// assert.NoError(t, err)
   111  	// assert.Equal(t, 100, data)
   112  
   113  	// TODO: uncommented code works in IDE but not with go test
   114  }
   115  
   116  func TestGetInt64(t *testing.T) {
   117  	createTestCache()
   118  
   119  	data, err := GetInt64("key", func() (int64, error) {
   120  		return 0, fmt.Errorf("some error")
   121  	})
   122  	assert.Error(t, err)
   123  	assert.EqualValues(t, 0, data)
   124  
   125  	data, err = GetInt64("key", func() (int64, error) {
   126  		return 0, nil
   127  	})
   128  	assert.NoError(t, err)
   129  	assert.EqualValues(t, 0, data)
   130  
   131  	// data, err = GetInt64("key", func() (int64, error) {
   132  	// 	return 100, nil
   133  	// })
   134  	// assert.NoError(t, err)
   135  	// assert.EqualValues(t, 0, data)
   136  	// Remove("key")
   137  
   138  	data, err = GetInt64("key", func() (int64, error) {
   139  		return 100, nil
   140  	})
   141  	assert.NoError(t, err)
   142  	assert.EqualValues(t, 100, data)
   143  
   144  	// data, err = GetInt64("key", func() (int, error) {
   145  	// 	return 0, fmt.Errorf("some error")
   146  	// })
   147  	// assert.NoError(t, err)
   148  	// assert.EqualValues(t, 100, data)
   149  
   150  	// TODO: uncommented code works in IDE but not with go test
   151  }