Skip to content
This repository was archived by the owner on Nov 8, 2024. It is now read-only.

Commit 571d9e4

Browse files
authored
Merge pull request #317 from apiaryio/pksunkara/315
fix(core): allow error parse results to be serialized, fixes #315
2 parents d3680e6 + 5d62cde commit 571d9e4

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

packages/fury/lib/fury.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,11 @@ class Fury {
265265
return Promise.reject(error);
266266
}
267267

268+
if (!api) {
269+
// eslint-disable-next-line no-param-reassign
270+
api = new this.minim.elements.Category();
271+
}
272+
268273
const promise = adapter.serialize({ api, namespace: this.minim, mediaType });
269274

270275
if (done) {

packages/fury/test/serialize-test.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ const assert = require('./assert');
44

55
describe('Serialize', () => {
66
describe('using callback', () => {
7+
const JSONSerializeAdapter = {
8+
name: 'json',
9+
mediaTypes: ['application/json'],
10+
serialize: ({ api, namespace }) => Promise.resolve(JSON.stringify(namespace.serialiser.serialise(api))),
11+
};
12+
713
it('errors with unknown mediaType', (done) => {
814
const fury = new Fury();
915
const api = new fury.minim.elements.Category();
@@ -34,11 +40,7 @@ describe('Serialize', () => {
3440

3541
it('can serialize with matching adapter', (done) => {
3642
const fury = new Fury();
37-
fury.use({
38-
name: 'json',
39-
mediaTypes: ['application/json'],
40-
serialize: ({ api, namespace }) => Promise.resolve(JSON.stringify(namespace.serialiser.serialise(api))),
41-
});
43+
fury.use(JSONSerializeAdapter);
4244

4345
const api = new fury.minim.elements.Category();
4446

@@ -48,6 +50,17 @@ describe('Serialize', () => {
4850
done();
4951
});
5052
});
53+
54+
it('can serialize undefined `api` by creating default category', (done) => {
55+
const fury = new Fury();
56+
fury.use(JSONSerializeAdapter);
57+
58+
fury.serialize({ api: undefined, mediaType: 'application/json' }, (error, result) => {
59+
expect(error).to.be.null;
60+
expect(result).to.equal('{"element":"category"}');
61+
done();
62+
});
63+
});
5164
});
5265

5366
describe('using async/await', () => {

0 commit comments

Comments
 (0)