From cbe412d02707a0feeebe1e39ef82cfcb4cc26a26 Mon Sep 17 00:00:00 2001 From: Neil Macneale Date: Fri, 29 Jul 2022 15:52:43 -0700 Subject: [PATCH 1/5] Remove jest-expect-message --- package-lock.json | 15 +-------------- package.json | 10 ++-------- 2 files changed, 3 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index f0e28ba..f5ef8a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,8 +12,7 @@ "faunadb": "^4.6.0" }, "devDependencies": { - "jest": "^28.0.0", - "jest-expect-message": "^1.0.2" + "jest": "^28.0.0" }, "engines": { "node": ">=10.0" @@ -4800,12 +4799,6 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-expect-message": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jest-expect-message/-/jest-expect-message-1.0.2.tgz", - "integrity": "sha512-WFiXMgwS2lOqQZt1iJMI/hOXpUm32X+ApsuzYcQpW5m16Pv6/Gd9kgC+Q+Q1YVNU04kYcAOv9NXMnjg6kKUy6Q==", - "dev": true - }, "node_modules/jest-get-type": { "version": "28.0.2", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", @@ -11629,12 +11622,6 @@ "jest-util": "^28.1.3" } }, - "jest-expect-message": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jest-expect-message/-/jest-expect-message-1.0.2.tgz", - "integrity": "sha512-WFiXMgwS2lOqQZt1iJMI/hOXpUm32X+ApsuzYcQpW5m16Pv6/Gd9kgC+Q+Q1YVNU04kYcAOv9NXMnjg6kKUy6Q==", - "dev": true - }, "jest-get-type": { "version": "28.0.2", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", diff --git a/package.json b/package.json index 5fb4df9..51f05ec 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,7 @@ "faunadb": "^4.6.0" }, "devDependencies": { - "jest": "^28.0.0", - "jest-expect-message": "^1.0.2" + "jest": "^28.0.0" }, "peerDependencies": { "serverless": "3.x" @@ -34,10 +33,5 @@ "bugs": { "url": "https://github.com/fauna-labs/serverless-fauna/issues" }, - "homepage": "https://github.com/fauna-labs/serverless-fauna#readme", - "jest": { - "setupFilesAfterEnv": [ - "jest-expect-message" - ] - } + "homepage": "https://github.com/fauna-labs/serverless-fauna#readme" } From 97f5220dc6c724a12bc048030c8ac545cb12bf8b Mon Sep 17 00:00:00 2001 From: Neil Macneale Date: Fri, 29 Jul 2022 15:55:22 -0700 Subject: [PATCH 2/5] Fixed tests to run without jest-expect-message --- tests/commands/DeployCommand.test.js | 8 ++++---- tests/fauna/DeployQueries.test.js | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/commands/DeployCommand.test.js b/tests/commands/DeployCommand.test.js index e78071d..c65522b 100644 --- a/tests/commands/DeployCommand.test.js +++ b/tests/commands/DeployCommand.test.js @@ -119,7 +119,7 @@ describe('DeployCommand', () => { ] for (let { label, input, output } of cases) { - expect(command.indexAdapter(input), label).toEqual(output) + expect(command.indexAdapter(input)).toEqual(output) } }) @@ -166,7 +166,7 @@ describe('DeployCommand', () => { ] for (let { label, input, output } of cases) { - expect(command.indexAdapter(input), label).toEqual(output) + expect(command.indexAdapter(input)).toEqual(output) } }) @@ -229,7 +229,7 @@ describe('DeployCommand', () => { ] for (let { label, input, output } of cases) { - expect(command.indexAdapter(input), label).toEqual(output) + expect(command.indexAdapter(input)).toEqual(output) } }) }) @@ -346,7 +346,7 @@ describe('DeployCommand', () => { ] for (let { label, input, output } of cases) { - expect(command.roleAdapter(input), label).toEqual(output) + expect(command.roleAdapter(input)).toEqual(output) } }) diff --git a/tests/fauna/DeployQueries.test.js b/tests/fauna/DeployQueries.test.js index 90d6cba..b6db457 100644 --- a/tests/fauna/DeployQueries.test.js +++ b/tests/fauna/DeployQueries.test.js @@ -66,7 +66,7 @@ describe('Fauna deploy', () => { config: configForDeploy, }) - expect(isSchemaUpdated, 'schema updated').toBeTruthy() + expect(isSchemaUpdated).toBeTruthy() const { collections, indexes, functions, roles } = await testClient.query( q.Let( @@ -84,7 +84,7 @@ describe('Fauna deploy', () => { const omitDynamicFields = ({ ts, ref, ...rest }) => rest - expect(collections.data.map(omitDynamicFields), 'collections').toEqual([ + expect(collections.data.map(omitDynamicFields)).toEqual([ { history_days: 30, name: 'users', @@ -100,7 +100,7 @@ describe('Fauna deploy', () => { }, ]) - expect(indexes.data.map(omitDynamicFields), 'indexes').toEqual([ + expect(indexes.data.map(omitDynamicFields)).toEqual([ { active: true, serialized: true, @@ -123,7 +123,7 @@ describe('Fauna deploy', () => { }, ]) - expect(functions.data.map(omitDynamicFields), 'functions').toEqual([ + expect(functions.data.map(omitDynamicFields)).toEqual([ { name: 'register', data: defaultData, @@ -140,7 +140,7 @@ describe('Fauna deploy', () => { }, ]) - expect(roles.data.map(omitDynamicFields), 'roles').toEqual([ + expect(roles.data.map(omitDynamicFields)).toEqual([ { name: 'test_circular_dependency', data: defaultData, From bd20631a919b456de2918890d7db33549d6ba955 Mon Sep 17 00:00:00 2001 From: Neil Macneale Date: Fri, 29 Jul 2022 15:55:35 -0700 Subject: [PATCH 3/5] Add default endpoint for a local container --- tests/config.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/config.js b/tests/config.js index e52d06f..d576f74 100644 --- a/tests/config.js +++ b/tests/config.js @@ -5,10 +5,10 @@ try { testConfig = require('../testConfig.json') } catch (err) { testConfig = { - domain: env.FAUNA_DOMAIN, - scheme: env.FAUNA_SCHEME, - port: env.FAUNA_PORT, - secret: env.FAUNA_ROOT_KEY, + domain: env.FAUNA_DOMAIN || "localhost", + scheme: env.FAUNA_SCHEME || "http", + port: env.FAUNA_PORT || "8443", + secret: env.FAUNA_ROOT_KEY || "secret", } } From e5c0143638cdfd2bd9a2004a3a9158ef11909316 Mon Sep 17 00:00:00 2001 From: Cleve Stuart Date: Mon, 1 Aug 2022 08:52:04 -0700 Subject: [PATCH 4/5] Have README give instructions for testing --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index a7bc664..ff406bb 100644 --- a/README.md +++ b/README.md @@ -332,6 +332,14 @@ collections: deletion_policy: destroy ``` +# Developers +To develop on this repository, clone it and make any changes you would like to issue in a pull request. + +You can run the test suite by: + +1. Starting a local fauna container with `docker run --rm --name faunadb-sls-test -p 8443:8443 fauna/faunadb` +2. Running the test suite with `npm test` + --- Copyright Fauna, Inc. or its affiliates. All rights reserved. SPDX-License-Identifier: MIT-0 From ccb85733315b66aa16265d4a9ea59bb390cfc71f Mon Sep 17 00:00:00 2001 From: Neil Macneale Date: Mon, 1 Aug 2022 09:59:23 -0700 Subject: [PATCH 5/5] Replaced all the 'for ... of cases' tests with more direct expect() calls, which should give better errors --- tests/commands/DeployCommand.test.js | 343 ++++++++++++--------------- 1 file changed, 156 insertions(+), 187 deletions(-) diff --git a/tests/commands/DeployCommand.test.js b/tests/commands/DeployCommand.test.js index c65522b..8cc256c 100644 --- a/tests/commands/DeployCommand.test.js +++ b/tests/commands/DeployCommand.test.js @@ -71,166 +71,143 @@ describe('DeployCommand', () => { describe('IndexAdapter', () => { test('source', () => { - const cases = [ + const check = (input, output) => expect(command.indexAdapter(input)).toEqual(output); + check( + { name: 'name', source: 'source' }, { - label: 'plain string', - input: { name: 'name', source: 'source' }, - output: { - name: 'name', - data: command.defaultMetadata, - source: [{ collection: q.Collection('source') }], - }, - }, + name: 'name', + data: command.defaultMetadata, + source: [{ collection: q.Collection('source') }], + } + ); + check( + { name: 'name', source: ['source', 'source2'] }, { - label: 'array of strings', - input: { name: 'name', source: ['source', 'source2'] }, - output: { - name: 'name', - data: command.defaultMetadata, - source: [ - { - collection: q.Collection('source'), - }, - { - collection: q.Collection('source2'), - }, - ], - }, + name: 'name', + data: command.defaultMetadata, + source: [ + { + collection: q.Collection('source'), + }, + { + collection: q.Collection('source2'), + }, + ], + } + ); + check( + { + name: 'name', + source: { collection: 'source', fields: { bind: BaseFQLString } }, }, { - label: 'source object', - input: { - name: 'name', - source: { collection: 'source', fields: { bind: BaseFQLString } }, - }, - output: { - name: 'name', - data: command.defaultMetadata, - source: [ - { - collection: q.Collection('source'), - fields: { - bind: q.Query(BaseFQL), - }, + name: 'name', + data: command.defaultMetadata, + source: [ + { + collection: q.Collection('source'), + fields: { + bind: q.Query(BaseFQL), }, - ], - }, - }, - ] - - for (let { label, input, output } of cases) { - expect(command.indexAdapter(input)).toEqual(output) - } + }, + ], + } + ); }) test('terms', () => { - const cases = [ + const check = (input, output) => expect(command.indexAdapter(input)).toEqual(output); + check( { - label: 'only fields', - input: { - name: 'name', - source: 'source', - terms: { fields: ['data.field1', 'data.field2'] }, - }, - output: { - name: 'name', - data: command.defaultMetadata, - source: [{ collection: q.Collection('source') }], - terms: [ - { field: ['data', 'field1'] }, - { field: ['data', 'field2'] }, - ], - }, + name: 'name', + source: 'source', + terms: { fields: ['data.field1', 'data.field2'] }, }, { - label: 'with binding', - input: { - name: 'name', - source: 'source', - terms: { - fields: ['data.field1', 'data.field2'], - bindings: ['bind'], - }, - }, - output: { - name: 'name', - data: command.defaultMetadata, - source: [{ collection: q.Collection('source') }], - terms: [ - { field: ['data', 'field1'] }, - { field: ['data', 'field2'] }, - { binding: 'bind' }, - ], + name: 'name', + data: command.defaultMetadata, + source: [{ collection: q.Collection('source') }], + terms: [ + { field: ['data', 'field1'] }, + { field: ['data', 'field2'] }, + ], + }, + ); + check( + { + name: 'name', + source: 'source', + terms: { + fields: ['data.field1', 'data.field2'], + bindings: ['bind'], }, }, - ] - - for (let { label, input, output } of cases) { - expect(command.indexAdapter(input)).toEqual(output) - } + { + name: 'name', + data: command.defaultMetadata, + source: [{ collection: q.Collection('source') }], + terms: [ + { field: ['data', 'field1'] }, + { field: ['data', 'field2'] }, + { binding: 'bind' }, + ], + }, + ); }) test('values', () => { - const cases = [ + const check = (input, output) => expect(command.indexAdapter(input)).toEqual(output); + check( { - label: 'only fields', - input: { - name: 'name', - source: 'source', - values: { fields: ['data.field1', 'data.field2'] }, - }, - output: { - name: 'name', - data: command.defaultMetadata, - source: [{ collection: q.Collection('source') }], - values: [ - { field: ['data', 'field1'] }, - { field: ['data', 'field2'] }, - ], - }, + name: 'name', + source: 'source', + values: { fields: ['data.field1', 'data.field2'] }, }, { - label: 'with binding', - input: { - name: 'name', - source: 'source', - values: { - fields: ['data.field1', 'data.field2'], - bindings: ['bind'], - }, - }, - output: { - name: 'name', - data: command.defaultMetadata, - source: [{ collection: q.Collection('source') }], - values: [ - { field: ['data', 'field1'] }, - { field: ['data', 'field2'] }, - { binding: 'bind' }, - ], - }, + name: 'name', + data: command.defaultMetadata, + source: [{ collection: q.Collection('source') }], + values: [ + { field: ['data', 'field1'] }, + { field: ['data', 'field2'] }, + ], }, + ); + check( { - label: 'with reverse', - input: { - name: 'name', - source: 'source', - values: { - fields: [{ path: 'data.field1', reverse: true }], - }, + name: 'name', + source: 'source', + values: { + fields: ['data.field1', 'data.field2'], + bindings: ['bind'], }, - output: { - name: 'name', - data: command.defaultMetadata, - source: [{ collection: q.Collection('source') }], - values: [{ field: ['data', 'field1'], reverse: true }], + }, + { + name: 'name', + data: command.defaultMetadata, + source: [{ collection: q.Collection('source') }], + values: [ + { field: ['data', 'field1'] }, + { field: ['data', 'field2'] }, + { binding: 'bind' }, + ], + }, + ); + check( + { + name: 'name', + source: 'source', + values: { + fields: [{ path: 'data.field1', reverse: true }], }, }, - ] - - for (let { label, input, output } of cases) { - expect(command.indexAdapter(input)).toEqual(output) - } + { + name: 'name', + data: command.defaultMetadata, + source: [{ collection: q.Collection('source') }], + values: [{ field: ['data', 'field1'], reverse: true }], + }, + ); }) }) @@ -291,63 +268,55 @@ describe('DeployCommand', () => { }) test('membership', () => { - const cases = [ + const check = (input, output) => expect(command.roleAdapter(input)).toEqual(output); + check( { - label: 'plain string', - input: { - name: 'name', - membership: 'membership', - privileges: [ - { collection: 'collection', actions: { read: true } }, - ], - }, - output: { - name: 'name', - data: command.defaultMetadata, - privileges: [ - { - resource: q.Collection('collection'), - actions: { read: true }, - }, - ], - membership: [{ resource: q.Collection('membership') }], - }, + name: 'name', + membership: 'membership', + privileges: [ + { collection: 'collection', actions: { read: true } }, + ], }, - { - label: 'membership object', - input: { - name: 'name', - membership: { - resource: 'membership', - predicate: BaseFQLString, + name: 'name', + data: command.defaultMetadata, + privileges: [ + { + resource: q.Collection('collection'), + actions: { read: true }, }, - privileges: [ - { collection: 'collection', actions: { read: true } }, - ], - }, - output: { - name: 'name', - data: command.defaultMetadata, - privileges: [ - { - resource: q.Collection('collection'), - actions: { read: true }, - }, - ], - membership: [ - { - resource: q.Collection('membership'), - predicate: q.Query(BaseFQL), - }, - ], + ], + membership: [{ resource: q.Collection('membership') }], + }, + ); + check( + { + name: 'name', + membership: { + resource: 'membership', + predicate: BaseFQLString, }, + privileges: [ + { collection: 'collection', actions: { read: true } }, + ], }, - ] - - for (let { label, input, output } of cases) { - expect(command.roleAdapter(input)).toEqual(output) - } + { + name: 'name', + data: command.defaultMetadata, + privileges: [ + { + resource: q.Collection('collection'), + actions: { read: true }, + }, + ], + membership: [ + { + resource: q.Collection('membership'), + predicate: q.Query(BaseFQL), + }, + ], + }, + ); }) test('splitAndAdaptRoles', () => {