From 8f2c37b39c59a67fe217eddf454d41432f0a1776 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Urba=C5=84czyk?= Date: Thu, 2 Feb 2023 11:40:04 +0100 Subject: [PATCH] feat: support 2.6.0 version (#162) --- src/convert.ts | 8 +- src/interfaces.ts | 2 +- test/convert.spec.ts | 358 +++++++++++++++-------------- test/input/2.5.0/streetlights.yml | 112 +++++++++ test/output/2.6.0/streetlights.yml | 112 +++++++++ 5 files changed, 418 insertions(+), 174 deletions(-) create mode 100644 test/input/2.5.0/streetlights.yml create mode 100644 test/output/2.6.0/streetlights.yml diff --git a/src/convert.ts b/src/convert.ts index 17b0a120..74739d7e 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -25,12 +25,13 @@ import type { AsyncAPIDocument, ConvertVersion, ConvertOptions } from './interfa '2.3.0': from__2_2_0__to__2_3_0, '2.4.0': from__2_3_0__to__2_4_0, '2.5.0': from__2_4_0__to__2_5_0, + '2.6.0': from__2_5_0__to__2_6_0, }; const conversionVersions = Object.keys(conversions); export function convert(asyncapi: string, version?: ConvertVersion, options?: ConvertOptions): string; export function convert(asyncapi: AsyncAPIDocument, version?: ConvertVersion, options?: ConvertOptions): AsyncAPIDocument; -export function convert(asyncapi: string | AsyncAPIDocument, version: ConvertVersion = '2.5.0', options: ConvertOptions = {}): string | AsyncAPIDocument { +export function convert(asyncapi: string | AsyncAPIDocument, version: ConvertVersion = '2.6.0', options: ConvertOptions = {}): string | AsyncAPIDocument { const { format, document } = serializeInput(asyncapi); const asyncapiVersion = document.asyncapi; @@ -222,3 +223,8 @@ function from__2_4_0__to__2_5_0(asyncapi: AsyncAPIDocument, _: ConvertOptions) { asyncapi.asyncapi = '2.5.0'; return asyncapi; } + +function from__2_5_0__to__2_6_0(asyncapi: AsyncAPIDocument, _: ConvertOptions) { + asyncapi.asyncapi = '2.6.0'; + return asyncapi; +} diff --git a/src/interfaces.ts b/src/interfaces.ts index 980809d0..3b1c6414 100644 --- a/src/interfaces.ts +++ b/src/interfaces.ts @@ -1,3 +1,3 @@ export type AsyncAPIDocument = { asyncapi: string } & Record; -export type ConvertVersion = '1.1.0' | '1.2.0' | '2.0.0-rc1' | '2.0.0-rc2' | '2.0.0' | '2.1.0' | '2.2.0' | '2.3.0' | '2.4.0' | '2.5.0'; +export type ConvertVersion = '1.1.0' | '1.2.0' | '2.0.0-rc1' | '2.0.0-rc2' | '2.0.0' | '2.1.0' | '2.2.0' | '2.3.0' | '2.4.0' | '2.5.0' | '2.6.0'; export interface ConvertOptions {} diff --git a/test/convert.spec.ts b/test/convert.spec.ts index 9403e5c5..1f86fc9f 100644 --- a/test/convert.spec.ts +++ b/test/convert.spec.ts @@ -28,213 +28,227 @@ describe('convert()', () => { const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc1', 'streetlights.yml'), 'utf8'); const result = convert(input, '2.0.0-rc1'); assertResults(output, result); -}); + }); -it('should convert from 1.2.0 to 2.0.0-rc1', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc1', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.0.0-rc1'); - assertResults(output, result); -}); + it('should convert from 1.2.0 to 2.0.0-rc1', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc1', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.0.0-rc1'); + assertResults(output, result); + }); -it('should convert from 1.2.0 to 2.0.0-rc1 - stream', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'gitter-streaming.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc1', 'gitter-streaming.yml'), 'utf8'); - const result = convert(input, '2.0.0-rc1'); - assertResults(output, result); -}); + it('should convert from 1.2.0 to 2.0.0-rc1 - stream', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'gitter-streaming.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc1', 'gitter-streaming.yml'), 'utf8'); + const result = convert(input, '2.0.0-rc1'); + assertResults(output, result); + }); -it('should convert from 1.2.0 to 2.0.0-rc1 - events', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'slack-rtm.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc1', 'slack-rtm.yml'), 'utf8'); - const result = convert(input, '2.0.0-rc1'); - assertResults(output, result); -}); + it('should convert from 1.2.0 to 2.0.0-rc1 - events', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'slack-rtm.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc1', 'slack-rtm.yml'), 'utf8'); + const result = convert(input, '2.0.0-rc1'); + assertResults(output, result); + }); -it('should convert from 1.0.0 to 2.0.0-rc2', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.0.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc2', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.0.0-rc2'); - assertResults(output, result); -}); + it('should convert from 1.0.0 to 2.0.0-rc2', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.0.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc2', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.0.0-rc2'); + assertResults(output, result); + }); -it('should convert from 1.1.0 to 2.0.0-rc2', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.1.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc2', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.0.0-rc2'); - assertResults(output, result); -}); + it('should convert from 1.1.0 to 2.0.0-rc2', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.1.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc2', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.0.0-rc2'); + assertResults(output, result); + }); -it('should convert from 1.2.0 to 2.0.0-rc2 - stream', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'gitter-streaming.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc2', 'gitter-streaming.yml'), 'utf8'); - const result = convert(input, '2.0.0-rc2'); - assertResults(output, result); -}); + it('should convert from 1.2.0 to 2.0.0-rc2 - stream', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'gitter-streaming.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc2', 'gitter-streaming.yml'), 'utf8'); + const result = convert(input, '2.0.0-rc2'); + assertResults(output, result); + }); -it('should convert from 1.2.0 to 2.0.0-rc2 - events', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'slack-rtm.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc2', 'slack-rtm.yml'), 'utf8'); - const result = convert(input, '2.0.0-rc2'); - assertResults(output, result); -}); + it('should convert from 1.2.0 to 2.0.0-rc2 - events', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'slack-rtm.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc2', 'slack-rtm.yml'), 'utf8'); + const result = convert(input, '2.0.0-rc2'); + assertResults(output, result); + }); -it('should convert from 1.2.0 to 2.0.0-rc2', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc2', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.0.0-rc2'); - assertResults(output, result); -}); + it('should convert from 1.2.0 to 2.0.0-rc2', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0-rc2', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.0.0-rc2'); + assertResults(output, result); + }); -it('should convert from 1.0.0 to 2.0.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.0.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.0.0'); - assertResults(output, result); -}); + it('should convert from 1.0.0 to 2.0.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.0.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.0.0'); + assertResults(output, result); + }); -it('should convert from 1.1.0 to 2.0.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.1.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.0.0'); - assertResults(output, result); -}); + it('should convert from 1.1.0 to 2.0.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.1.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.0.0'); + assertResults(output, result); + }); -it('should convert from 1.2.0 to 2.0.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.0.0'); - assertResults(output, result); -}); + it('should convert from 1.2.0 to 2.0.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.0.0'); + assertResults(output, result); + }); -it('should convert from 2.0.0-rc1 to 2.0.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0-rc1', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.0.0'); - assertResults(output, result); -}); + it('should convert from 2.0.0-rc1 to 2.0.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0-rc1', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.0.0'); + assertResults(output, result); + }); -it('should convert from 2.0.0-rc2 to 2.0.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0-rc2', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.0.0'); - assertResults(output, result); -}); + it('should convert from 2.0.0-rc2 to 2.0.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0-rc2', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.0.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.0.0'); + assertResults(output, result); + }); -it('should convert from 1.0.0 to 2.1.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.0.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.1.0'); - assertResults(output, result); -}); + it('should convert from 1.0.0 to 2.1.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.0.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.1.0'); + assertResults(output, result); + }); -it('should convert from 1.1.0 to 2.1.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.1.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.1.0'); - assertResults(output, result); -}); + it('should convert from 1.1.0 to 2.1.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.1.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.1.0'); + assertResults(output, result); + }); -it('should convert from 1.2.0 to 2.1.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.1.0'); - assertResults(output, result); -}); + it('should convert from 1.2.0 to 2.1.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '1.2.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.1.0'); + assertResults(output, result); + }); -it('should convert from 2.0.0-rc1 to 2.1.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0-rc1', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.1.0'); - assertResults(output, result); -}); + it('should convert from 2.0.0-rc1 to 2.1.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0-rc1', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.1.0'); + assertResults(output, result); + }); -it('should convert from 2.0.0-rc2 to 2.1.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0-rc2', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.1.0'); - assertResults(output, result); -}); + it('should convert from 2.0.0-rc2 to 2.1.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0-rc2', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.1.0'); + assertResults(output, result); + }); -it('should convert from 2.0.0 to 2.1.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.1.0'); - assertResults(output, result); -}); + it('should convert from 2.0.0 to 2.1.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.1.0'); + assertResults(output, result); + }); -it('should convert from 2.0.0 to 2.2.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.2.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.2.0'); - assertResults(output, result); -}); + it('should convert from 2.0.0 to 2.2.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.2.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.2.0'); + assertResults(output, result); + }); -it('should convert from 2.1.0 to 2.2.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.1.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.2.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.2.0'); - assertResults(output, result); -}); + it('should convert from 2.1.0 to 2.2.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.1.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.2.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.2.0'); + assertResults(output, result); + }); -it('should convert from 2.1.0 to 2.3.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.1.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.3.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.3.0'); - assertResults(output, result); -}); + it('should convert from 2.1.0 to 2.3.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.1.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.3.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.3.0'); + assertResults(output, result); + }); -it('should convert from 2.2.0 to 2.3.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.2.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.3.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.3.0'); - assertResults(output, result); -}); + it('should convert from 2.2.0 to 2.3.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.2.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.3.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.3.0'); + assertResults(output, result); + }); -it('should convert from 2.2.0 to 2.4.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.2.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.4.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.4.0'); - assertResults(output, result); -}); + it('should convert from 2.2.0 to 2.4.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.2.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.4.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.4.0'); + assertResults(output, result); + }); -it('should convert from 2.3.0 to 2.4.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.3.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.4.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.4.0'); - assertResults(output, result); -}); + it('should convert from 2.3.0 to 2.4.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.3.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.4.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.4.0'); + assertResults(output, result); + }); -it('should convert from 2.3.0 to 2.5.0', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.3.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.5.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.5.0'); - assertResults(output, result); -}); + it('should convert from 2.3.0 to 2.5.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.3.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.5.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.5.0'); + assertResults(output, result); + }); -it('should convert from 2.4.0 to 2.5.0', () => { + it('should convert from 2.4.0 to 2.5.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.4.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.5.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.5.0'); + assertResults(output, result); + }); + + it('should convert from 2.4.0 to 2.6.0', () => { const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.4.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.5.0', 'streetlights.yml'), 'utf8'); - const result = convert(input, '2.5.0'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.6.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.6.0'); assertResults(output, result); }); -it('should convert from 2.0.0 to latest', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0', 'streetlights.yml'), 'utf8'); - const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.5.0', 'streetlights.yml'), 'utf8'); - const result = convert(input); +it('should convert from 2.5.0 to 2.6.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.5.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.6.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.6.0'); assertResults(output, result); }); -it('should convert from 2.0.0 to 2.1.0 (JSON case)', () => { - const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0', 'streetlights.json'), 'utf8'); - let output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.json'), 'utf8'); - let result = convert(input, '2.1.0'); + it('should convert from 2.0.0 to latest', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.6.0', 'streetlights.yml'), 'utf8'); + const result = convert(input); + assertResults(output, result); + }); + + it('should convert from 2.0.0 to 2.1.0 (JSON case)', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.0.0', 'streetlights.json'), 'utf8'); + let output = fs.readFileSync(path.resolve(__dirname, 'output', '2.1.0', 'streetlights.json'), 'utf8'); + let result = convert(input, '2.1.0'); - output = JSON.stringify(JSON.parse(output)); - result = JSON.stringify(JSON.parse(JSON.stringify(result))); - expect(output).toEqual(result); -}); + output = JSON.stringify(JSON.parse(output)); + result = JSON.stringify(JSON.parse(JSON.stringify(result))); + expect(output).toEqual(result); + }); }); /* diff --git a/test/input/2.5.0/streetlights.yml b/test/input/2.5.0/streetlights.yml new file mode 100644 index 00000000..2285d2e6 --- /dev/null +++ b/test/input/2.5.0/streetlights.yml @@ -0,0 +1,112 @@ +asyncapi: 2.5.0 +info: + title: Streetlights API + version: 1.0.0 + description: "The Smartylighting Streetlights API allows you to remotely manage the city lights.\n\n### Check out its awesome features:\n\n* Turn a specific streetlight on/off \U0001F303\n* Dim a specific streetlight \U0001F60E\n* Receive real-time information about environmental lighting conditions \U0001F4C8\n" + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' +servers: + default: + url: 'api.streetlights.smartylighting.com:{port}' + description: Test broker + variables: + port: + description: Secure connection (TLS) is available through port 8883. + default: '1883' + enum: + - '1883' + - '8883' + protocol: mqtt + security: + - apiKey: [] +components: + messages: + lightMeasured: + summary: >- + Inform about environmental lighting conditions for a particular + streetlight. + payload: + $ref: '#/components/schemas/lightMeasuredPayload' + turnOnOff: + summary: Command a particular streetlight to turn the lights on or off. + payload: + $ref: '#/components/schemas/turnOnOffPayload' + dimLight: + summary: Command a particular streetlight to dim the lights. + payload: + $ref: '#/components/schemas/dimLightPayload' + schemas: + lightMeasuredPayload: + type: object + properties: + lumens: + type: integer + minimum: 0 + description: Light intensity measured in lumens. + sentAt: + $ref: '#/components/schemas/sentAt' + turnOnOffPayload: + type: object + properties: + command: + type: string + enum: + - 'on' + - 'off' + description: Whether to turn on or off the light. + sentAt: + $ref: '#/components/schemas/sentAt' + dimLightPayload: + type: object + properties: + percentage: + type: integer + description: Percentage to which the light should be dimmed to. + minimum: 0 + maximum: 100 + sentAt: + $ref: '#/components/schemas/sentAt' + sentAt: + type: string + format: date-time + description: Date and time when the message was sent. + securitySchemes: + apiKey: + type: apiKey + in: user + description: Provide your API key as the user and leave the password empty. + parameters: + streetlightId: + description: The ID of the streetlight. + schema: + type: string +channels: + 'smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + publish: + message: + $ref: '#/components/messages/lightMeasured' + 'smartylighting/streetlights/1/0/action/{streetlightId}/turn/on': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + subscribe: + message: + $ref: '#/components/messages/turnOnOff' + 'smartylighting/streetlights/1/0/action/{streetlightId}/turn/off': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + subscribe: + message: + $ref: '#/components/messages/turnOnOff' + 'smartylighting/streetlights/1/0/action/{streetlightId}/dim': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + subscribe: + message: + $ref: '#/components/messages/dimLight' diff --git a/test/output/2.6.0/streetlights.yml b/test/output/2.6.0/streetlights.yml new file mode 100644 index 00000000..8bf76723 --- /dev/null +++ b/test/output/2.6.0/streetlights.yml @@ -0,0 +1,112 @@ +asyncapi: 2.6.0 +info: + title: Streetlights API + version: 1.0.0 + description: "The Smartylighting Streetlights API allows you to remotely manage the city lights.\n\n### Check out its awesome features:\n\n* Turn a specific streetlight on/off \U0001F303\n* Dim a specific streetlight \U0001F60E\n* Receive real-time information about environmental lighting conditions \U0001F4C8\n" + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' +servers: + default: + url: 'api.streetlights.smartylighting.com:{port}' + description: Test broker + variables: + port: + description: Secure connection (TLS) is available through port 8883. + default: '1883' + enum: + - '1883' + - '8883' + protocol: mqtt + security: + - apiKey: [] +components: + messages: + lightMeasured: + summary: >- + Inform about environmental lighting conditions for a particular + streetlight. + payload: + $ref: '#/components/schemas/lightMeasuredPayload' + turnOnOff: + summary: Command a particular streetlight to turn the lights on or off. + payload: + $ref: '#/components/schemas/turnOnOffPayload' + dimLight: + summary: Command a particular streetlight to dim the lights. + payload: + $ref: '#/components/schemas/dimLightPayload' + schemas: + lightMeasuredPayload: + type: object + properties: + lumens: + type: integer + minimum: 0 + description: Light intensity measured in lumens. + sentAt: + $ref: '#/components/schemas/sentAt' + turnOnOffPayload: + type: object + properties: + command: + type: string + enum: + - 'on' + - 'off' + description: Whether to turn on or off the light. + sentAt: + $ref: '#/components/schemas/sentAt' + dimLightPayload: + type: object + properties: + percentage: + type: integer + description: Percentage to which the light should be dimmed to. + minimum: 0 + maximum: 100 + sentAt: + $ref: '#/components/schemas/sentAt' + sentAt: + type: string + format: date-time + description: Date and time when the message was sent. + securitySchemes: + apiKey: + type: apiKey + in: user + description: Provide your API key as the user and leave the password empty. + parameters: + streetlightId: + description: The ID of the streetlight. + schema: + type: string +channels: + 'smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + publish: + message: + $ref: '#/components/messages/lightMeasured' + 'smartylighting/streetlights/1/0/action/{streetlightId}/turn/on': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + subscribe: + message: + $ref: '#/components/messages/turnOnOff' + 'smartylighting/streetlights/1/0/action/{streetlightId}/turn/off': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + subscribe: + message: + $ref: '#/components/messages/turnOnOff' + 'smartylighting/streetlights/1/0/action/{streetlightId}/dim': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + subscribe: + message: + $ref: '#/components/messages/dimLight'