提交管理员操作一切

This commit is contained in:
chfei committed 2026-10-23 18:16:05 +08:00
1 parent a87ebeaffb
commit d6471f97d3
23 files changed
+600 -73

No files matched your search

+7 -7
View File
@@ -63,9 +63,9 @@ public sealed class UserFundsTests
using var context = new UserTestContext();
await context.Funds.Change(Request(), true, default);
context.CurrentUser.UserName = "main";
await context.Funds.Change(Request("转移", 30m, "other", "transfer"), true, default);
await context.Funds.Change(Request("转移", 30m, "child", "transfer"), true, default);
var sender = await context.Read("main");
var receiver = await context.Read("other");
var receiver = await context.Read("child");
Assert.Equal(70m, sender.Points);
Assert.Equal(30m, receiver.Points);
Assert.Equal(100m, sender.RechargePointsTotal);
@@ -76,7 +76,7 @@ public sealed class UserFundsTests
var credit = Assert.Single(records, r => r.OptionType == "转入");
Assert.Equal(30m, debit.DeltaPoints);
Assert.Equal(debit.DeltaPoints, credit.DeltaPoints);
Assert.Equal("other", debit.CounterpartyAccountName);
Assert.Equal("child", debit.CounterpartyAccountName);
Assert.Equal("main", credit.CounterpartyAccountName);
Assert.All(records, r => Assert.Equal("main", r.OperatorName));
}
@@ -97,8 +97,8 @@ public sealed class UserFundsTests
public async Task InsufficientFunds_DoesNotChangeAccountsOrCreateRecords(bool points)
{
using var context = new UserTestContext();
if (points) context.CurrentUser.UserName = "other";
var error = await Assert.ThrowsAsync<AppException>(() => context.Funds.Change(Request(points ? "转移" : "消费"), points, default));
if (points) context.CurrentUser.UserName = "main";
var error = await Assert.ThrowsAsync<AppException>(() => context.Funds.Change(Request(points ? "转移" : "消费", target: points ? "child" : "main"), points, default));
Assert.Contains("不足", error.Message);
Assert.Equal(0m, (await context.Read("main")).Points);
Assert.Equal(0m, (await context.Read("other")).Points);
@@ -181,10 +181,10 @@ public sealed class UserFundsTests
? "CREATE TRIGGER fail_audit BEFORE INSERT ON points WHEN NEW.option_type = '转入' BEGIN SELECT RAISE(ABORT, 'forced audit failure'); END"
: "CREATE TRIGGER fail_audit BEFORE INSERT ON payments BEGIN SELECT RAISE(ABORT, 'forced audit failure'); END";
await context.Db.Ado.ExecuteNonQueryAsync(trigger);
var request = Request(points ? "转移" : "充值", 20m, "other", "retry");
var request = Request(points ? "转移" : "充值", 20m, "child", "retry");
var error = await Assert.ThrowsAnyAsync<Exception>(() => context.Funds.Change(request, points, default));
Assert.Contains("forced audit failure", error.Message);
Assert.Equal(0m, points ? (await context.Read("other")).Points : (await context.Read("other")).Balance);
Assert.Equal(0m, points ? (await context.Read("child")).Points : (await context.Read("child")).Balance);
Assert.Equal(0, await context.Db.Select<UserPointsRecordEntity>().Where(r => r.OutTradeNo == "user:retry").CountAsync());
Assert.Equal(0, await context.Db.Select<UserPaymentRecordEntity>().CountAsync());
if (points) Assert.Equal(100m, (await context.Read("main")).Points);