mirror of https://github.com/cloudreve/Cloudreve
Test: user.afterCreate
parent
7375cc01f1
commit
06bcb3d6eb
|
@ -1,6 +1,7 @@
|
||||||
package model
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/HFO4/cloudreve/pkg/cache"
|
||||||
"github.com/jinzhu/gorm"
|
"github.com/jinzhu/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -30,19 +31,21 @@ func GetSettingByName(name string) string {
|
||||||
var setting Setting
|
var setting Setting
|
||||||
|
|
||||||
// 优先从缓存中查找
|
// 优先从缓存中查找
|
||||||
if optionValue, ok := settingCache[name]; ok {
|
cacheKey := "setting_" + name
|
||||||
return optionValue
|
if optionValue, ok := cache.Store.Get(cacheKey); ok {
|
||||||
|
return optionValue.(string)
|
||||||
}
|
}
|
||||||
// 尝试数据库中查找
|
// 尝试数据库中查找
|
||||||
result := DB.Where("name = ?", name).First(&setting)
|
result := DB.Where("name = ?", name).First(&setting)
|
||||||
if result.Error == nil {
|
if result.Error == nil {
|
||||||
settingCache[setting.Name] = setting.Value
|
_ = cache.Store.Set(cacheKey, setting.Value)
|
||||||
return setting.Value
|
return setting.Value
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSettingByNames 用多个 Name 获取设置值
|
// GetSettingByNames 用多个 Name 获取设置值
|
||||||
|
// TODO 其他设置获取也使用缓存
|
||||||
func GetSettingByNames(names []string) map[string]string {
|
func GetSettingByNames(names []string) map[string]string {
|
||||||
var queryRes []Setting
|
var queryRes []Setting
|
||||||
res := make(map[string]string)
|
res := make(map[string]string)
|
||||||
|
|
|
@ -116,3 +116,12 @@ func TestGetSettingByName(t *testing.T) {
|
||||||
asserts.NoError(mock.ExpectationsWereMet())
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIsTrueVal(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
|
||||||
|
asserts.True(IsTrueVal("1"))
|
||||||
|
asserts.True(IsTrueVal("true"))
|
||||||
|
asserts.False(IsTrueVal("0"))
|
||||||
|
asserts.False(IsTrueVal("false"))
|
||||||
|
}
|
||||||
|
|
|
@ -218,4 +218,91 @@ func TestUser_DeductionCapacity(t *testing.T) {
|
||||||
|
|
||||||
asserts.Equal(false, newUser.IncreaseStorage(1))
|
asserts.Equal(false, newUser.IncreaseStorage(1))
|
||||||
asserts.Equal(uint64(100), newUser.Storage)
|
asserts.Equal(uint64(100), newUser.Storage)
|
||||||
|
|
||||||
|
asserts.True(newUser.IncreaseStorage(0))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUser_DeductionStorage(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
|
||||||
|
// 减少零
|
||||||
|
{
|
||||||
|
user := User{Storage: 1}
|
||||||
|
asserts.True(user.DeductionStorage(0))
|
||||||
|
asserts.Equal(uint64(1), user.Storage)
|
||||||
|
}
|
||||||
|
// 正常
|
||||||
|
{
|
||||||
|
user := User{
|
||||||
|
Model: gorm.Model{ID: 1},
|
||||||
|
Storage: 10,
|
||||||
|
}
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)").WithArgs(5, 1).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
|
||||||
|
asserts.True(user.DeductionStorage(5))
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.Equal(uint64(5), user.Storage)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 减少的超出可用的
|
||||||
|
{
|
||||||
|
user := User{
|
||||||
|
Model: gorm.Model{ID: 1},
|
||||||
|
Storage: 10,
|
||||||
|
}
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)").WithArgs(0, 1).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
|
||||||
|
asserts.False(user.DeductionStorage(20))
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.Equal(uint64(0), user.Storage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUser_IncreaseStorageWithoutCheck(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
|
||||||
|
// 增加零
|
||||||
|
{
|
||||||
|
user := User{}
|
||||||
|
user.IncreaseStorageWithoutCheck(0)
|
||||||
|
asserts.Equal(uint64(0), user.Storage)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 减少零
|
||||||
|
{
|
||||||
|
user := User{
|
||||||
|
Model: gorm.Model{ID: 1},
|
||||||
|
}
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)").WithArgs(10, 1).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
|
||||||
|
user.IncreaseStorageWithoutCheck(10)
|
||||||
|
asserts.Equal(uint64(10), user.Storage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetUserByEmail(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
|
||||||
|
mock.ExpectQuery("SELECT(.+)").WithArgs("abslant@foxmail.com").WillReturnRows(sqlmock.NewRows([]string{"id", "email"}))
|
||||||
|
_, err := GetUserByEmail("abslant@foxmail.com")
|
||||||
|
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUser_AfterCreate(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
user := User{Model: gorm.Model{ID: 1}}
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("INSERT(.+)").WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
err := user.AfterCreate(DB)
|
||||||
|
asserts.NoError(err)
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue