using System.Net.Http.Json; using ItWorx.KnowledgeHub.Contracts.Activity; using ItWorx.KnowledgeHub.Contracts.Knowledge; using ItWorx.KnowledgeHub.IntegrationTests.Infrastructure; namespace ItWorx.KnowledgeHub.IntegrationTests.Operations; [Collection(PostgresTestGroup.Name)] public sealed class ActivityFeedTests(PostgresContainerFixture postgres) : OwnerSetupTestBase(postgres) { [Fact] public async Task Activity_feed_returns_real_append_only_audit_events_in_reverse_chronological_order() { using var client = Factory.CreateClient(); await SetupHelper.LoginAsync(client, OwnerEmail, OwnerPassword); var create = await SetupHelper.PostWithCsrfAsync( client, "/api/v1/pages", new CreatePageRequest(null, "Auditbare pagina", "WikiPage", "Inhoud.", null)); create.EnsureSuccessStatusCode(); var activity = await client.GetFromJsonAsync("/api/v1/activity?limit=20"); Assert.NotNull(activity); var pageCreated = Assert.Single(activity.Items, item => item.Action == "page.created"); Assert.Equal("page", pageCreated.TargetType); Assert.Contains("Auditbare pagina", pageCreated.Summary, StringComparison.Ordinal); Assert.DoesNotContain("Inhoud.", pageCreated.Summary, StringComparison.Ordinal); Assert.Equal(activity.Items.OrderByDescending(item => item.OccurredAt).Select(item => item.Id), activity.Items.Select(item => item.Id)); } }