From a5f950516e36331ced7c658b809167e2dadca3b7 Mon Sep 17 00:00:00 2001 From: Haroen Viaene Date: Mon, 17 Feb 2025 20:35:19 +0100 Subject: [PATCH] chore(ci): make helper integration tests runnable (#6562) * chore(ci): make helper integration tests runnable * boolean * hop * load integration env vars in test jobs * v4 * v4 * like this? --------- Co-authored-by: Dhaya <154633+dhayab@users.noreply.github.com> --- .circleci/config.yml | 2 + .../integration-spec/helper.distinct.facet.js | 2 +- .../test/integration-spec/helper.filters.js | 2 +- .../test/integration-spec/helper.numerics.js | 4 +- .../integration-spec/helper.searchOnce.js | 6 ++- .../test/integration-spec/helper.tags.js | 2 +- .../test/integration-utils.js | 49 +++++++++++++++++-- packages/algoliasearch-helper/test/run.js | 15 ++++-- .../spec/algoliasearch.helper/excludes.js | 2 +- .../test/spec/algoliasearch.helper/queryID.js | 4 +- .../test/spec/algoliasearch.helper/tags.js | 12 ++++- .../__tests__/createServerRootMixin.test.js | 2 +- 12 files changed, 81 insertions(+), 21 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 54527cbf77..2e029adce0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -49,12 +49,14 @@ workflows: requires: - build - unit tests: + context: fx-libraries requires: - build - legacy algoliasearch v3: requires: - build - legacy algoliasearch v4: + context: fx-libraries requires: - build - vue v3: diff --git a/packages/algoliasearch-helper/test/integration-spec/helper.distinct.facet.js b/packages/algoliasearch-helper/test/integration-spec/helper.distinct.facet.js index dd1f1723aa..6d5f47f43d 100644 --- a/packages/algoliasearch-helper/test/integration-spec/helper.distinct.facet.js +++ b/packages/algoliasearch-helper/test/integration-spec/helper.distinct.facet.js @@ -32,7 +32,7 @@ test('[INT][FILTERS] Using distinct should let me retrieve all facet without dis }); helper.on('error', function (event) { - done.fail(event.error); + done(event.error); }); helper.on('result', function (event) { diff --git a/packages/algoliasearch-helper/test/integration-spec/helper.filters.js b/packages/algoliasearch-helper/test/integration-spec/helper.filters.js index a83dff7fc2..d2fe7466f4 100644 --- a/packages/algoliasearch-helper/test/integration-spec/helper.filters.js +++ b/packages/algoliasearch-helper/test/integration-spec/helper.filters.js @@ -33,7 +33,7 @@ test('[INT][FILTERS] Should retrieve different values for multi facetted records var calls = 0; helper.on('error', function (event) { - done.fail(event.error); + done(event.error); }); helper.on('result', function (event) { diff --git a/packages/algoliasearch-helper/test/integration-spec/helper.numerics.js b/packages/algoliasearch-helper/test/integration-spec/helper.numerics.js index fdb92f90b4..fb164f5939 100644 --- a/packages/algoliasearch-helper/test/integration-spec/helper.numerics.js +++ b/packages/algoliasearch-helper/test/integration-spec/helper.numerics.js @@ -33,7 +33,7 @@ test('[INT][NUMERICS][RAW-API]Test numeric operations on the helper and their re var calls = 0; helper.on('error', function (event) { - done.fail(event.error); + done(event.error); }); helper.on('result', function (event) { @@ -85,7 +85,7 @@ test('[INT][NUMERICS][MANAGED-API]Test numeric operations on the helper and thei var calls = 0; helper.on('error', function (event) { - done.fail(event.error); + done(event.error); }); helper.on('result', function (event) { diff --git a/packages/algoliasearch-helper/test/integration-spec/helper.searchOnce.js b/packages/algoliasearch-helper/test/integration-spec/helper.searchOnce.js index 85cf869e53..18dc1a3021 100644 --- a/packages/algoliasearch-helper/test/integration-spec/helper.searchOnce.js +++ b/packages/algoliasearch-helper/test/integration-spec/helper.searchOnce.js @@ -31,7 +31,7 @@ test('[INT][SEARCHONCE] Should be able to search once with custom parameters wit var calls = 1; helper.on('error', function (event) { - done.fail(event.error); + done(event.error); }); helper.on('result', function (event) { @@ -39,7 +39,9 @@ test('[INT][SEARCHONCE] Should be able to search once with custom parameters wit expect(event.results.hits.length).toBe(3); done(); } else { - done.fail('Should not trigger the result event until the third call'); + done( + new Error('Should not trigger the result event until the third call') + ); } }); diff --git a/packages/algoliasearch-helper/test/integration-spec/helper.tags.js b/packages/algoliasearch-helper/test/integration-spec/helper.tags.js index 62bc63ddb9..c850548c85 100644 --- a/packages/algoliasearch-helper/test/integration-spec/helper.tags.js +++ b/packages/algoliasearch-helper/test/integration-spec/helper.tags.js @@ -33,7 +33,7 @@ test('[INT][TAGS]Test tags operations on the helper and their results on the alg var calls = 0; helper.on('error', function (event) { - done.fail(event.error); + done(event.error); }); helper.on('result', function (event) { diff --git a/packages/algoliasearch-helper/test/integration-utils.js b/packages/algoliasearch-helper/test/integration-utils.js index 86d3fc2dda..8a796798ff 100644 --- a/packages/algoliasearch-helper/test/integration-utils.js +++ b/packages/algoliasearch-helper/test/integration-utils.js @@ -11,12 +11,50 @@ function setup(indexName, fn) { // all indexing requests must be done in https protocol: 'https:', }); - client.deleteIndex = - client.deleteIndex || - function (deleteIndexName) { + var hasInitIndex = Boolean(client.initIndex); + var originalDeleteIndex = client.deleteIndex + ? client.deleteIndex.bind(client) + : undefined; + + client.deleteIndex = function (deleteIndexName) { + if (!originalDeleteIndex) { return client.initIndex(deleteIndexName).delete(); - }; + } + if (!hasInitIndex) { + return originalDeleteIndex({ indexName: deleteIndexName }); + } + return originalDeleteIndex(deleteIndexName); + }; client.listIndexes = client.listIndexes || client.listIndices; + client.initIndex = + client.initIndex || + function (initIndexName) { + return { + addObjects: function (objects) { + return client.saveObjects({ + objects: objects, + indexName: initIndexName, + }); + }, + clearObjects: function () { + return client.clearObjects({ indexName: initIndexName }); + }, + setSettings: function (settings) { + return client.setSettings({ + indexName: initIndexName, + indexSettings: settings, + }); + }, + waitTask: function (taskID) { + return client.waitForTask({ + indexName, + initIndexName, + taskID: taskID, + }); + }, + }; + }; + client.destroy = client.destroy || function () {}; var index = client.initIndex(indexName); index.addObjects = @@ -32,6 +70,9 @@ function setup(indexName, fn) { }; index.clearIndex = index.clearIndex || index.clearObjects; + // Ensure we go into the right integration branches (and client stays v5) + client.initIndex = hasInitIndex ? client.initIndex : undefined; + return index .clearIndex() .then(function (content) { diff --git a/packages/algoliasearch-helper/test/run.js b/packages/algoliasearch-helper/test/run.js index 0f958d5784..95ee0b3820 100644 --- a/packages/algoliasearch-helper/test/run.js +++ b/packages/algoliasearch-helper/test/run.js @@ -38,11 +38,18 @@ jest.runCLI(dynamicJestConfig, projectsRootPaths).then(function (response) { process.env.INTEGRATION_TEST_APPID, process.env.INTEGRATION_TEST_API_KEY ); - client.deleteIndex = - client.deleteIndex || - function (deleteIndexName) { + var originalDeleteIndex = client.deleteIndex + ? client.deleteIndex.bind(client) + : undefined; + client.deleteIndex = function (deleteIndexName) { + if (!originalDeleteIndex) { return client.initIndex(deleteIndexName).delete(); - }; + } + if (!client.initIndex) { + return originalDeleteIndex({ indexName: deleteIndexName }); + } + return originalDeleteIndex(deleteIndexName); + }; client.listIndexes = client.listIndexes || client.listIndices; client.listIndexes().then((content) => { diff --git a/packages/algoliasearch-helper/test/spec/algoliasearch.helper/excludes.js b/packages/algoliasearch-helper/test/spec/algoliasearch.helper/excludes.js index f80c1f8f7e..ec533eb8f7 100644 --- a/packages/algoliasearch-helper/test/spec/algoliasearch.helper/excludes.js +++ b/packages/algoliasearch-helper/test/spec/algoliasearch.helper/excludes.js @@ -40,7 +40,7 @@ test('removeExclude should remove an exclusion', function (done) { try { helper.removeExclude(facetName, facetValueToExclude); } catch (e) { - done.fail('Removing unset exclusions should be ok...'); + done(new Error('Removing unset exclusions should be ok...')); } done(); diff --git a/packages/algoliasearch-helper/test/spec/algoliasearch.helper/queryID.js b/packages/algoliasearch-helper/test/spec/algoliasearch.helper/queryID.js index 80fcbd5067..e9c3dcf6b9 100644 --- a/packages/algoliasearch-helper/test/spec/algoliasearch.helper/queryID.js +++ b/packages/algoliasearch-helper/test/spec/algoliasearch.helper/queryID.js @@ -32,7 +32,7 @@ test('the response handler should check that the query is not outdated', functio callCount++; if (!shouldTriggerResult) { - done.fail('The id was outdated'); + done(new Error('The id was outdated')); } }); @@ -78,7 +78,7 @@ test('the error handler should check that the query is not outdated', function ( callCount++; if (!shouldTriggerError) { - done.fail('The id was outdated'); + done(new Error('The id was outdated')); } }); diff --git a/packages/algoliasearch-helper/test/spec/algoliasearch.helper/tags.js b/packages/algoliasearch-helper/test/spec/algoliasearch.helper/tags.js index b987bdbb46..d7d0dc9d9d 100644 --- a/packages/algoliasearch-helper/test/spec/algoliasearch.helper/tags.js +++ b/packages/algoliasearch-helper/test/spec/algoliasearch.helper/tags.js @@ -36,7 +36,11 @@ test('Tags filters: switching between advanced and simple API should be forbidde try { helper.setQueryParameter('tagFilters', complexQuery); - done.fail("Can't switch directly from the advanced API to the managed API"); + done( + new Error( + "Can't switch directly from the advanced API to the managed API" + ) + ); } catch (e0) { helper.clearTags().setQueryParameter('tagFilters', complexQuery); expect(requestBuilder._getTagFilters(helper.state)).toEqual(complexQuery); @@ -44,7 +48,11 @@ test('Tags filters: switching between advanced and simple API should be forbidde try { helper.addTag('tag').addTag('tag2'); - done.fail("Can't switch directly from the managed API to the advanced API"); + done( + new Error( + "Can't switch directly from the managed API to the advanced API" + ) + ); } catch (e1) { helper .setQueryParameter('tagFilters', undefined) diff --git a/packages/vue-instantsearch/src/util/__tests__/createServerRootMixin.test.js b/packages/vue-instantsearch/src/util/__tests__/createServerRootMixin.test.js index 8c6674780f..1d39879636 100644 --- a/packages/vue-instantsearch/src/util/__tests__/createServerRootMixin.test.js +++ b/packages/vue-instantsearch/src/util/__tests__/createServerRootMixin.test.js @@ -701,7 +701,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear }) // jest throws an error we need to catch, since stuck in the flow .catch((e) => { - done.fail(e); + done(e); }) ); },