fix: 修复公告过时警告并补齐用户权限

This commit is contained in:
2025-12-27 07:19:27 +08:00
parent caad541e2f
commit 04444c6554
16 changed files with 879 additions and 31 deletions

View File

@@ -25,9 +25,9 @@ public sealed class GetUnreadAnnouncementsQueryHandlerTests
var announcements = new List<TakeoutSaaS.Domain.Tenants.Entities.TenantAnnouncement>
{
AnnouncementTestData.CreateAnnouncement(1, 55, priority: 1, effectiveFrom: DateTime.UtcNow.AddDays(-1), status: AnnouncementStatus.Published, isActive: true),
AnnouncementTestData.CreateAnnouncement(2, 55, priority: 3, effectiveFrom: DateTime.UtcNow.AddDays(-2), status: AnnouncementStatus.Published, isActive: true),
AnnouncementTestData.CreateAnnouncement(3, 55, priority: 2, effectiveFrom: DateTime.UtcNow, status: AnnouncementStatus.Published, isActive: true)
AnnouncementTestData.CreateAnnouncement(1, 55, priority: 1, effectiveFrom: DateTime.UtcNow.AddDays(-1), status: AnnouncementStatus.Published),
AnnouncementTestData.CreateAnnouncement(2, 55, priority: 3, effectiveFrom: DateTime.UtcNow.AddDays(-2), status: AnnouncementStatus.Published),
AnnouncementTestData.CreateAnnouncement(3, 55, priority: 2, effectiveFrom: DateTime.UtcNow, status: AnnouncementStatus.Published)
};
var announcementRepository = new Mock<ITenantAnnouncementRepository>();

View File

@@ -52,8 +52,7 @@ public static class AnnouncementTestData
long tenantId,
int priority,
DateTime effectiveFrom,
AnnouncementStatus status = AnnouncementStatus.Draft,
bool isActive = false)
AnnouncementStatus status = AnnouncementStatus.Draft)
=> new()
{
Id = id,
@@ -68,7 +67,6 @@ public static class AnnouncementTestData
Status = status,
TargetType = string.Empty,
TargetParameters = null,
IsActive = isActive,
RowVersion = new byte[] { 1, 1, 1 }
};
}

View File

@@ -11,15 +11,14 @@ namespace TakeoutSaaS.Integration.Tests.App.Tenants;
public sealed class AnnouncementRegressionTests
{
[Fact]
public async Task GivenLegacyIsActiveAnnouncement_WhenSearchByIsActive_ThenReturns()
public async Task GivenPublishedAnnouncement_WhenSearchByIsActive_ThenReturns()
{
// Arrange
using var database = new SqliteTestDatabase();
using var context = database.CreateContext(tenantId: 600, userId: 12);
var legacy = CreateAnnouncement(tenantId: 600, id: 9100);
legacy.Status = AnnouncementStatus.Draft;
legacy.IsActive = true;
legacy.Status = AnnouncementStatus.Published;
context.TenantAnnouncements.Add(legacy);
await context.SaveChangesAsync();
@@ -52,7 +51,6 @@ public sealed class AnnouncementRegressionTests
var announcement = CreateAnnouncement(tenantId: 700, id: 9101);
announcement.Status = AnnouncementStatus.Draft;
announcement.IsActive = false;
context.TenantAnnouncements.Add(announcement);
await context.SaveChangesAsync();
context.ChangeTracker.Clear();
@@ -95,7 +93,6 @@ public sealed class AnnouncementRegressionTests
Status = AnnouncementStatus.Draft,
TargetType = "ALL_TENANTS",
TargetParameters = null,
IsActive = false,
RowVersion = new byte[] { 1 }
};
}

View File

@@ -47,7 +47,6 @@ public sealed class AnnouncementWorkflowTests
using var verifyContext = database.CreateContext(tenantId: 100);
var persisted = await verifyContext.TenantAnnouncements.FirstAsync(x => x.Id == announcement.Id);
persisted.Status.Should().Be(AnnouncementStatus.Published);
persisted.IsActive.Should().BeTrue();
persisted.PublishedAt.Should().NotBeNull();
}
@@ -60,7 +59,6 @@ public sealed class AnnouncementWorkflowTests
var announcement = CreateDraftAnnouncement(tenantId: 200, id: 9002);
announcement.Status = AnnouncementStatus.Published;
announcement.IsActive = true;
context.TenantAnnouncements.Add(announcement);
await context.SaveChangesAsync();
context.ChangeTracker.Clear();
@@ -85,7 +83,6 @@ public sealed class AnnouncementWorkflowTests
using var verifyContext = database.CreateContext(tenantId: 200);
var persisted = await verifyContext.TenantAnnouncements.FirstAsync(x => x.Id == announcement.Id);
persisted.Status.Should().Be(AnnouncementStatus.Revoked);
persisted.IsActive.Should().BeFalse();
persisted.RevokedAt.Should().NotBeNull();
}
@@ -98,7 +95,6 @@ public sealed class AnnouncementWorkflowTests
var announcement = CreateDraftAnnouncement(tenantId: 300, id: 9003);
announcement.Status = AnnouncementStatus.Revoked;
announcement.IsActive = false;
announcement.RevokedAt = DateTime.UtcNow.AddMinutes(-5);
context.TenantAnnouncements.Add(announcement);
await context.SaveChangesAsync();
@@ -124,7 +120,6 @@ public sealed class AnnouncementWorkflowTests
using var verifyContext = database.CreateContext(tenantId: 300);
var persisted = await verifyContext.TenantAnnouncements.FirstAsync(x => x.Id == announcement.Id);
persisted.Status.Should().Be(AnnouncementStatus.Published);
persisted.IsActive.Should().BeTrue();
persisted.RevokedAt.Should().BeNull();
}
@@ -137,7 +132,6 @@ public sealed class AnnouncementWorkflowTests
var announcement = CreateDraftAnnouncement(tenantId: 400, id: 9004);
announcement.Status = AnnouncementStatus.Published;
announcement.IsActive = true;
context.TenantAnnouncements.Add(announcement);
await context.SaveChangesAsync();
context.ChangeTracker.Clear();
@@ -216,7 +210,6 @@ public sealed class AnnouncementWorkflowTests
Status = AnnouncementStatus.Draft,
TargetType = "ALL_TENANTS",
TargetParameters = null,
IsActive = false,
RowVersion = new byte[] { 1 }
};
}

View File

@@ -53,7 +53,6 @@ public sealed class TenantAnnouncementRepositoryScopeTests
PublisherScope = PublisherScope.Tenant,
Status = AnnouncementStatus.Draft,
TargetType = "ALL_TENANTS",
IsActive = false,
RowVersion = new byte[] { 1 }
};
}

View File

@@ -38,7 +38,6 @@ public sealed class AnnouncementQueryPerformanceTests
Status = AnnouncementStatus.Published,
TargetType = targetType,
TargetParameters = targetParameters,
IsActive = true,
RowVersion = new byte[] { 1 }
});
}