The directory's pages are cut the same way every time
Many personas share a published day, and a page cut through such a day could take a different few of them each time, skipping some between two pages: the cut now takes the whole day at its edge. The test reads the directory page by page until it finds its persona and checks each page's order, since other tests make personas between two pages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
1 parent
d4226a289c
commit
71ca134599
2 files changed
+46
-12
No files matched your search
@@ -103,12 +103,31 @@ namespace PrivaPub.Tests.Http
|
||||
await hidden.Status("not listed");
|
||||
await alice.Status("listed");
|
||||
|
||||
var active = (await _host.Client().Get("/api/v1/directory?order=active&local=true&limit=80")).Ok().Ids.ToList();
|
||||
// by their latest public post, newest first: other tests post too, so the directory is read until alice
|
||||
var active = new List<string>();
|
||||
for (var offset = 0; offset < 4000 && !active.Contains(alice.Id); offset += 80)
|
||||
{
|
||||
var page = (await _host.Client().Get($"/api/v1/directory?order=active&local=true&limit=80&offset={offset}")).Ok().Ids.ToList();
|
||||
active.AddRange(page);
|
||||
if (page.Count < 80)
|
||||
break;
|
||||
}
|
||||
Assert.Contains(alice.Id, active);
|
||||
Assert.DoesNotContain(hidden.Id, active);
|
||||
var joined = (await _host.Client().Get("/api/v1/directory?order=new&local=true&limit=80")).Ok().Ids.ToList();
|
||||
Assert.Contains(alice.Id, joined);
|
||||
Assert.DoesNotContain(hidden.Id, joined);
|
||||
// by the day each says it joined, newest first: a persona's is its published day, set some days back
|
||||
// (each page in order: other tests make personas between two pages)
|
||||
var joined = new List<System.Text.Json.Nodes.JsonNode>();
|
||||
for (var offset = 0; offset < 4000; offset += 80)
|
||||
{
|
||||
var page = (await _host.Client().Get($"/api/v1/directory?order=new&local=true&limit=80&offset={offset}")).Ok().Array;
|
||||
var days = page.Select(a => a.Text("created_at")[..10]).ToList();
|
||||
Assert.Equal(days.OrderByDescending(d => d, StringComparer.Ordinal), days);
|
||||
joined.AddRange(page!);
|
||||
if (page.Count < 80 || joined.Any(a => a.Text("id") == alice.Id))
|
||||
break;
|
||||
}
|
||||
Assert.Contains(joined, a => a.Text("id") == alice.Id);
|
||||
Assert.DoesNotContain(joined, a => a.Text("id") == hidden.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user