2026-01-28 19:32:11 +08:00
|
|
|
|
namespace WebApi.Test.Repository;
|
2026-01-28 17:00:58 +08:00
|
|
|
|
|
|
|
|
|
|
public class TransactionPeriodicRepositoryTest : TransactionTestBase
|
|
|
|
|
|
{
|
|
|
|
|
|
private readonly ITransactionPeriodicRepository _repository;
|
|
|
|
|
|
|
|
|
|
|
|
public TransactionPeriodicRepositoryTest()
|
|
|
|
|
|
{
|
|
|
|
|
|
_repository = new TransactionPeriodicRepository(FreeSql);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
public async Task GetPendingPeriodicBillsAsync_获取待执行账单_Test()
|
|
|
|
|
|
{
|
|
|
|
|
|
// 应该执行的:NextExecuteTime <= Now
|
|
|
|
|
|
await _repository.AddAsync(new TransactionPeriodic { Reason = "Bill1", NextExecuteTime = DateTime.Now.AddDays(-1), IsEnabled = true });
|
|
|
|
|
|
|
|
|
|
|
|
// 不该执行的:NextExecuteTime > Now
|
|
|
|
|
|
await _repository.AddAsync(new TransactionPeriodic { Reason = "Bill2", NextExecuteTime = DateTime.Now.AddDays(1), IsEnabled = true });
|
|
|
|
|
|
|
|
|
|
|
|
// 不该执行的:未激活
|
|
|
|
|
|
await _repository.AddAsync(new TransactionPeriodic { Reason = "Bill3", NextExecuteTime = DateTime.Now.AddDays(-1), IsEnabled = false });
|
|
|
|
|
|
|
|
|
|
|
|
var results = await _repository.GetPendingPeriodicBillsAsync();
|
|
|
|
|
|
results.Should().HaveCount(1);
|
|
|
|
|
|
results.First().Reason.Should().Be("Bill1");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
public async Task UpdateExecuteTimeAsync_更新执行时间_Test()
|
|
|
|
|
|
{
|
|
|
|
|
|
var bill = new TransactionPeriodic { Reason = "Bill", NextExecuteTime = DateTime.Now };
|
|
|
|
|
|
await _repository.AddAsync(bill);
|
|
|
|
|
|
|
|
|
|
|
|
var last = DateTime.Now;
|
|
|
|
|
|
var next = DateTime.Now.AddMonths(1);
|
|
|
|
|
|
|
|
|
|
|
|
await _repository.UpdateExecuteTimeAsync(bill.Id, last, next);
|
|
|
|
|
|
|
|
|
|
|
|
var updated = await _repository.GetByIdAsync(bill.Id);
|
|
|
|
|
|
updated!.LastExecuteTime.Should().BeCloseTo(last, TimeSpan.FromSeconds(1));
|
|
|
|
|
|
updated.NextExecuteTime.Should().BeCloseTo(next, TimeSpan.FromSeconds(1));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|