mirror of
				https://github.com/cloudreve/cloudreve.git
				synced 2025-10-31 08:39:10 +08:00 
			
		
		
		
	Test: user.afterCreate
This commit is contained in:
		| @ -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()) | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 HFO4
					HFO4