53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
|  | package config | ||
|  | 
 | ||
|  | import ( | ||
|  | 	"os" | ||
|  | 	"testing" | ||
|  | 
 | ||
|  | 	"github.com/stretchr/testify/assert" | ||
|  | ) | ||
|  | 
 | ||
|  | func TestWalletConfig_AlipayRechargeBonus(t *testing.T) { | ||
|  | 	// 切换到项目根目录,这样配置加载器就能找到配置文件 | ||
|  | 	originalWd, err := os.Getwd() | ||
|  | 	assert.NoError(t, err) | ||
|  | 	 | ||
|  | 	// 切换到项目根目录(从 internal/config 目录向上两级) | ||
|  | 	err = os.Chdir("../../") | ||
|  | 	assert.NoError(t, err) | ||
|  | 	defer os.Chdir(originalWd) // 测试结束后恢复原目录 | ||
|  | 	 | ||
|  | 	// 加载配置 | ||
|  | 	cfg, err := LoadConfig() | ||
|  | 	assert.NoError(t, err) | ||
|  | 	assert.NotNil(t, cfg) | ||
|  | 
 | ||
|  | 	// 验证钱包配置 | ||
|  | 	assert.NotNil(t, cfg.Wallet) | ||
|  | 	assert.Greater(t, len(cfg.Wallet.AliPayRechargeBonus), 0, "支付宝充值赠送规则不能为空") | ||
|  | 
 | ||
|  | 	// 验证具体的赠送规则 | ||
|  | 	expectedRules := []struct { | ||
|  | 		rechargeAmount float64 | ||
|  | 		bonusAmount    float64 | ||
|  | 	}{ | ||
|  | 		{1000.00, 50.00},   // 充1000送50 | ||
|  | 		{5000.00, 300.00},  // 充5000送300 | ||
|  | 		{10000.00, 800.00}, // 充10000送800 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	for i, expected := range expectedRules { | ||
|  | 		if i < len(cfg.Wallet.AliPayRechargeBonus) { | ||
|  | 			rule := cfg.Wallet.AliPayRechargeBonus[i] | ||
|  | 			assert.Equal(t, expected.rechargeAmount, rule.RechargeAmount,  | ||
|  | 				"充值金额不匹配,期望: %f, 实际: %f", expected.rechargeAmount, rule.RechargeAmount) | ||
|  | 			assert.Equal(t, expected.bonusAmount, rule.BonusAmount,  | ||
|  | 				"赠送金额不匹配,期望: %f, 实际: %f", expected.bonusAmount, rule.BonusAmount) | ||
|  | 		} | ||
|  | 	} | ||
|  | 
 | ||
|  | 	t.Logf("钱包配置加载成功,包含 %d 条支付宝充值赠送规则", len(cfg.Wallet.AliPayRechargeBonus)) | ||
|  | 	for i, rule := range cfg.Wallet.AliPayRechargeBonus { | ||
|  | 		t.Logf("规则 %d: 充值 %.2f 元,赠送 %.2f 元", i+1, rule.RechargeAmount, rule.BonusAmount) | ||
|  | 	} | ||
|  | }  |