SRS/tools/printIssue.ts
2022-06-11 15:10:10 +09:00

319 lines
7.6 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

type Testcase = {
id: number,
subId: number | null,
content: string,
procedure: string,
testData: string| null,
expected: string,
actual: string,
pass: boolean
}
const testcase: Testcase[] = [
{
"id": 1,
"subId": null,
"content": "Focus/Unfocus",
"procedure": "1. 청크를 클릭한다.",
"testData": null,
"expected": "",
"actual": "",
"pass": true
},
{
"id": 2,
"subId": null,
"content": "remove",
"procedure": "1. 청크를 삭제하는 버튼을 클릭한다.",
"testData": null,
"expected": "",
"actual": "",
"pass": true
},
{
"id": 3,
"subId": 1,
"content": "render - markdown",
"procedure": "1. 마크다운 청크 렌더링을 확인한다.",
"testData": " # 제목 ",
"expected": "",
"actual": "",
"pass": true
},
{
"id": 3,
"subId": 2,
"content": "render - latex",
"procedure": "1. LaTex 청크 렌더링을 확인한다.",
"testData": " sum^n_{n=0}n = \\frac{n(n+1)}2$$ ",
"expected": "",
"actual": "",
"pass": true
},
{
"id": 3,
"subId": 3,
"content": "render - link",
"procedure": "1. Image 청크 렌더링을 확인한다.",
"testData": " http://picsum.photos/200/300 ",
"expected": "",
"actual": "",
"pass": true
},
{
"id": 4,
"subId": null,
"content": "previews",
"procedure": "1. Katex 청크의 미리보기를 본다.",
"testData": " sum^n_{n=0}n = \\frac{n(n+1)}2$$ ",
"expected": "",
"actual": "",
"pass": false
},
{
"id": 10,
"subId": null,
"content": "autocomplete",
"procedure": "1. 자동완성을 시험한다.",
"testData": null,
"expected": "",
"actual": "",
"pass": false
},
{
"id": 11,
"subId": null,
"content": "swap positions",
"procedure": "1. 청크의 위치를 바꾼다.",
"testData": null,
"expected": "",
"actual": "",
"pass": true
},
{
"id": 27,
"subId": 1,
"content": "edit",
"procedure": "1. 청크를 수정한다.",
"testData": null,
"expected": "",
"actual": "",
"pass": true
},
{
"id": 27,
"subId": 2,
"content": "edit chunk conflict",
"procedure": "1. 청크를 수정모드에 들어간다.",
"testData": null,
"expected": "",
"actual": "",
"pass": false
},
{
"id": 5,
"subId": null,
"content": "view Chunk",
"procedure": "1. 문서를 열어 청크가 렌더링되는지 본다.",
"testData": "test.syd",
"expected": "",
"actual": "",
"pass": true
},
{
"id": 7,
"subId": null,
"content": "add/delete tag",
"procedure": "1. 문서에 태그를 추가한다.<br>2. 문서에 태그를 삭제한다.",
"testData": "A",
"expected": "",
"actual": "",
"pass": true
},
{
"id": 8,
"subId": null,
"content": "Drag And Drop Upload,",
"procedure": "1. 텍스트를 드래그한다.",
"testData": null,
"expected": "",
"actual": "",
"pass": true
},
{
"id": 14,
"subId": null,
"content": "create/delete/rename file",
"procedure": "1. 파일을 만든다.",
"testData": "test.txt",
"expected": "",
"actual": "",
"pass": true
},
{
"id": 15,
"subId": null,
"content": "upload/download files",
"procedure": "1. 파일을 업로드한다.",
"testData": "test.txt",
"expected": "",
"actual": "",
"pass": true
},
{
"id": 18,
"subId": null,
"content": "export document",
"procedure": "1. export 버튼을 누른다.",
"testData": null,
"expected": "",
"actual": "",
"pass": false
},
{
"id": 17,
"subId": null,
"content": "render",
"procedure": "1. 스태시가 그려지는지 확인한다",
"testData": null,
"expected": "",
"actual": "",
"pass": true
},
{
"id": 19,
"subId": null,
"content": "add",
"procedure": "1. 청크를 추가한다",
"testData": null,
"expected": "",
"actual": "",
"pass": true
},
{
"id": 20,
"subId": null,
"content": "remove",
"procedure": "1. 청크를 삭제한다",
"testData": null,
"expected": "",
"actual": "",
"pass": true
},
{
"id": 21,
"subId": null,
"content": "Drag and Drop to Document",
"procedure": "1. 청크로부터 문서로 청크를 옮긴다.",
"testData": null,
"expected": "",
"actual": "",
"pass": true
},
{
"id": 22,
"subId": null,
"content": "Login",
"procedure": "1. 비밀번호를 입력한다.",
"testData": "admin",
"expected": "",
"actual": "",
"pass": false
},
{
"id": 24,
"subId": null,
"content": "Localization",
"procedure": "1. 다른언어를 지원하는지 언어를 바꿔 확인한다",
"testData": null,
"expected": "",
"actual": "",
"pass": false
},
{
"id": 16,
"subId": null,
"content": "Document Search",
"procedure": "1. 검색해본다.",
"testData": null,
"expected": "",
"actual": "",
"pass": false
},
{
"id": 85,
"subId": null,
"content": "Permission",
"procedure": "1. 각각의 기능들에 권한없이 시도한다",
"testData": null,
"expected": "",
"actual": "",
"pass": true
}
]
import {Issue} from "./githubType.ts"
async function readContent(path?: string): Promise<string> {
let content = "[]";
if (path) {
content = await Deno.readTextFile(path);
}
else throw new Error("No input provided. path or stdin.");
return content;
}
const data = await readContent("../build/issues.json")
const issues = JSON.parse(data) as Issue[]
const table = new Map<string, Issue[]>();
issues.forEach((x)=>{
const category = x.title.split(":")[0];
if(!category) return;
let c = table.get(category)
if(!c){
c = [];
table.set(category,c);
}
c.push(x);
})
const keys = Array.from(table.keys());
keys.forEach(x=>{
console.log(`\n### ${x}\n`);
const issues = table.get(x);
console.log("<table>");
console.log("<thead>");
console.log("<tr>");
//console.log("<th>Category</th>");
console.log("<th>ID</th>");
console.log("<th>Content</th>");
console.log("<th>Procedure</th>");
console.log("<th>Test Data</th>");
console.log("<th>P/F</th>");
console.log("</tr>");
console.log("</thead>");
console.log("<tbody>");
const ts = issues!.map(x=> testcase.filter(y=>y.id==x.number)).flat() as Testcase[];
if(ts?.length == 0) return;
//console.log(`<tr><th rowspan="${ts?.length}">${x}</th>`);
ts.forEach((y,i)=>{
//if(i>0)
console.log("<tr>");
const id = y.subId ? `${y.id}-${y.subId}` : y.id;
console.log(`<td>${id}</td>`);
console.log(`<td>${y.content}</td>`);
console.log(`<td>${y.procedure}</td>`);
console.log(`<td>${y.testData ?? ""}</td>`);
console.log(`<td>${y.pass ? "P" : "F"}</td>`);
console.log("</tr>");
})
console.log("</tbody>");
console.log("</table>");
})