duckdoc-jsoner
v0.8.5
Published
json file generator for duckdoc
Downloads
176
Readme
duckdoc-jsoner
Integrating duckdoc-jsoner within the testing process and prepares .json
files of each endpoint based on tests of each endpoint. duckdoc then parses those files and renders to static document sites (i.e., .html
).
compatibility
duckdoc | duckdoc-jsoner --- | --- 0.10.x | 0.7.x 0.11.x | 0.8.x
install
$ npm install --save-dev duckdoc-jsoner
Endpoint && Task
definition
Endpoint
: ONE url with ONE http method, ex.GET
http://example.com/api/user
Task
: making ONE request to an Endpoint, containing the information of request and response.
example
let path = require('path');
let jsoner, { Task, Endpoint } = require('duckdoc-jsoner');
// let Endpoint = require('duckdoc-jsoner').Endpoint;
jsoner.outputPath = path.join(__dirname, './duckdoc/json');
let endpoint = new Endpoint("Get customer info.", "/customer");
// Endpiont.contructor(endpointName, pathParams)
let task = Task.createFromRequest(response, response.body);
endpoint.tasks.push(task);
jsoner.createEndpoint(endpoint);
task.options
let task = Task.createFromRequest(response, response.body);
task.options = {
name: "Success({StatusCode})",
description: "success situation",
req: {
body: {
description: {
email: "user email",
"isAnArray.__first_item.name": "name description"
},
optionalParams: [
"deviceUUID", // optional parameter
"isAnArray.__first_item.name"
],
}
},
res: {
body: {
// same as req.body
}
}
};
properties
jsoner
jsoner.outputPath
:.json
file output pathjsoner.createEndpoint(endpoint)
: create.json
ofendpoint
Endpoint
Endpoint.endpointName
: name of the endpointEndpoint.pathParms
: path parameters, ex./user/:id
Endpoint.tasks
: an Array ofTask
objects
Task
Task.createFromRequest(response, body)
: returnTask
object generated from response of requestTask.createFromAxios(response)
: returnTask
object generated from response of axiostask.options
name
: endpoint name with{StatusCode}
keyworddescription
: endpoint description(req/res).body
:- description:
Object
, external description of each field - optionalParams:
Array
, specification optional fields
- description:
jsoner
parses the first item of an array to get a sense of the data format. Use__first.item
to indicate the items of array.
As the jsoner is designed to be integrated within the testing process, the concept is to load req/res
from realistic http request. The manually added informations are specified in options
.
deprecated usage
create with javscript object
var jsoner = require('duckdoc-jsoner');
let api = {
"method": "GET",
"url": "https://localhost:8000/register",
"req": {
"headers": {
"content-type": "application/json"
},
"body": {
"email": "[email protected]",
"tel": "xxxxxxx",
"deviceUUID": "xxxx-xxx-xxx",
"isAnArray": [
{
"name": "user name"
}//, {...}, {...}
]
}
},
"res": {
"status": {
"code": 200,
"message": "OK",
},
"body": {
"message": "Register success."
},
"headers": {
"content-type": "image/png"
},
}
};
jsoner.outputPath = path.join(__dirname, './duckdoc/json');
jsoner.createFromAPI(api);
options
// ...
let options = {
endpointName: "User register",
pathParams: "/user/:id",
req: {
body: {
description: {
email: "user email",
"isAnArray.__first_item.name": "name description"
},
optionalParams: [
"deviceUUID", // optional parameter
"isAnArray.__first_item.name"
]
}
},
res: {
body: {
// same as req.body
}
}
};
jsoner.createFromAPI(api, options);
use
__first.item
to indicate the items of array.
As the jsoner is designed to be integrated within the testing process, the concept is to load api
from realistic http request. The manually added informations are specified in options
.
Using with request or request-promise
var jsoner = require('duckdoc-jsoner');
jsoner.ouputPath = "path/to/output/folder";
request(options, function (error, response, body) {
let opt = {
endpointName :'GET Test',
pathParams: '/test'
};
jsoner.createFromResponse(response, body, opt);
});
// options: resolveWithFullResponse: true
rq(options).then(function (response) {
jsoner.createFromResponse(response, response.body);
});
properties
jsoner.outputPath
:.json
file output pathjsoner.createFromAPI(api, options)
jsoner.createFromResponse(response, body, options)