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 | ||||
|  | ||||
| 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()) | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 HFO4
					HFO4