parent
5d50e7ed1e
commit
7375cc01f1
@ -1,16 +1,17 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/jinzhu/gorm"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestMigration(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
gin.SetMode(gin.TestMode)
|
||||
DB, _ = gorm.Open("sqlite3", ":memory:")
|
||||
|
||||
asserts.NotPanics(func() {
|
||||
migration()
|
||||
})
|
||||
DB = mockDB
|
||||
}
|
||||
|
@ -0,0 +1,10 @@
|
||||
package cache
|
||||
|
||||
// Store 缓存存储器
|
||||
var Store Driver = NewMemoStore()
|
||||
|
||||
// Driver 键值缓存存储容器
|
||||
type Driver interface {
|
||||
Set(key string, value interface{}) error
|
||||
Get(key string) (interface{}, bool)
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package cache
|
||||
|
||||
import "sync"
|
||||
|
||||
// MemoStore 内存存储驱动
|
||||
type MemoStore struct {
|
||||
Store *sync.Map
|
||||
}
|
||||
|
||||
// NewMemoStore 新建内存存储
|
||||
func NewMemoStore() *MemoStore {
|
||||
return &MemoStore{
|
||||
Store: &sync.Map{},
|
||||
}
|
||||
}
|
||||
|
||||
// Set 存储值
|
||||
func (store *MemoStore) Set(key string, value interface{}) error {
|
||||
store.Store.Store(key, value)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Get 取值
|
||||
func (store *MemoStore) Get(key string) (interface{}, bool) {
|
||||
return store.Store.Load(key)
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package cache
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestNewMemoStore(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
|
||||
store := NewMemoStore()
|
||||
asserts.NotNil(store)
|
||||
asserts.NotNil(store.Store)
|
||||
}
|
||||
|
||||
func TestMemoStore_Set(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
|
||||
store := NewMemoStore()
|
||||
err := store.Set("KEY", "vAL")
|
||||
asserts.NoError(err)
|
||||
|
||||
val, ok := store.Store.Load("KEY")
|
||||
asserts.True(ok)
|
||||
asserts.Equal("vAL", val)
|
||||
}
|
||||
|
||||
func TestMemoStore_Get(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
store := NewMemoStore()
|
||||
|
||||
// 正常情况
|
||||
{
|
||||
_ = store.Set("string", "string_val")
|
||||
val, ok := store.Get("string")
|
||||
asserts.Equal("string_val", val)
|
||||
asserts.True(ok)
|
||||
}
|
||||
|
||||
// Key不存在
|
||||
{
|
||||
val, ok := store.Get("something")
|
||||
asserts.Equal(nil, val)
|
||||
asserts.False(ok)
|
||||
}
|
||||
|
||||
// 存储struct
|
||||
{
|
||||
type testStruct struct {
|
||||
key int
|
||||
}
|
||||
test := testStruct{key: 233}
|
||||
_ = store.Set("struct", test)
|
||||
val, ok := store.Get("struct")
|
||||
asserts.True(ok)
|
||||
res, ok := val.(testStruct)
|
||||
asserts.True(ok)
|
||||
asserts.Equal(test, res)
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in new issue