parent
5d50e7ed1e
commit
7375cc01f1
@ -1,16 +1,17 @@
|
|||||||
package model
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/jinzhu/gorm"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMigration(t *testing.T) {
|
func TestMigration(t *testing.T) {
|
||||||
asserts := assert.New(t)
|
asserts := assert.New(t)
|
||||||
gin.SetMode(gin.TestMode)
|
DB, _ = gorm.Open("sqlite3", ":memory:")
|
||||||
|
|
||||||
asserts.NotPanics(func() {
|
asserts.NotPanics(func() {
|
||||||
migration()
|
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