From a0bcbcb6e54445db5be885facc50240e386a2ffe Mon Sep 17 00:00:00 2001 From: Charlotte Vermandel Date: Wed, 5 Jan 2022 13:50:59 +0100 Subject: [PATCH 1/3] Change index creation and wait method in tests --- package.json | 2 +- .../configure.attributes-to-retrieve.tests.ts | 110 ++++++++---------- tests/facets-distribution.tests.ts | 15 ++- tests/filter.tests.ts | 15 ++- tests/geosearch.tests.ts | 15 ++- tests/highlight.tests.ts | 25 ++-- tests/pagination.tests.ts | 15 ++- tests/snippets.tests.ts | 15 ++- yarn.lock | 8 +- 9 files changed, 101 insertions(+), 119 deletions(-) diff --git a/package.json b/package.json index 44f47ed8..67c090e1 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "url": "https://github.com/meilisearch/instant-meilisearch.git" }, "dependencies": { - "meilisearch": "^0.23.0" + "meilisearch": "0.24.0-beta.0" }, "devDependencies": { "@babel/cli": "^7.16.0", diff --git a/tests/configure.attributes-to-retrieve.tests.ts b/tests/configure.attributes-to-retrieve.tests.ts index f17a3403..ef8cec8e 100644 --- a/tests/configure.attributes-to-retrieve.tests.ts +++ b/tests/configure.attributes-to-retrieve.tests.ts @@ -2,16 +2,16 @@ import { searchClient, dataset, Movies } from './assets/utils' describe('Instant MeiliSearch Browser test', () => { beforeAll(async () => { - try { - await searchClient.MeiliSearchClient.deleteIndex('movies') - } catch (e) { - // movies does not exist - } - const moviesUpdate = await searchClient.MeiliSearchClient.index( + const deleteTask = await searchClient.MeiliSearchClient.deleteIndex( + 'movies' + ) + await searchClient.MeiliSearchClient.waitForTask(deleteTask.uid) + + const documentsTask = await searchClient.MeiliSearchClient.index( 'movies' ).addDocuments(dataset) - await searchClient.MeiliSearchClient.index('movies').waitForPendingUpdate( - moviesUpdate.updateId + await searchClient.MeiliSearchClient.index('movies').waitForTask( + documentsTask.uid ) }) @@ -43,18 +43,14 @@ describe('Instant MeiliSearch Browser test', () => { }, }, ]) - const notRetrieved = [ - 'id', - 'overview', - 'genres', - 'poster', - 'release_date', - 'title', - ] + const hit = response.results[0].hits[0] - notRetrieved.map((attribute: string) => - expect(hit[attribute]).not.toBeDefined() - ) + expect(hit.id).not.toBeDefined() + expect(hit.overview).not.toBeDefined() + expect(hit.genres).not.toBeDefined() + expect(hit.poster).not.toBeDefined() + expect(hit.release_date).not.toBeDefined() + expect(hit.title).not.toBeDefined() }) test('Test attributesToRetrieve on one non existing attribute', async () => { @@ -67,20 +63,15 @@ describe('Instant MeiliSearch Browser test', () => { }, }, ]) - const notRetrieved = [ - 'id', - 'overview', - 'genres', - 'poster', - 'release_date', - 'title', - ] + const hit = response.results[0].hits[0] - notRetrieved.map( - (attribute: string) => - hit._highlightResult && - expect(hit._highlightResult[attribute]).toBeDefined() - ) + + expect(hit._highlightResult?.id).toBeDefined() + expect(hit._highlightResult?.overview).toBeDefined() + expect(hit._highlightResult?.genres).toBeDefined() + expect(hit._highlightResult?.poster).toBeDefined() + expect(hit._highlightResult?.release_date).toBeDefined() + expect(hit._highlightResult?.title).toBeDefined() }) test('Test attributesToRetrieve on one existing attribute', async () => { @@ -93,12 +84,14 @@ describe('Instant MeiliSearch Browser test', () => { }, }, ]) - const notRetrieved = ['id', 'overview', 'genres', 'poster', 'release_date'] const hit = response.results[0].hits[0] expect(hit.title).toEqual('Ariel') - notRetrieved.map((attribute: string) => - expect(hit[attribute]).not.toBeDefined() - ) + expect(hit.id).not.toBeDefined() + expect(hit.overview).not.toBeDefined() + expect(hit.genres).not.toBeDefined() + expect(hit.poster).not.toBeDefined() + expect(hit.release_date).not.toBeDefined() + expect(hit.title).toBeDefined() }) test('Test attributesToRetrieve on default value', async () => { @@ -110,18 +103,24 @@ describe('Instant MeiliSearch Browser test', () => { }, }, ]) - const notRetrieved = ['id', 'overview', 'genres', 'poster', 'release_date'] + const hit = response.results[0].hits[0] expect(hit.title).toEqual('Ariel') expect(hit._highlightResult).toBeDefined() - notRetrieved.map((attribute: string) => - expect(hit[attribute]).toBeDefined() - ) - notRetrieved.map( - (attribute: string) => - hit._highlightResult && - expect(hit._highlightResult[attribute]).toBeDefined() - ) + + expect(hit.id).toBeDefined() + expect(hit.overview).toBeDefined() + expect(hit.genres).toBeDefined() + expect(hit.poster).toBeDefined() + expect(hit.release_date).toBeDefined() + expect(hit.title).toBeDefined() + + expect(hit._highlightResult?.id).toBeDefined() + expect(hit._highlightResult?.overview).toBeDefined() + expect(hit._highlightResult?.genres).toBeDefined() + expect(hit._highlightResult?.poster).toBeDefined() + expect(hit._highlightResult?.release_date).toBeDefined() + expect(hit._highlightResult?.title).toBeDefined() }) test('Test attributesToRetrieve on wild card', async () => { @@ -134,21 +133,14 @@ describe('Instant MeiliSearch Browser test', () => { }, }, ]) - const retrieved = [ - 'id', - 'overview', - 'genres', - 'poster', - 'release_date', - 'title', - ] + const hit = response.results[0].hits[0] expect(hit.title).toEqual('Ariel') - retrieved.map((attribute: string) => expect(hit[attribute]).toBeDefined()) - retrieved.map( - (attribute: string) => - hit._highlightResult && - expect(hit._highlightResult[attribute]).toBeDefined() - ) + expect(hit._highlightResult?.id).toBeDefined() + expect(hit._highlightResult?.overview).toBeDefined() + expect(hit._highlightResult?.genres).toBeDefined() + expect(hit._highlightResult?.poster).toBeDefined() + expect(hit._highlightResult?.release_date).toBeDefined() + expect(hit._highlightResult?.title).toBeDefined() }) }) diff --git a/tests/facets-distribution.tests.ts b/tests/facets-distribution.tests.ts index 7e3c5025..3a68cdd3 100644 --- a/tests/facets-distribution.tests.ts +++ b/tests/facets-distribution.tests.ts @@ -2,19 +2,18 @@ import { searchClient, dataset } from './assets/utils' describe('Instant MeiliSearch Browser test', () => { beforeAll(async () => { - try { - await searchClient.MeiliSearchClient.deleteIndex('movies') - } catch (e) { - // movies does not exist - } + const deleteTask = await searchClient.MeiliSearchClient.deleteIndex( + 'movies' + ) + await searchClient.MeiliSearchClient.waitForTask(deleteTask.uid) await searchClient.MeiliSearchClient.index( 'movies' ).updateFilterableAttributes(['genres']) - const moviesUpdate = await searchClient.MeiliSearchClient.index( + const documentsTask = await searchClient.MeiliSearchClient.index( 'movies' ).addDocuments(dataset) - await searchClient.MeiliSearchClient.index('movies').waitForPendingUpdate( - moviesUpdate.updateId + await searchClient.MeiliSearchClient.index('movies').waitForTask( + documentsTask.uid ) }) diff --git a/tests/filter.tests.ts b/tests/filter.tests.ts index 8ba08315..d7851788 100644 --- a/tests/filter.tests.ts +++ b/tests/filter.tests.ts @@ -2,19 +2,18 @@ import { searchClient, dataset, Movies } from './assets/utils' describe('Instant MeiliSearch Browser test', () => { beforeAll(async () => { - try { - await searchClient.MeiliSearchClient.deleteIndex('movies') - } catch (e) { - // movies does not exist - } + const deleteTask = await searchClient.MeiliSearchClient.deleteIndex( + 'movies' + ) + await searchClient.MeiliSearchClient.waitForTask(deleteTask.uid) await searchClient.MeiliSearchClient.index( 'movies' ).updateFilterableAttributes(['genres', 'title']) - const moviesUpdate = await searchClient.MeiliSearchClient.index( + const documentsTask = await searchClient.MeiliSearchClient.index( 'movies' ).addDocuments(dataset) - await searchClient.MeiliSearchClient.index('movies').waitForPendingUpdate( - moviesUpdate.updateId + await searchClient.MeiliSearchClient.index('movies').waitForTask( + documentsTask.uid ) }) diff --git a/tests/geosearch.tests.ts b/tests/geosearch.tests.ts index 43452e50..a97f7bb8 100644 --- a/tests/geosearch.tests.ts +++ b/tests/geosearch.tests.ts @@ -2,22 +2,21 @@ import { searchClient, geoDataset, City } from './assets/utils' describe('Instant MeiliSearch Browser test', () => { beforeAll(async () => { - try { - await searchClient.MeiliSearchClient.deleteIndex('geotest') - } catch (e) { - // geotest does not exist - } + const deleteTask = await searchClient.MeiliSearchClient.deleteIndex( + 'geotest' + ) + await searchClient.MeiliSearchClient.waitForTask(deleteTask.uid) await searchClient.MeiliSearchClient.index( 'geotest' ).updateFilterableAttributes(['_geo']) await searchClient.MeiliSearchClient.index( 'geotest' ).updateSortableAttributes(['_geo']) - const geotestUpdate = await searchClient.MeiliSearchClient.index( + const documentsTask = await searchClient.MeiliSearchClient.index( 'geotest' ).addDocuments(geoDataset) - await searchClient.MeiliSearchClient.index('geotest').waitForPendingUpdate( - geotestUpdate.updateId + await searchClient.MeiliSearchClient.index('movies').waitForTask( + documentsTask.uid ) }) diff --git a/tests/highlight.tests.ts b/tests/highlight.tests.ts index 5c2aae86..5c40fe52 100644 --- a/tests/highlight.tests.ts +++ b/tests/highlight.tests.ts @@ -2,23 +2,18 @@ import { searchClient, dataset, Movies } from './assets/utils' describe('Highlight Browser test', () => { beforeAll(async () => { - try { - await searchClient.MeiliSearchClient.deleteIndex('movies') - } catch (e) { - // movies does not exist - } - const moviesUpdate = await searchClient.MeiliSearchClient.index( - 'movies' - ).addDocuments(dataset) - const settingsUpdate = await searchClient.MeiliSearchClient.index( + const deleteTask = await searchClient.MeiliSearchClient.deleteIndex( 'movies' - ).updateFilterableAttributes(['genres']) // if settings update is put before document addition relevancy is impacted - - await searchClient.MeiliSearchClient.index('movies').waitForPendingUpdate( - moviesUpdate.updateId ) - await searchClient.MeiliSearchClient.index('movies').waitForPendingUpdate( - settingsUpdate.updateId + await searchClient.MeiliSearchClient.waitForTask(deleteTask.uid) + await searchClient.MeiliSearchClient.index( + 'movies' + ).updateFilterableAttributes(['genres']) + const documentsTask = await searchClient.MeiliSearchClient.index( + 'movies' + ).addDocuments(dataset) + await searchClient.MeiliSearchClient.index('movies').waitForTask( + documentsTask.uid ) }) diff --git a/tests/pagination.tests.ts b/tests/pagination.tests.ts index 6f3be88d..1af45871 100644 --- a/tests/pagination.tests.ts +++ b/tests/pagination.tests.ts @@ -3,19 +3,18 @@ import { searchClient, dataset, Movies } from './assets/utils' describe('Pagination browser test', () => { beforeAll(async () => { - try { - await searchClient.MeiliSearchClient.deleteIndex('movies') - } catch (e) { - // movies does not exist - } + const deleteTask = await searchClient.MeiliSearchClient.deleteIndex( + 'movies' + ) + await searchClient.MeiliSearchClient.waitForTask(deleteTask.uid) await searchClient.MeiliSearchClient.index( 'movies' ).updateFilterableAttributes(['genres']) - const moviesUpdate = await searchClient.MeiliSearchClient.index( + const documentsTask = await searchClient.MeiliSearchClient.index( 'movies' ).addDocuments(dataset) - await searchClient.MeiliSearchClient.index('movies').waitForPendingUpdate( - moviesUpdate.updateId + await searchClient.MeiliSearchClient.index('movies').waitForTask( + documentsTask.uid ) }) diff --git a/tests/snippets.tests.ts b/tests/snippets.tests.ts index 9a3ef7df..bb44ffa2 100644 --- a/tests/snippets.tests.ts +++ b/tests/snippets.tests.ts @@ -2,19 +2,18 @@ import { searchClient, dataset, Movies } from './assets/utils' describe('Snippet Browser test', () => { beforeAll(async () => { - try { - await searchClient.MeiliSearchClient.deleteIndex('movies') - } catch (e) { - // movies does not exist - } + const deleteTask = await searchClient.MeiliSearchClient.deleteIndex( + 'movies' + ) + await searchClient.MeiliSearchClient.waitForTask(deleteTask.uid) await searchClient.MeiliSearchClient.index( 'movies' ).updateFilterableAttributes(['genres']) - const moviesUpdate = await searchClient.MeiliSearchClient.index( + const documentsTask = await searchClient.MeiliSearchClient.index( 'movies' ).addDocuments(dataset) - await searchClient.MeiliSearchClient.index('movies').waitForPendingUpdate( - moviesUpdate.updateId + await searchClient.MeiliSearchClient.index('movies').waitForTask( + documentsTask.uid ) }) diff --git a/yarn.lock b/yarn.lock index 464add61..3ab421b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5067,10 +5067,10 @@ mdn-data@2.0.4: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== -meilisearch@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/meilisearch/-/meilisearch-0.23.0.tgz#eed5098bd147c13658c3f92e658df9cbfb9e8953" - integrity sha512-bLNonPJK2pJz2akjwolcc/Eqnz/GKJ7y1I4Flg4zjL+v0yPFyIGFFdfe0dw93JWFJWj/RbLS2Q6dDTobZQ9Ehg== +meilisearch@0.24.0-beta.0: + version "0.24.0-beta.0" + resolved "https://registry.yarnpkg.com/meilisearch/-/meilisearch-0.24.0-beta.0.tgz#ebbc7c59fe7152c4dc0e9e3002a906f1e7c4a89e" + integrity sha512-dQDyTPs1e8Zf+LmGv7gEfWPNuv1+3OeFjRCVqSkUsTFEApD2zZtOPstXYSIgksqxyt9XTe38CCQO0m4DVVrP3A== dependencies: cross-fetch "^3.1.4" From ec1ee604bb7e1e4467765d0c762855397d5fc864 Mon Sep 17 00:00:00 2001 From: Charlotte Vermandel Date: Thu, 6 Jan 2022 12:30:49 +0100 Subject: [PATCH 2/3] Add types tests --- .github/workflows/test.yml | 19 +++++++++++++++++++ bors.toml | 1 + package.json | 9 +++++---- tsconfig.json | 11 ++--------- tsconfig.test.json | 2 +- 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fd76aa70..1d8b92c2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -90,3 +90,22 @@ jobs: uses: ibiqlik/action-yamllint@v3 with: config_file: .yamllint.yml + types_test: + runs-on: ubuntu-latest + name: types-check + steps: + - uses: actions/checkout@v2 + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: | + ./node_modules + key: ${{ hashFiles('yarn.lock') }} + - name: Setup node + uses: actions/setup-node@v2 + - name: Install dependencies + run: yarn --dev + - name: Build project + run: yarn build + - name: Run types check + run: yarn types diff --git a/bors.toml b/bors.toml index fc5af6ad..dd0e2db4 100644 --- a/bors.toml +++ b/bors.toml @@ -1,5 +1,6 @@ status = [ 'style-check', + 'types-check', 'integration-tests (Node.js 12)', 'integration-tests (Node.js 14)', 'cypress-run' diff --git a/package.json b/package.json index 67c090e1..926b4557 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@meilisearch/instant-meilisearch", - "version": "0.5.10", + "version": "0.5.11", "private": false, "description": "The search client to use MeiliSearch with InstantSearch.", "scripts": { @@ -21,10 +21,11 @@ "playground:angular": "yarn --cwd ./playgrounds/angular && yarn --cwd ./playgrounds/angular start", "postbuild": "yarn typingsheader", "typingsheader": "node scripts/build.js", - "build": "yarn cleanup && rollup -c rollup.config.js && rollup --environment NODE_ENV:production -c rollup.config.js && tsc --emitDeclarationOnly", + "build": "yarn cleanup && rollup -c rollup.config.js && rollup --environment NODE_ENV:production -c rollup.config.js", "dev": "rollup -c rollup.config.js --watch", "lint": "eslint --ext .js,.ts,.tsx,.vue .", - "lint:fix": "eslint --ext .js,.ts,.tsx,.vue --fix ." + "lint:fix": "eslint --ext .js,.ts,.tsx,.vue --fix .", + "types": "yarn tsc" }, "main": "./dist/instant-meilisearch.umd.js", "module": "./dist/instant-meilisearch.esm.js", @@ -54,7 +55,7 @@ "url": "https://github.com/meilisearch/instant-meilisearch.git" }, "dependencies": { - "meilisearch": "0.24.0-beta.0" + "meilisearch": "0.23.0" }, "devDependencies": { "@babel/cli": "^7.16.0", diff --git a/tsconfig.json b/tsconfig.json index e214d400..8ee9e3c2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,7 @@ { "compilerOptions": { "module": "esnext", + "noEmit": true, "allowJs": false, "removeComments": false, "declaration": true, @@ -23,13 +24,5 @@ "noUnusedParameters": true, "isolatedModules": true }, - "include": [ - "src" - ], // files to include during compilation - "exclude": [ - "tests", - "*.js", - "scripts", - "**/__tests__/*.ts" - ], + "exclude": ["playgrounds/angular"] } diff --git a/tsconfig.test.json b/tsconfig.test.json index c281c907..0ace77c3 100644 --- a/tsconfig.test.json +++ b/tsconfig.test.json @@ -6,5 +6,5 @@ "include": [ "./**/*" ], - "exclude": [] + "exclude": ["playgrounds/angular"] } From 4f97183f27cd6015aa90437981fb8a12a8918a98 Mon Sep 17 00:00:00 2001 From: Charlotte Vermandel Date: Thu, 6 Jan 2022 15:13:50 +0100 Subject: [PATCH 3/3] Update meilisearch js --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 926b4557..7842f2fd 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "url": "https://github.com/meilisearch/instant-meilisearch.git" }, "dependencies": { - "meilisearch": "0.23.0" + "meilisearch": "0.24.0-beta.0" }, "devDependencies": { "@babel/cli": "^7.16.0",