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

Commit cf74e31

Browse files
authored
chore(deps): upgrading oas to v6 (#1041)
* chore(deps): upgrading oas to v6 * chore: rebuilding some lock files * chore(deps): upgrading oas to 6.1.0 * chore: reverting some unnecessary changes * fix: using the new getOperationId accessor * fix: using the new getResponseByStatusCode accessor * fix: typo that was breaking every test * feat: using a new oas accessor
1 parent 32356ab commit cf74e31

18 files changed

+457
-176
lines changed

package-lock.json

Lines changed: 295 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"build": "npm run update:emojis; ./build.sh; lerna run build",
1616
"clean": "lerna clean",
1717
"deploy": "gh-pages --dotfiles -d example/dist",
18-
"lint": "eslint example example/ lib/ scripts/ *.js --ext js --ext jsx",
18+
"lint": "eslint example/ lib/ scripts/ *.js --ext js --ext jsx",
1919
"postinstall": "npm run bootstrap",
2020
"publish": "lerna publish",
2121
"pretest": "npm run update:examples; npm run lint",

packages/api-explorer/__tests__/CodeSample.test.jsx

Lines changed: 77 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@ const petstore = require('@readme/oas-examples/3.0/json/petstore.json');
66

77
const CodeSample = require('../src/CodeSample');
88

9-
const { Operation } = Oas;
9+
const oas = new Oas(petstore);
10+
1011
const props = {
1112
auth: {},
1213
formData: {},
1314
language: 'node',
1415
setLanguage: () => {},
16+
oas,
1517
oasUrl: 'https://example.com/openapi.json',
16-
operation: new Operation({}, '/pet/{petId}', 'get'),
18+
operation: oas.operation('/pet/{petId}', 'get'),
1719
};
1820

1921
describe('tabs', () => {
@@ -27,9 +29,9 @@ describe('tabs', () => {
2729
{...props}
2830
oas={
2931
new Oas({
32+
...petstore,
3033
[extensions.SAMPLES_ENABLED]: true,
3134
[extensions.SAMPLES_LANGUAGES]: languages,
32-
servers: [{ url: 'http://example.com' }],
3335
})
3436
}
3537
/>
@@ -58,15 +60,10 @@ describe('tabs', () => {
5860

5961
describe('code examples', () => {
6062
it('should support the `node-simple` language', () => {
61-
const docProps = {
62-
...props,
63-
language: 'node-simple',
64-
operation: new Operation({}, '/pet/{petId}', 'get'),
65-
};
66-
6763
const codeSample = shallow(
6864
<CodeSample
69-
{...docProps}
65+
{...props}
66+
language={'node-simple'}
7067
oas={
7168
new Oas({
7269
...petstore,
@@ -83,25 +80,20 @@ describe('code examples', () => {
8380
});
8481

8582
it('should display custom examples over pre-filled examples', () => {
86-
const docProps = {
87-
...props,
88-
operation: new Operation({}, '/pet/{petId}', 'get'),
89-
examples: [
90-
{
91-
language: 'javascript',
92-
code: 'console.log(1);',
93-
},
94-
],
95-
};
96-
9783
const codeSample = shallow(
9884
<CodeSample
99-
{...docProps}
85+
{...props}
86+
examples={[
87+
{
88+
language: 'javascript',
89+
code: 'console.log(1);',
90+
},
91+
]}
10092
oas={
10193
new Oas({
94+
...petstore,
10295
[extensions.SAMPLES_ENABLED]: true,
10396
[extensions.SAMPLES_LANGUAGES]: ['node', 'curl'],
104-
servers: [{ url: 'http://example.com' }],
10597
})
10698
}
10799
/>
@@ -112,24 +104,19 @@ describe('code examples', () => {
112104
});
113105

114106
it('should display custom examples even if SAMPLES_ENABLED is false', () => {
115-
const docProps = {
116-
...props,
117-
operation: new Operation({}, '/pet/{petId}', 'get'),
118-
examples: [
119-
{
120-
language: 'javascript',
121-
code: 'console.log(1);',
122-
},
123-
],
124-
};
125-
126107
const codeSample = shallow(
127108
<CodeSample
128-
{...docProps}
109+
{...props}
110+
examples={[
111+
{
112+
language: 'javascript',
113+
code: 'console.log(1);',
114+
},
115+
]}
129116
oas={
130117
new Oas({
118+
...petstore,
131119
[extensions.SAMPLES_ENABLED]: false,
132-
servers: [{ url: 'http://example.com' }],
133120
})
134121
}
135122
/>
@@ -140,20 +127,15 @@ describe('code examples', () => {
140127
});
141128

142129
it('should not error if no code given', () => {
143-
const docProps = {
144-
...props,
145-
operation: new Operation({}, '/pet/{petId}', 'get'),
146-
examples: [
147-
{
148-
language: 'javascript',
149-
},
150-
],
151-
};
152-
153130
expect(() =>
154131
shallow(
155132
<CodeSample
156-
{...docProps}
133+
{...props}
134+
examples={[
135+
{
136+
language: 'javascript',
137+
},
138+
]}
157139
oas={
158140
new Oas({
159141
[extensions.SAMPLES_ENABLED]: true,
@@ -167,20 +149,15 @@ describe('code examples', () => {
167149
});
168150

169151
it('should not error if language requested cannot be auto-generated', () => {
170-
const docProps = {
171-
...props,
172-
operation: new Operation({}, '/pet/{petId}', 'get'),
173-
language: 'css',
174-
};
175-
176152
const component = (
177153
<CodeSample
178-
{...docProps}
154+
{...props}
155+
language={'css'}
179156
oas={
180157
new Oas({
158+
...petstore,
181159
[extensions.SAMPLES_ENABLED]: true,
182160
[extensions.SAMPLES_LANGUAGES]: ['css'],
183-
servers: [{ url: 'http://example.com' }],
184161
})
185162
}
186163
/>
@@ -195,28 +172,23 @@ describe('code examples', () => {
195172
});
196173

197174
it('should not render sample if language is missing', () => {
198-
const docProps = {
199-
...props,
200-
operation: new Operation({}, '/pet/{petId}', 'get'),
201-
examples: [
202-
{
203-
code: 'console.log(1);',
204-
},
205-
{
206-
language: 'curl',
207-
code: 'curl example.com',
208-
},
209-
],
210-
};
211-
212175
const codeSample = shallow(
213176
<CodeSample
214-
{...docProps}
177+
{...props}
178+
examples={[
179+
{
180+
code: 'console.log(1);',
181+
},
182+
{
183+
language: 'curl',
184+
code: 'curl example.com',
185+
},
186+
]}
215187
oas={
216188
new Oas({
189+
...petstore,
217190
[extensions.SAMPLES_ENABLED]: true,
218191
[extensions.SAMPLES_LANGUAGES]: ['node', 'curl'],
219-
servers: [{ url: 'http://example.com' }],
220192
})
221193
}
222194
/>
@@ -227,28 +199,23 @@ describe('code examples', () => {
227199
});
228200

229201
it('should render first of examples if language does not exist', () => {
230-
const docProps = {
231-
...props,
232-
operation: new Operation({}, '/pet/{petId}', 'get'),
233-
examples: [
234-
{
235-
language: 'javascript',
236-
},
237-
{
238-
language: 'typescript',
239-
},
240-
],
241-
language: 'perl',
242-
};
243-
244202
const codeSample = shallow(
245203
<CodeSample
246-
{...docProps}
204+
{...props}
205+
examples={[
206+
{
207+
language: 'javascript',
208+
},
209+
{
210+
language: 'typescript',
211+
},
212+
]}
213+
language={'perl'}
247214
oas={
248215
new Oas({
216+
...petstore,
249217
[extensions.SAMPLES_ENABLED]: true,
250218
[extensions.SAMPLES_LANGUAGES]: ['css'],
251-
servers: [{ url: 'http://example.com' }],
252219
})
253220
}
254221
/>
@@ -258,74 +225,69 @@ describe('code examples', () => {
258225
});
259226

260227
it('should display examples if SAMPLES_ENABLED is true', () => {
261-
const languages = ['node', 'curl'];
262228
const codeSample = shallow(
263229
<CodeSample
264230
{...props}
265231
oas={
266232
new Oas({
233+
...petstore,
267234
[extensions.SAMPLES_ENABLED]: true,
268-
[extensions.SAMPLES_LANGUAGES]: languages,
269-
servers: [{ url: 'http://example.com' }],
235+
[extensions.SAMPLES_LANGUAGES]: ['node', 'curl'],
270236
})
271237
}
272238
/>
273239
);
274240

275241
expect(codeSample.find('.hub-code-auto')).toHaveLength(1);
242+
276243
// We only render one language at a time
277244
expect(codeSample.find('.hub-code-auto pre')).toHaveLength(1);
278245
expect(codeSample.find('.hub-lang-switch-node').text()).toBe('Node');
279246
});
280247

281248
// Skipped until https://github.com/readmeio/api-explorer/issues/965 is resolved.
282249
it.skip('should check the operation level extensions first', () => {
283-
const operationSamplesEnabled = new Operation({}, '/pet/{petId}', 'get');
284-
operationSamplesEnabled[extensions.SAMPLES_ENABLED] = true;
285-
const languages = ['node', 'curl'];
250+
const operationSamplesEnabled = oas.operation('/pet/{petId}', 'get');
251+
operationSamplesEnabled.schema[extensions.SAMPLES_ENABLED] = true;
286252

287253
const codeSample = shallow(
288254
<CodeSample
289255
{...props}
290256
oas={
291257
new Oas({
258+
...petstore,
292259
[extensions.SAMPLES_ENABLED]: false,
293-
[extensions.SAMPLES_LANGUAGES]: languages,
294-
servers: [{ url: 'http://example.com' }],
260+
[extensions.SAMPLES_LANGUAGES]: ['node', 'curl'],
295261
})
296262
}
297263
operation={operationSamplesEnabled}
298264
/>
299265
);
300266

301267
expect(codeSample.find('.hub-code-auto')).toHaveLength(1);
268+
302269
// We only render one language at a time
303270
expect(codeSample.find('.hub-code-auto pre')).toHaveLength(1);
304271
expect(codeSample.find('.hub-lang-switch-node').text()).toBe('Node');
305272
});
306273

307274
it('should not display more than one example block at a time', () => {
308-
const docProps = {
309-
...props,
310-
operation: new Operation({}, '/pet/{petId}', 'get'),
311-
language: 'javascript',
312-
examples: [
313-
{
314-
name: 'Javascript/Node.js',
315-
code: 'console.log(1);',
316-
language: 'javascript',
317-
},
318-
{
319-
name: 'TypeScript',
320-
code: 'console.log(1)',
321-
language: 'javascript',
322-
},
323-
],
324-
};
325-
326275
const codeSample = shallow(
327276
<CodeSample
328-
{...docProps}
277+
{...props}
278+
examples={[
279+
{
280+
name: 'Javascript/Node.js',
281+
code: 'console.log(1);',
282+
language: 'javascript',
283+
},
284+
{
285+
name: 'TypeScript',
286+
code: 'console.log(1)',
287+
language: 'javascript',
288+
},
289+
]}
290+
language={'javascript'}
329291
oas={
330292
new Oas({
331293
[extensions.SAMPLES_ENABLED]: true,
@@ -349,9 +311,9 @@ describe('updating language', () => {
349311
{...props}
350312
oas={
351313
new Oas({
314+
...petstore,
352315
[extensions.SAMPLES_ENABLED]: true,
353316
[extensions.SAMPLES_LANGUAGES]: ['node'],
354-
servers: [{ url: 'http://example.com' }],
355317
})
356318
}
357319
setLanguage={setLanguage}

packages/api-explorer/__tests__/Params.test.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ describe('form id attribute', () => {
8585
</div>
8686
)
8787
.html()
88-
.match(new RegExp(`form-path-${operation.operationId}`, 'g'))
88+
.match(new RegExp(`form-path-${operation.getOperationId()}`, 'g'))
8989
).toHaveLength(1);
9090
});
9191
});
@@ -417,7 +417,7 @@ describe('x-explorer-enabled', () => {
417417

418418
it('should check the operation level extensions first', () => {
419419
const operationExplorerEnabled = oas.operation('/pet/{petId}/uploadImage', 'post');
420-
operationExplorerEnabled[extensions.EXPLORER_ENABLED] = true;
420+
operationExplorerEnabled.schema[extensions.EXPLORER_ENABLED] = true;
421421

422422
const Component = createParams(oasWithExplorerDisabled, operationExplorerEnabled);
423423

0 commit comments

Comments
 (0)