From a2ec2c42a80f8515c47d1aec8bd51dd809203902 Mon Sep 17 00:00:00 2001 From: Cedric van Putten Date: Wed, 26 Aug 2020 16:20:05 +0200 Subject: [PATCH] chore: add missing test when failing to enhance schema (#15) --- .../__tests__/__mocks__/json-schema-traverse.ts | 4 ++++ src/manifest/__tests__/schema.test.ts | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 src/manifest/__tests__/__mocks__/json-schema-traverse.ts diff --git a/src/manifest/__tests__/__mocks__/json-schema-traverse.ts b/src/manifest/__tests__/__mocks__/json-schema-traverse.ts new file mode 100644 index 00000000..daa111a9 --- /dev/null +++ b/src/manifest/__tests__/__mocks__/json-schema-traverse.ts @@ -0,0 +1,4 @@ +import traverse from 'json-schema-traverse'; + +// note: it's similar as `jest.spyOn`, but as workaround for default exports +export default jest.fn(traverse); diff --git a/src/manifest/__tests__/schema.test.ts b/src/manifest/__tests__/schema.test.ts index 9e1ef4e9..41480883 100644 --- a/src/manifest/__tests__/schema.test.ts +++ b/src/manifest/__tests__/schema.test.ts @@ -1,7 +1,11 @@ import * as xdl from '@expo/xdl/build/project/ExpSchema'; +import traverse, { TraverseCallback } from 'json-schema-traverse'; import * as schema from '../schema'; import * as tools from '../../../test/tools'; +// note: this is the same value as `traverse`, but typed as mock +const mockedTraverse = (traverse as unknown) as jest.Mock<[object, TraverseCallback]>; + describe('getSchema', () => { it('fetches schema by expo sdk version', async () => { const xdlSchema = tools.getFixtureFile('schema-xdl-39.0.0.json'); @@ -15,7 +19,7 @@ describe('getSchema', () => { describe('createFromXdl', () => { const xdlSchema = tools.getFixtureFile('schema-xdl-39.0.0.json'); - // const simpleSchema = tools.getFixtureFile('schema-plugin-39.0.0.json'); + const simpleSchema = tools.getFixtureFile('schema-plugin-39.0.0.json'); const enhancedSchema = tools.getFixtureFile('schema-enhanced-39.0.0.json'); it('creates enhanced plugin schema from xdl', () => { @@ -23,5 +27,9 @@ describe('createFromXdl', () => { expect(createdSchema).toStrictEqual(expect.objectContaining(enhancedSchema)); }); - // todo: add test to validate it falls back to original schema + it('uses simple plugin schema when failing to enhance', () => { + mockedTraverse.mockImplementationOnce(() => { throw new Error('Failed traversing schema'); }); + const createdSchema = schema.createFromXdl('39.0.0', xdlSchema); + expect(createdSchema).toStrictEqual(expect.objectContaining(simpleSchema)); + }); });