2021-01-28 21:08:11 +03:00
// Copyright 2021 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2021-01-28 21:08:11 +03:00
package cache
import (
"fmt"
"testing"
"time"
"code.gitea.io/gitea/modules/setting"
"github.com/stretchr/testify/assert"
2024-07-30 22:41:10 +03:00
"github.com/stretchr/testify/require"
2021-01-28 21:08:11 +03:00
)
func createTestCache ( ) {
conn , _ = newCache ( setting . Cache {
Adapter : "memory" ,
TTL : time . Minute ,
} )
2023-07-27 23:24:40 +03:00
setting . CacheService . TTL = 24 * time . Hour
2021-01-28 21:08:11 +03:00
}
func TestNewContext ( t * testing . T ) {
2024-07-30 22:41:10 +03:00
require . NoError ( t , Init ( ) )
2021-01-28 21:08:11 +03:00
2023-12-19 12:29:05 +03:00
setting . CacheService . Cache = setting . Cache { Adapter : "redis" , Conn : "some random string" }
2021-01-28 21:08:11 +03:00
con , err := newCache ( setting . Cache {
Adapter : "rand" ,
Conn : "false conf" ,
Interval : 100 ,
} )
2024-07-30 22:41:10 +03:00
require . Error ( t , err )
2021-01-28 21:08:11 +03:00
assert . Nil ( t , con )
}
func TestGetCache ( t * testing . T ) {
createTestCache ( )
assert . NotNil ( t , GetCache ( ) )
}
func TestGetString ( t * testing . T ) {
createTestCache ( )
data , err := GetString ( "key" , func ( ) ( string , error ) {
return "" , fmt . Errorf ( "some error" )
} )
2024-07-30 22:41:10 +03:00
require . Error ( t , err )
2021-01-28 21:08:11 +03:00
assert . Equal ( t , "" , data )
data , err = GetString ( "key" , func ( ) ( string , error ) {
return "" , nil
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-01-28 21:08:11 +03:00
assert . Equal ( t , "" , data )
2023-07-27 23:24:40 +03:00
data , err = GetString ( "key" , func ( ) ( string , error ) {
return "some data" , nil
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2023-07-27 23:24:40 +03:00
assert . Equal ( t , "" , data )
Remove ( "key" )
2021-01-28 21:08:11 +03:00
data , err = GetString ( "key" , func ( ) ( string , error ) {
return "some data" , nil
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-01-28 21:08:11 +03:00
assert . Equal ( t , "some data" , data )
2023-07-27 23:24:40 +03:00
data , err = GetString ( "key" , func ( ) ( string , error ) {
return "" , fmt . Errorf ( "some error" )
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2023-07-27 23:24:40 +03:00
assert . Equal ( t , "some data" , data )
Remove ( "key" )
2021-01-28 21:08:11 +03:00
}
func TestGetInt ( t * testing . T ) {
createTestCache ( )
data , err := GetInt ( "key" , func ( ) ( int , error ) {
return 0 , fmt . Errorf ( "some error" )
} )
2024-07-30 22:41:10 +03:00
require . Error ( t , err )
2021-01-28 21:08:11 +03:00
assert . Equal ( t , 0 , data )
data , err = GetInt ( "key" , func ( ) ( int , error ) {
return 0 , nil
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-01-28 21:08:11 +03:00
assert . Equal ( t , 0 , data )
2023-07-27 23:24:40 +03:00
data , err = GetInt ( "key" , func ( ) ( int , error ) {
return 100 , nil
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2023-07-27 23:24:40 +03:00
assert . Equal ( t , 0 , data )
Remove ( "key" )
2021-01-28 21:08:11 +03:00
data , err = GetInt ( "key" , func ( ) ( int , error ) {
return 100 , nil
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-01-28 21:08:11 +03:00
assert . Equal ( t , 100 , data )
2023-07-27 23:24:40 +03:00
data , err = GetInt ( "key" , func ( ) ( int , error ) {
return 0 , fmt . Errorf ( "some error" )
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2023-07-27 23:24:40 +03:00
assert . Equal ( t , 100 , data )
Remove ( "key" )
2021-01-28 21:08:11 +03:00
}
2022-01-20 20:46:10 +03:00
2021-01-28 21:08:11 +03:00
func TestGetInt64 ( t * testing . T ) {
createTestCache ( )
data , err := GetInt64 ( "key" , func ( ) ( int64 , error ) {
return 0 , fmt . Errorf ( "some error" )
} )
2024-07-30 22:41:10 +03:00
require . Error ( t , err )
2021-01-28 21:08:11 +03:00
assert . EqualValues ( t , 0 , data )
data , err = GetInt64 ( "key" , func ( ) ( int64 , error ) {
return 0 , nil
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-01-28 21:08:11 +03:00
assert . EqualValues ( t , 0 , data )
2023-07-27 23:24:40 +03:00
data , err = GetInt64 ( "key" , func ( ) ( int64 , error ) {
return 100 , nil
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2023-07-27 23:24:40 +03:00
assert . EqualValues ( t , 0 , data )
Remove ( "key" )
2021-01-28 21:08:11 +03:00
data , err = GetInt64 ( "key" , func ( ) ( int64 , error ) {
return 100 , nil
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2021-01-28 21:08:11 +03:00
assert . EqualValues ( t , 100 , data )
2023-07-27 23:24:40 +03:00
data , err = GetInt64 ( "key" , func ( ) ( int64 , error ) {
return 0 , fmt . Errorf ( "some error" )
} )
2024-07-30 22:41:10 +03:00
require . NoError ( t , err )
2023-07-27 23:24:40 +03:00
assert . EqualValues ( t , 100 , data )
Remove ( "key" )
2021-01-28 21:08:11 +03:00
}