diff --git a/packages/autocomplete/src/index.spec.ts b/packages/autocomplete/src/index.spec.ts index 8d17de4a04..570643055e 100644 --- a/packages/autocomplete/src/index.spec.ts +++ b/packages/autocomplete/src/index.spec.ts @@ -497,6 +497,11 @@ describe('completer.completer', function () { }); context('when context is aggregation query', function () { + it('returns all suggestions', async function () { + const i = 'db.shipwrecks.aggregate([{'; + expect((await completer(standalone440, i))[0]).to.be.an('array'); + }); + it('has several matches', async function () { const i = 'db.shipwrecks.aggregate([ { $so'; expect(await completer(standalone440, i)).to.deep.equal([ diff --git a/packages/autocomplete/src/index.ts b/packages/autocomplete/src/index.ts index eafa68a0a6..c13b7fbfa5 100644 --- a/packages/autocomplete/src/index.ts +++ b/packages/autocomplete/src/index.ts @@ -290,6 +290,12 @@ export async function completer( return [[], line]; } +// from https://github.com/mongodb-js/devtools-shared/commit/e4a5b00a83b19a76bdf380799a421511230168db +function satisfiesVersion(v1: string, v2: string): boolean { + const isGTECheck = /^\d+?\.\d+?\.\d+?$/.test(v2); + return semver.satisfies(v1, isGTECheck ? `>=${v2}` : v2); +} + function isAcceptable( params: AutocompleteParameters, entry: { @@ -310,7 +316,10 @@ function isAcceptable( !entry[versionKey] || // TODO: when https://jira.mongodb.org/browse/SPM-2327 is done we can rely on server_version being present !connectionInfo?.server_version || - semver.gte(connectionInfo.server_version, entry[versionKey] as string); + satisfiesVersion( + connectionInfo.server_version, + entry[versionKey] as string + ); } const isAcceptableEnvironment = !entry.env || diff --git a/packages/cli-repl/test/repl-helpers.ts b/packages/cli-repl/test/repl-helpers.ts index 9010d5cba2..83142b0bc2 100644 --- a/packages/cli-repl/test/repl-helpers.ts +++ b/packages/cli-repl/test/repl-helpers.ts @@ -73,7 +73,7 @@ async function waitEval(bus: MongoshBus) { async function waitCompletion(bus: MongoshBus) { await Promise.race([ waitBus(bus, 'mongosh:autocompletion-complete'), - new Promise((resolve) => setTimeout(resolve, 5000)?.unref?.()), + new Promise((resolve) => setTimeout(resolve, 10_000)?.unref?.()), ]); await tick(); }