const defaultTheme = require('./defaultTheme.js');
function json_format(json) {
if (json && typeof json === 'object') {
return JSON.stringify(json, null, ' ');
}
return json;
}
module.exports = function renderToHtml(reports) {
let tp = createHtml(reports);
return tp;
};
function createHtml(reports) {
let mdTemplate = ``;
let left = ``;
reports.list.map((item, index) => {
mdTemplate += baseHtml(index, item.name, item.path, item.status);
mdTemplate += validHtml(item.validRes);
mdTemplate += requestHtml(item.url, item.headers, item.data);
mdTemplate += reponseHtml(item.res_header, item.res_body);
left += leftHtml(index, item.name, item.code);
// left += codeHtml(item.code);
});
return createHtml5(left, mdTemplate, reports.message, reports.runTime);
}
function createHtml5(left, tp, msg, runTime) {
let message = ``;
if (msg.failedNum === 0) {
message += `
一共 ${
msg.successNum
} 测试用例, 全部验证通过(${runTime})
`;
} else {
message += `一共 ${msg.len} 测试用例, ${
msg.successNum
} 个验证通过, ${msg.failedNum} 个未通过(${runTime})
`;
}
//html5模板
let html = `
测试报告
${defaultTheme}
YApi 测试报告
${message}
${tp}
`;
return html;
}
function requestHtml(url, headers, params) {
headers = json_format(headers, null, ' ');
params = json_format(params);
let html = ``;
html += `
Request
`;
html += headers
? `
`
: ``;
html += params
? `
`
: ``;
html += `
`;
return html;
}
function reponseHtml(res_header, res_body) {
res_header = json_format(res_header, null, ' ');
res_body = json_format(res_body, null, ' ');
let html = ``;
html += `Reponse
`;
html += res_header
? `
`
: ``;
html += res_body
? `
`
: ``;
html += `
`;
return html;
}
function validHtml(validRes) {
if (validRes && Array.isArray(validRes)) {
validRes = validRes.map((item, index) => {
return `${item.message}
`;
});
}
let html = `
`;
return html;
}
function baseHtml(index, name, path, status) {
let html = `
`;
return html;
}
function leftHtml(index, name, code) {
let html = `
${name}
${codeHtml(code)}
`;
return html;
}
function codeHtml(code) {
let codeHtml = ``;
switch (code) {
case 0:
codeHtml += `
`;
break;
case 400:
codeHtml += `
`;
break;
case 1:
codeHtml += `
`;
break;
default:
codeHtml += `
`;
break;
}
return codeHtml;
}