Skip to content

Commit ddc7bd0

Browse files
committed
add more info
1 parent 95d1d2d commit ddc7bd0

File tree

4 files changed

+111
-26
lines changed

4 files changed

+111
-26
lines changed

__tests__/__snapshots__/index.test.js.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Array [
1212
exports[`expect res setHeader and end to match snapshot 2`] = `
1313
Array [
1414
Array [
15-
"{\\"data\\":{\\"registry\\":{\\"href\\":\\"http://mock:3000/\\",\\"ocVersion\\":\\"1.2.3\\",\\"type\\":\\"mock-registry\\"},\\"components\\":[{\\"name\\":\\"oc-a-component\\",\\"description\\":\\"Awesome OpenComponent\\",\\"version\\":\\"4.5.6\\"}],\\"component\\":{\\"name\\":\\"oc-a-component\\",\\"description\\":\\"Awesome OpenComponent\\",\\"version\\":\\"4.5.6\\"}}}",
15+
"{\\"data\\":{\\"registry\\":{\\"href\\":\\"http://mock:3000/\\",\\"ocVersion\\":\\"1.2.3\\",\\"type\\":\\"mock-registry\\"},\\"components\\":[{\\"name\\":\\"oc-a-component\\",\\"description\\":\\"Awesome OpenComponent\\",\\"version\\":\\"4.5.6\\",\\"allVersions\\":[\\"4.5.4\\",\\"4.5.5\\",\\"4.5.6\\"],\\"author\\":null,\\"repository\\":null,\\"parameters\\":[{\\"key\\":\\"id\\",\\"type\\":\\"string\\",\\"mandatory\\":true,\\"example\\":\\"815\\",\\"description\\":\\"The Id\\"}]}],\\"component\\":{\\"name\\":\\"oc-a-component\\",\\"description\\":\\"Awesome OpenComponent\\",\\"version\\":\\"4.5.6\\",\\"allVersions\\":[\\"4.5.4\\",\\"4.5.5\\",\\"4.5.6\\"],\\"author\\":null,\\"repository\\":null,\\"parameters\\":[{\\"key\\":\\"id\\",\\"type\\":\\"string\\",\\"mandatory\\":true,\\"example\\":\\"815\\",\\"description\\":\\"The Id\\"}]}}}",
1616
],
1717
]
1818
`;

__tests__/index.test.js

Lines changed: 66 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,64 @@ const options = {
88

99
const middleware = factory(options);
1010

11+
const query = `
12+
{
13+
registry {
14+
href
15+
ocVersion
16+
type
17+
}
18+
components {
19+
name
20+
description
21+
version
22+
allVersions
23+
author {
24+
name
25+
email
26+
}
27+
repository {
28+
type
29+
url
30+
}
31+
parameters {
32+
key
33+
type
34+
mandatory
35+
example
36+
description
37+
}
38+
}
39+
component(name: "oc-apod") {
40+
name
41+
description
42+
version
43+
allVersions
44+
author {
45+
name
46+
email
47+
}
48+
repository {
49+
type
50+
url
51+
}
52+
parameters {
53+
key
54+
type
55+
mandatory
56+
example
57+
description
58+
}
59+
}
60+
}
61+
`;
62+
1163
test('expect type of middleware to be function', () => {
1264
expect(typeof middleware).toBe('function');
1365
});
1466

1567
test('expect res setHeader and end to match snapshot', async () => {
68+
// todo: change mockResponse
1669
fetch.mockResponse(JSON.stringify({
1770
href: options.baseUrl,
1871
ocVersion: '1.2.3',
@@ -22,31 +75,24 @@ test('expect res setHeader and end to match snapshot', async () => {
2275
],
2376
name: 'oc-a-component',
2477
description: 'Awesome OpenComponent',
25-
version: '4.5.6'
78+
version: '4.5.6',
79+
allVersions: ['4.5.4', '4.5.5', '4.5.6'],
80+
oc: {
81+
parameters: {
82+
id: {
83+
type: 'string',
84+
mandatory: true,
85+
example: '815',
86+
description: 'The Id'
87+
}
88+
}
89+
}
2690
}));
2791

2892
const req = {
2993
method: 'GET',
3094
headers: {},
31-
url: `?query=
32-
{
33-
registry {
34-
href
35-
ocVersion
36-
type
37-
}
38-
components {
39-
name
40-
description
41-
version
42-
}
43-
component(name: "oc-a-component") {
44-
name
45-
description
46-
version
47-
}
48-
}
49-
`
95+
url: `?query=${query}`
5096
};
5197

5298
const res = { setHeader: jest.fn(), end: jest.fn() };

dist/index.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
'use strict';
22

3+
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
4+
35
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
46

57
/* eslint-disable arrow-body-style */
@@ -11,7 +13,7 @@ var _require = require('graphql'),
1113

1214
var fetch = require('node-fetch');
1315

14-
var schema = buildSchema('\n type Registry {\n href: String\n ocVersion: String\n type: String\n }\n\n type Component {\n name: String\n description: String\n version: String\n }\n\n type Query {\n registry: Registry\n component(name: String): Component\n components: [Component]\n }\n');
16+
var schema = buildSchema('\n type Registry {\n href: String\n ocVersion: String\n type: String\n }\n\n type Person {\n name: String\n email: String\n }\n\n type Repository {\n type: String\n url: String\n }\n\n type Parameter {\n key: String\n type: String\n mandatory: Boolean\n example: String\n description: String\n }\n\n type Component {\n name: String\n description: String\n version: String\n allVersions: [String]\n author: Person\n repository: Repository\n parameters: [Parameter]\n }\n\n type Query {\n registry: Registry\n component(name: String): Component\n components: [Component]\n }\n');
1517

1618
var fetchComponent = function () {
1719
var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(url) {
@@ -40,7 +42,7 @@ var fetchComponent = function () {
4042

4143
var makeComponent = function () {
4244
var _ref2 = _asyncToGenerator(regeneratorRuntime.mark(function _callee2(baseUrl, name) {
43-
var url, info, copy;
45+
var url, info, parameters, copy;
4446
return regeneratorRuntime.wrap(function _callee2$(_context2) {
4547
while (1) {
4648
switch (_context2.prev = _context2.next) {
@@ -51,10 +53,18 @@ var makeComponent = function () {
5153

5254
case 3:
5355
info = _context2.sent;
54-
copy = Object.assign({}, info);
56+
parameters = [];
57+
58+
if (info.oc.parameters) {
59+
parameters = Object.keys(info.oc.parameters).map(function (key) {
60+
return _extends({ key: key }, info.oc.parameters[key]);
61+
});
62+
}
63+
64+
copy = Object.assign({}, info, { parameters: parameters });
5565
return _context2.abrupt('return', copy);
5666

57-
case 6:
67+
case 8:
5868
case 'end':
5969
return _context2.stop();
6070
}

src/index.js

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,32 @@ const schema = buildSchema(`
1111
type: String
1212
}
1313
14+
type Person {
15+
name: String
16+
email: String
17+
}
18+
19+
type Repository {
20+
type: String
21+
url: String
22+
}
23+
24+
type Parameter {
25+
key: String
26+
type: String
27+
mandatory: Boolean
28+
example: String
29+
description: String
30+
}
31+
1432
type Component {
1533
name: String
1634
description: String
1735
version: String
36+
allVersions: [String]
37+
author: Person
38+
repository: Repository
39+
parameters: [Parameter]
1840
}
1941
2042
type Query {
@@ -35,7 +57,14 @@ const fetchComponent = async (url) => {
3557
const makeComponent = async (baseUrl, name) => {
3658
const url = `${baseUrl}${name}/~info`;
3759
const info = await fetchComponent(url);
38-
const copy = Object.assign({}, info);
60+
61+
let parameters = [];
62+
if (info.oc.parameters) {
63+
parameters = Object.keys(info.oc.parameters)
64+
.map(key => ({ key, ...info.oc.parameters[key] }));
65+
}
66+
67+
const copy = Object.assign({}, info, { parameters });
3968
return copy;
4069
};
4170

0 commit comments

Comments
 (0)