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 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" } diff --git a/tests/commands/DeployCommand.test.js b/tests/commands/DeployCommand.test.js index e78071d..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), label).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), label).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), label).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), label).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', () => { 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", } } 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,