Skip to content

Commit

Permalink
feat:add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Souvikns committed Mar 11, 2024
1 parent d4e3eff commit b3c6e6f
Show file tree
Hide file tree
Showing 6 changed files with 77 additions and 14 deletions.
1 change: 1 addition & 0 deletions API.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ console.log(document.string()); // get JSON string
| [options] | <code>Object</code> | |
| [options.base] | <code>string</code> \| <code>object</code> | <p>Base object whose properties will be retained.</p> |
| [options.referenceIntoComponents] | <code>boolean</code> | <p>Pass <code>true</code> to resolve external references to components.</p> |
| [options.baseDir] | <code>string</code> | <p>Pass folder path to</p> |

**Example**
**TypeScript**
Expand Down
3 changes: 2 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { resolveV3Document } from './v3/parser';
* retained.
* @param {boolean} [options.referenceIntoComponents] Pass `true` to resolve
* external references to components.
* @param {string} [options.baseDir] Pass folder path to
*
* @return {Document}
*
Expand Down Expand Up @@ -81,7 +82,7 @@ export default async function bundle(files: string[], options: any = {}) {
const parsedJsons = files.map(file => toJS(file)) as AsyncAPIObject[];

if (typeof options.baseDir !== 'undefined') {
parsedJsons.forEach( parsedJson => resolveBaseFileDir(parsedJson, options.baseDir))
parsedJsons.forEach(parsedJson => resolveBaseFileDir(parsedJson, options.baseDir));
}

const majorVersion = versionCheck(parsedJsons);
Expand Down
26 changes: 13 additions & 13 deletions src/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,15 +104,15 @@ export function versionCheck(asyncapiDocuments: AsyncAPIObject[]): number {
}

export function isExternalReference(ref: string): boolean {
return typeof ref === 'string' && !ref.startsWith('#')
return typeof ref === 'string' && !ref.startsWith('#');
}

export function notAUrl(ref: string): boolean {
try {
new URL(ref)
return false
new URL(ref);
return false;
} catch (error) {
return true
return true;
}
}

Expand All @@ -126,27 +126,27 @@ export function resolveBaseFileDir(file: object, baseFileDir: string) {
json: file,
resultType: 'all',
path: '$.channels.*.messages.*'
}).forEach( ({parent, parentProperty}: {parent: any, parentProperty: string}) => {
const ref = parent[String(parentProperty)]['$ref']
}).forEach(({parent, parentProperty}: {parent: any, parentProperty: string}) => {
const ref = parent[String(parentProperty)]['$ref'];
if (isExternalReference(ref) && notAUrl(ref)) {
// console.log(ref)
// console.log(path.resolve(baseFileDir, ref))
parent[String(parentProperty)]['$ref'] = path.resolve(baseFileDir, ref)
parent[String(parentProperty)]['$ref'] = path.resolve(baseFileDir, ref);
}
})
});

JSONPath({
json: file,
resultType: 'all',
path: '$.operations.*.messages.*'
}).forEach(
({parent, parentProperty}: {parent: any, parentProperty: string}) => {
const ref = parent[String(parentProperty)]['$ref']
if (isExternalReference(ref) && notAUrl(ref)) {
const ref = parent[String(parentProperty)]['$ref'];
if (isExternalReference(ref) && notAUrl(ref)) {
// console.log(ref)
// console.log(path.resolve(baseFileDir, ref))
parent[String(parentProperty)]['$ref'] = path.resolve(baseFileDir, ref)
}
parent[String(parentProperty)]['$ref'] = path.resolve(baseFileDir, ref);
}
}
)
);
}
10 changes: 10 additions & 0 deletions tests/lib/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,16 @@ describe('[integration testing] bundler should ', () => {
).resolves;

})

test('should be able to change the baseDir folder', async () => {
const files = ['./tests/specfiles/main.yaml']
expect(
await bundle(
files.map(file => fs.readFileSync(path.resolve(process.cwd(), file), 'utf-8')),
{baseDir: './tests/specfiles'}
)
).resolves
})
});

describe('[unit testing]', () => {
Expand Down
34 changes: 34 additions & 0 deletions tests/specfiles/main.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
asyncapi: 3.0.0
info:
title: Account Service
version: 1.0.0
description: This service is in charge of processing user signupsA
channels:
userSignedup:
address: 'user/signedup'
messages:
userSignedUpMessage:
$ref: './messages.yaml#/messages/UserSignedUp'
test:
address: '/test'
messages:
testMessage:
$ref: '#/components/messages/TestMessage'
operations:
UserSignedUp:
action: send
channel:
$ref: '#/channels/userSignedup'
messages:
- $ref: './messages.yaml#/messages/UserSignedUp'
TestOpp:
action: send
channel:
$ref: '#/channels/test'
messages:
- $ref: '#/components/messages/TestMessage'
components:
messages:
TestMessage:
payload:
type: string
17 changes: 17 additions & 0 deletions tests/specfiles/messages.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
messages:
UserSignedUp:
payload:
type: object
properties:
displayName:
type: string
description: Name of the user
email:
type: string
format: email
description: Email of the user
UserLoggedIn:
payload:
type: object
properties:
id: string

0 comments on commit b3c6e6f

Please sign in to comment.