diff options
| author | Adam Soltys <[email protected]> | 2026-09-30 18:03:33 +0000 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-09-30 18:03:33 +0000 |
| commit | 0570f48910ddc4ea10d27fb8ab7992fbd013a0b7 (patch) | |
| tree | dbc1e5ece94bc71fcd8bb7e89f61043933c1992c /tools/post-cancel-test.js | |
| parent | 95eaf11d116260b101c81346ba41810aacf49a7d (diff) | |
| parent | cfeacb1a7a10766565ed3eaab13154096478c837 (diff) | |
| download | coinosv3-0570f48910ddc4ea10d27fb8ab7992fbd013a0b7.tar.gz coinosv3-0570f48910ddc4ea10d27fb8ab7992fbd013a0b7.zip | |
Merge remote-tracking branch 'cs/prod'
Diffstat (limited to 'tools/post-cancel-test.js')
| -rw-r--r-- | tools/post-cancel-test.js | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tools/post-cancel-test.js b/tools/post-cancel-test.js new file mode 100644 index 0000000..217e743 --- /dev/null +++ b/tools/post-cancel-test.js @@ -0,0 +1,20 @@ +// Canceling a new post closes the composer and discards every part of its +// saved state, including a late attachment result. +import assert from 'node:assert/strict'; + +const source = await Bun.file('src/features/messages.js').text(); +const start = source.indexOf('function cancelPost()'); +const end = source.indexOf('\n }', start); +const cancel = source.slice(start, end); +assert(start > 0, 'post cancel handler exists'); +assert(cancel.includes('postAttachGeneration++'), 'late uploads are invalidated'); +assert(cancel.includes('ui.profCompose = null'), 'composer is closed'); +assert(cancel.includes('ui.postMedia = []'), 'pending attachment metadata is removed'); +assert(cancel.includes('ui.postPreview = false'), 'preview state is removed'); +assert(cancel.includes('discardDraft(POST_DRAFT)'), 'persisted draft is removed immediately'); +assert(source.includes("composeText().length > 20"), 'drafts over 20 characters require confirmation'); +assert(source.includes("ui.postUploading || (ui.postMedia || []).length"), 'attachments require confirmation'); +assert(source.includes("onClick: requestCancelPost }, t('cancel')"), 'Cancel button uses the guarded discard handler'); +assert(source.includes("onClick: cancelPost }, t('postDiscard')"), 'warning can confirm the discard'); + +console.log('✓ Cancel warns for substantial drafts, then closes the form and removes its complete saved draft'); |
