aboutsummaryrefslogtreecommitdiffstats
path: root/tools/post-cancel-test.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-01 06:49:19 -0700
committerAdam Soltys <[email protected]>2026-10-01 06:49:19 -0700
commit68ff290e07c0e1786cf8b8f3a87e38872ad7f8ba (patch)
treec85847c8f4a06b0a6b7dab8abb2d2eb54fefa226 /tools/post-cancel-test.js
parent4b3291fdbd0b34b4d2df91a59bea93885de29508 (diff)
parent5ff909d37fe32ba04a841941593d95c7b3498ec3 (diff)
downloadcoinosv3-68ff290e07c0e1786cf8b8f3a87e38872ad7f8ba.tar.gz
coinosv3-68ff290e07c0e1786cf8b8f3a87e38872ad7f8ba.zip
Merge prod into master
Diffstat (limited to 'tools/post-cancel-test.js')
-rw-r--r--tools/post-cancel-test.js20
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');