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. 문서에 태그를 추가한다.
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 {
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();
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("");
console.log("");
console.log("");
//console.log("Category | ");
console.log("ID | ");
console.log("Content | ");
console.log("Procedure | ");
console.log("Test Data | ");
console.log("P/F | ");
console.log("
");
console.log("");
console.log("");
const ts = issues!.map(x=> testcase.filter(y=>y.id==x.number)).flat() as Testcase[];
if(ts?.length == 0) return;
//console.log(`${x} | `);
ts.forEach((y,i)=>{
//if(i>0)
console.log("
---|
");
const id = y.subId ? `${y.id}-${y.subId}` : y.id;
console.log(`${id} | `);
console.log(`${y.content} | `);
console.log(`${y.procedure} | `);
console.log(`${y.testData ?? ""} | `);
console.log(`${y.pass ? "P" : "F"} | `);
console.log("
");
})
console.log("");
console.log("
");
})