From 96d32d863de7b26a93bd4f69cdb9a5ca874bae3c Mon Sep 17 00:00:00 2001
From: MareStare <mare.stare.official@gmail.com>
Date: Wed, 19 Mar 2025 01:37:52 +0000
Subject: [PATCH] Add an integration test for aborting the completions on
 Escape

---
 .../server-side-completions-aborting.spec.ts  | 34 +++++++++++++++++++
 ... => server-side-completions-smoke.spec.ts} |  0
 2 files changed, 34 insertions(+)
 create mode 100644 assets/js/autocomplete/__tests__/server-side-completions-aborting.spec.ts
 rename assets/js/autocomplete/__tests__/{server-side-completions.spec.ts => server-side-completions-smoke.spec.ts} (100%)

diff --git a/assets/js/autocomplete/__tests__/server-side-completions-aborting.spec.ts b/assets/js/autocomplete/__tests__/server-side-completions-aborting.spec.ts
new file mode 100644
index 00000000..4bf8617e
--- /dev/null
+++ b/assets/js/autocomplete/__tests__/server-side-completions-aborting.spec.ts
@@ -0,0 +1,34 @@
+import { init } from './context';
+
+it('ignores the autocompletion results if Escape was pressed', async () => {
+  const ctx = await init();
+
+  await Promise.all([ctx.setInput('mar'), ctx.keyDown('Escape')]);
+
+  // The input must be empty because the user typed `mar` and pressed `Escape` right after that
+  ctx.expectUi().toMatchInlineSnapshot(`
+    {
+      "input": "mar<>",
+      "suggestions": [],
+    }
+  `);
+
+  // First request for the local autocomplete index.
+  expect(fetch).toHaveBeenCalledTimes(1);
+
+  await ctx.setInput('mar');
+
+  ctx.expectUi().toMatchInlineSnapshot(`
+    {
+      "input": "mar<>",
+      "suggestions": [
+        "marvelous → beautiful  30",
+        "mare  20",
+        "market  10",
+      ],
+    }
+  `);
+
+  // Second request for the server-side suggestions.
+  expect(fetch).toHaveBeenCalledTimes(2);
+});
diff --git a/assets/js/autocomplete/__tests__/server-side-completions.spec.ts b/assets/js/autocomplete/__tests__/server-side-completions-smoke.spec.ts
similarity index 100%
rename from assets/js/autocomplete/__tests__/server-side-completions.spec.ts
rename to assets/js/autocomplete/__tests__/server-side-completions-smoke.spec.ts