Skip to content

[2.x] test: cover DiscussionPage post-stream seeding (#4703 follow-up)#4708

Merged
imorland merged 1 commit into
2.xfrom
im/poststream-seeding-test
Jun 11, 2026
Merged

[2.x] test: cover DiscussionPage post-stream seeding (#4703 follow-up)#4708
imorland merged 1 commit into
2.xfrom
im/poststream-seeding-test

Conversation

@imorland

Copy link
Copy Markdown
Member

Follow-up to #4703, adding the regression coverage that PR didn't include.

This area of the post stream has now been reworked three times (#4137#4156#4703) without a test pinning the behaviour, which is a large part of why it kept re-breaking. This locks it in.

tests/unit/forum/states/PostStreamState.test.ts covers:

  • Contiguous seed → the visible window covers exactly the seeded posts, with no gaps (no null/perpetually-loading entry).
  • Empty seed → window stays at the baseline, so in-app navigation (where the post-refactor: remove listing of posts in the show discussion endpoint #4067 API show response embeds no posts page) is unchanged.
  • preloadedNearPage() contiguity guard ([2.0.0-beta.1] Opening a discussion not always loads all posts #4137): returns only the longest contiguous run of store-loaded posts. A stray non-contiguous post (e.g. pulled in by an extension relationship) is dropped, and feeding the resulting seed into the stream produces a clean, gap-free window. Also covers "longest of several runs wins" and "nothing loaded → empty array".

I confirmed these are real regression tests, not just green: with the contiguity guard removed (reverted to a naive "all loaded posts" preloadedNearPage), the two #4137 assertions fail as expected; with the fix in place all 7 pass.

Pure test addition — no source changes.

Locks in the behaviour of #4703 and guards against reintroducing #4137:

- A contiguous preloaded seed produces a visible window covering exactly
  those posts, with no gaps (no perpetually-loading post).
- An empty seed leaves the window at the baseline, so in-app navigation
  (where the API show response embeds no posts) is unchanged.
- preloadedNearPage() returns only the longest contiguous run of
  store-loaded posts, dropping stray non-contiguous posts (e.g. pulled in
  by extension relationships) — the non-contiguity that caused #4137.

Verified the contiguity assertions fail if the guard is removed.
@imorland imorland requested a review from a team as a code owner June 11, 2026 17:17
@imorland imorland added this to the 2.0.0-rc.4 milestone Jun 11, 2026
@imorland imorland merged commit f14361a into 2.x Jun 11, 2026
25 checks passed
@imorland imorland deleted the im/poststream-seeding-test branch June 11, 2026 17:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant