mirror of https://github.com/cloudreve/Cloudreve
				
				
				
			Test: user.afterCreate
							parent
							
								
									7375cc01f1
								
							
						
					
					
						commit
						06bcb3d6eb
					
				| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
package model
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/HFO4/cloudreve/pkg/cache"
 | 
			
		||||
	"github.com/jinzhu/gorm"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -30,19 +31,21 @@ func GetSettingByName(name string) string {
 | 
			
		|||
	var setting Setting
 | 
			
		||||
 | 
			
		||||
	// 优先从缓存中查找
 | 
			
		||||
	if optionValue, ok := settingCache[name]; ok {
 | 
			
		||||
		return optionValue
 | 
			
		||||
	cacheKey := "setting_" + name
 | 
			
		||||
	if optionValue, ok := cache.Store.Get(cacheKey); ok {
 | 
			
		||||
		return optionValue.(string)
 | 
			
		||||
	}
 | 
			
		||||
	// 尝试数据库中查找
 | 
			
		||||
	result := DB.Where("name = ?", name).First(&setting)
 | 
			
		||||
	if result.Error == nil {
 | 
			
		||||
		settingCache[setting.Name] = setting.Value
 | 
			
		||||
		_ = cache.Store.Set(cacheKey, setting.Value)
 | 
			
		||||
		return setting.Value
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetSettingByNames 用多个 Name 获取设置值
 | 
			
		||||
// TODO 其他设置获取也使用缓存
 | 
			
		||||
func GetSettingByNames(names []string) map[string]string {
 | 
			
		||||
	var queryRes []Setting
 | 
			
		||||
	res := make(map[string]string)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -116,3 +116,12 @@ func TestGetSettingByName(t *testing.T) {
 | 
			
		|||
	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(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