fix(edit-menu): allow pseudonymous reply deletion (#1076)

* fix(edit-menu): allow pseudonymous reply deletion

* fix(edit-menu): ignore non-pseudonymous mode
This commit is contained in:
Tommaso Casaburi
2026-03-13 16:37:44 +08:00
committed by GitHub
parent aedee9fb83
commit 726522586c
4 changed files with 127 additions and 17 deletions
@@ -14,6 +14,7 @@ const testState = vi.hoisted(() => ({
hidden: false,
hideMock: vi.fn(),
mediaInfo: undefined as { thumbnail?: string; type?: string; url?: string } | undefined,
pseudonymityMode: undefined as string | undefined,
privileges: {
isAccountCommentAuthor: false,
isAccountMod: false,
@@ -90,6 +91,10 @@ vi.mock('../../../../hooks/use-author-privileges', () => ({
default: () => testState.privileges,
}));
vi.mock('../../../../hooks/use-board-pseudonymity-mode', () => ({
useBoardPseudonymityMode: () => testState.pseudonymityMode,
}));
vi.mock('../../../../hooks/use-hide', () => ({
default: () => ({
hidden: testState.hidden,
@@ -151,6 +156,7 @@ describe('PostMenuMobile', () => {
vi.clearAllMocks();
testState.hidden = false;
testState.mediaInfo = undefined;
testState.pseudonymityMode = undefined;
testState.privileges = {
isAccountCommentAuthor: false,
isAccountMod: false,
@@ -197,6 +203,22 @@ describe('PostMenuMobile', () => {
expect(testState.hideMock).toHaveBeenCalled();
});
it('shows edit controls on pseudonymous boards even without a local author-address match', async () => {
testState.pseudonymityMode = 'per-post';
await renderMenu('/mu');
expect(document.body.querySelector('[data-testid="edit-menu"]')?.textContent).toBe('cid-1');
});
it("does not show edit controls when pseudonymity mode is 'none' and the user lacks privileges", async () => {
testState.pseudonymityMode = 'none';
await renderMenu('/mu');
expect(document.body.querySelector('[data-testid="edit-menu"]')).toBeNull();
});
it('omits thread hiding on the root thread route and suppresses the menu for deleted posts', async () => {
await renderMenu('/mu/thread/cid-1');
await openMenu();