Skip to content

Commit 127b76a

Browse files
committed
test: example description being rendered
1 parent 96f4ef8 commit 127b76a

File tree

4 files changed

+69
-15
lines changed

4 files changed

+69
-15
lines changed

demo/APIC-332/APIC-332.raml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#%RAML 1.0
2+
title: API with Examples
3+
4+
types:
5+
Org:
6+
type: object
7+
description: This description for the type is shown
8+
properties:
9+
name: string
10+
address?: string
11+
value?: string
12+
13+
/organization:
14+
post:
15+
body:
16+
application/json:
17+
type: Org
18+
example:
19+
value:
20+
name: Fake SA
21+
value: Something
22+
description: This description for the example is never shown

demo/apis.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"demo-api/demo-api.raml": "RAML 1.0",
33
"raml-types/raml-types.raml": "RAML 1.0",
44
"google-drive-api/google-drive-api.raml": "RAML 1.0",
5+
"APIC-332/APIC-332.raml": "RAML 1.0",
56
"oas-3-api/oas-3-api.yaml": { "type": "OAS 3.0", "mime": "application/yaml" },
67
"steveTest-1/stevetest.json": { "type": "OAS 2.0", "mime": "application/json" }
78
}

demo/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ class ApiDemo extends ApiDemoPage {
110110
['demo-api', 'Demo API'],
111111
['google-drive-api', 'Google Drive'],
112112
['raml-types', 'RAML types with raml examples'],
113+
['APIC-332', 'APIC-332'],
113114
].forEach(([file, label]) => {
114115
result[result.length] = html`
115116
<anypoint-item data-src="${file}-compact.json">${label} - compact model</anypoint-item>

test/api-resource-example-document.test.js

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ describe('ApiResourceExampleDocument', () => {
3232
return localStorage.jsonTableEnabled;
3333
}
3434

35-
3635
describe('_tableChanged()', () => {
3736
let element = /** @type ApiResourceExampleDocument */ (null);
3837
beforeEach(async () => {
@@ -312,6 +311,23 @@ describe('ApiResourceExampleDocument', () => {
312311
return element._ensureArray(schema[key]);
313312
}
314313

314+
async function resolveWhenReady(elm, model, path, method, payloadIndex) {
315+
return new Promise((resolve) => {
316+
let payload = getPayload(elm, model, path, method);
317+
if (payloadIndex !== undefined) {
318+
payload = payload[payloadIndex]
319+
}
320+
elm.examples = payload;
321+
elm.addEventListener('has-examples-changed', function f(e) {
322+
if (!e.detail.value) {
323+
return;
324+
}
325+
elm.removeEventListener('has-examples-changed', f);
326+
setTimeout(() => resolve());
327+
});
328+
});
329+
}
330+
315331
describe('__computeExamples()', () => {
316332
[
317333
['Regular model', false],
@@ -529,6 +545,34 @@ describe('ApiResourceExampleDocument', () => {
529545
});
530546
});
531547

548+
describe('APIC-332', () => {
549+
[
550+
['Regular model', false],
551+
['Compact model', true]
552+
].forEach((item) => {
553+
describe(String(item[0]), () => {
554+
let amf;
555+
before(async () => {
556+
amf = await AmfLoader.load(item[1], 'APIC-332');
557+
});
558+
559+
let element = /** @type ApiResourceExampleDocument */ (null);
560+
beforeEach(async () => {
561+
element = await basicFixture();
562+
element.amf = amf;
563+
await nextFrame();
564+
});
565+
566+
it('renders description for an example', async () => {
567+
element.mediaType = 'application/json';
568+
await resolveWhenReady(element, amf, '/organization', 'post', 0);
569+
const description = /** @type HTMLElement */ (element.shadowRoot.querySelector('.example-description'));
570+
assert.equal(description.innerText, 'This description for the example is never shown');
571+
});
572+
});
573+
});
574+
});
575+
532576
describe('_computeExampleTitle()', () => {
533577
let element = /** @type ApiResourceExampleDocument */ (null);
534578

@@ -597,20 +641,6 @@ describe('ApiResourceExampleDocument', () => {
597641
element.amf = amf;
598642
});
599643

600-
async function resolveWhenReady(elm, model, path, method) {
601-
return new Promise((resolve) => {
602-
const payloads = getPayload(elm, model, path, method);
603-
elm.examples = payloads;
604-
elm.addEventListener('has-examples-changed', function f(e) {
605-
if (!e.detail.value) {
606-
return;
607-
}
608-
elm.removeEventListener('has-examples-changed', f);
609-
setTimeout(() => resolve());
610-
});
611-
});
612-
}
613-
614644
it('passes accessibility test', async () => {
615645
await resolveWhenReady(element, amf, '/IncludedInType', 'post');
616646
await assert.isAccessible(element, {

0 commit comments

Comments
 (0)