forked from stoplightio/spectral
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setupKarma.ts
66 lines (54 loc) · 2.36 KB
/
setupKarma.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import * as jsonSpecv4 from 'ajv/lib/refs/json-schema-draft-04.json';
import { FetchMockSandbox } from 'fetch-mock';
const oasRuleset = JSON.parse(JSON.stringify(require('./rulesets/oas/index.json')));
const oas2Ruleset = JSON.parse(JSON.stringify(require('./rulesets/oas2/index.json')));
const oas2Schema = JSON.parse(JSON.stringify(require('./rulesets/oas2/schemas/main.json')));
const oas3Ruleset = JSON.parse(JSON.stringify(require('./rulesets/oas3/index.json')));
const oas3Schema = JSON.parse(JSON.stringify(require('./rulesets/oas3/schemas/main.json')));
const oasFunctions = {
// import path used for require must be deterministic at build-time (not run-time) in case of Karma, hence no loop can be used
'': JSON.parse(JSON.stringify(require('./__karma__/__fixtures__/oas-functions.json'))),
'2': JSON.parse(JSON.stringify(require('./__karma__/__fixtures__/oas2-functions.json'))),
'3': JSON.parse(JSON.stringify(require('./__karma__/__fixtures__/oas3-functions.json'))),
};
const { fetch } = window;
let fetchMock: FetchMockSandbox;
beforeEach(() => {
fetchMock = require('fetch-mock').sandbox();
window.fetch = fetchMock;
fetchMock.get('https://unpkg.com/@stoplight/spectral/rulesets/oas/index.json', {
status: 200,
body: JSON.parse(JSON.stringify(oasRuleset)),
});
fetchMock.get('https://unpkg.com/@stoplight/spectral/rulesets/oas2/index.json', {
status: 200,
body: JSON.parse(JSON.stringify(oas2Ruleset)),
});
fetchMock.get('https://unpkg.com/@stoplight/spectral/rulesets/oas3/index.json', {
status: 200,
body: JSON.parse(JSON.stringify(oas3Ruleset)),
});
fetchMock.get('https://unpkg.com/@stoplight/spectral/rulesets/oas2/schemas/main.json', {
status: 200,
body: JSON.parse(JSON.stringify(oas2Schema)),
});
fetchMock.get('https://unpkg.com/@stoplight/spectral/rulesets/oas3/schemas/main.json', {
status: 200,
body: JSON.parse(JSON.stringify(oas3Schema)),
});
for (const [spec, fns] of Object.entries(oasFunctions)) {
for (const [name, fn] of Object.entries<string>(fns)) {
fetchMock.get(`https://unpkg.com/@stoplight/spectral/rulesets/oas${spec}/functions/${name}`, {
status: 200,
body: fn,
});
}
}
fetchMock.get('http://json-schema.org/draft-04/schema', {
status: 200,
body: JSON.parse(JSON.stringify(jsonSpecv4)),
});
});
afterEach(() => {
window.fetch = fetch;
});