adr
Version:
轻量级架构记录工具 - Command-line tools for working with Architecture Decision Records
166 lines (164 loc) • 11.4 kB
JavaScript
let sinon = require('sinon');
let walkSync = require('walk-sync');
import test from 'ava';
import ADR from '../index';
let Config = ADR.Config;
test('ADR: generate graph', t => {
let ADRGetSavePathSpy = sinon.stub(Config, 'getSavePath').returns('./');
let consoleSpy = sinon.stub(console, 'log');
let entriesSpy = sinon.stub(walkSync, 'entries').returns([
{
relativePath: '001-编写完整的单元测试.md',
basePath: '/test',
mode: 33188,
size: 246,
mtime: 1511435254653
},
{
relativePath: '002-编写完整的单元测试.md',
basePath: '/test',
mode: 33188,
size: 246,
mtime: 1511435254653
},
{
relativePath: 'README.md',
basePath: '/test',
mode: 33188,
size: 246,
mtime: 1511435254653
}
]);
let results = ADR.generate('graph');
console.log(results);
t.deepEqual(results, `digraph {
node [shape=plaintext];
_1 [label="1.编写完整的单元测试"; URL="001-编写完整的单元测试.md"]
_2 [label="2.编写完整的单元测试"; URL="002-编写完整的单元测试.md"]
_1 -> _2 [style="dotted"];
}
`);
consoleSpy.restore();
ADRGetSavePathSpy.restore();
entriesSpy.restore();
});
test('ADR: generate toc', t => {
let ADRGetSavePathSpy = sinon.stub(Config, 'getSavePath').returns('./');
let consoleSpy = sinon.stub(console, 'log');
let entriesSpy = sinon.stub(walkSync, 'entries').returns([
{
relativePath: '001-编写完整的单元测试.md',
basePath: '/test',
mode: 33188,
size: 246,
mtime: 1511435254653
},
{
relativePath: '002-编写完整的单元测试.md',
basePath: '/test',
mode: 33188,
size: 246,
mtime: 1511435254653
},
{
relativePath: 'README.md',
basePath: '/test',
mode: 33188,
size: 246,
mtime: 1511435254653
}
]);
let results = ADR.generate('toc');
console.log(results);
t.deepEqual(results, `# 架构决策记录
* [1. 编写完整的单元测试](001-编写完整的单元测试.md)
* [2. 编写完整的单元测试](002-编写完整的单元测试.md)`);
consoleSpy.restore();
ADRGetSavePathSpy.restore();
entriesSpy.restore();
});
test('ADR: generate error', t => {
let consoleSpy = sinon.stub(console, 'log');
ADR.generate('others');
t.deepEqual(consoleSpy.called, true);
consoleSpy.restore();
});
test('ADR: generate graph with asciidoc', t => {
let ADRGetDocExtensionSpy = sinon.stub(ADR.Config, 'getDocExtension').returns('adoc');
let ADRGetSavePathSpy = sinon.stub(Config, 'getSavePath').returns('./');
let consoleSpy = sinon.stub(console, 'log');
let entriesSpy = sinon.stub(walkSync, 'entries').returns([
{
relativePath: '001-编写完整的单元测试.adoc',
basePath: '/test',
mode: 33188,
size: 246,
mtime: 1511435254653
},
{
relativePath: '002-编写完整的单元测试.adoc',
basePath: '/test',
mode: 33188,
size: 246,
mtime: 1511435254653
},
{
relativePath: 'README.adoc',
basePath: '/test',
mode: 33188,
size: 246,
mtime: 1511435254653
}
]);
let results = ADR.generate('graph');
console.log(results);
t.deepEqual(results, `digraph {
node [shape=plaintext];
_1 [label="1.编写完整的单元测试"; URL="001-编写完整的单元测试.adoc"]
_2 [label="2.编写完整的单元测试"; URL="002-编写完整的单元测试.adoc"]
_1 -> _2 [style="dotted"];
}
`);
consoleSpy.restore();
ADRGetSavePathSpy.restore();
entriesSpy.restore();
ADRGetDocExtensionSpy.restore();
});
test('ADR: generate toc with asciodoc', t => {
let ADRGetDocExtensionSpy = sinon.stub(ADR.Config, 'getDocExtension').returns('adoc');
let ADRGetSavePathSpy = sinon.stub(Config, 'getSavePath').returns('./');
let consoleSpy = sinon.stub(console, 'log');
let entriesSpy = sinon.stub(walkSync, 'entries').returns([
{
relativePath: '001-编写完整的单元测试.adoc',
basePath: '/test',
mode: 33188,
size: 246,
mtime: 1511435254653
},
{
relativePath: '002-编写完整的单元测试.adoc',
basePath: '/test',
mode: 33188,
size: 246,
mtime: 1511435254653
},
{
relativePath: 'README.adoc',
basePath: '/test',
mode: 33188,
size: 246,
mtime: 1511435254653
}
]);
let results = ADR.generate('toc');
console.log(results);
t.deepEqual(results, `.架构决策记录
* xref:001-编写完整的单元测试.adoc[1. 编写完整的单元测试]
* xref:002-编写完整的单元测试.adoc[2. 编写完整的单元测试]`);
consoleSpy.restore();
ADRGetSavePathSpy.restore();
entriesSpy.restore();
ADRGetDocExtensionSpy.restore();
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0cy9nZW5lcmF0ZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUM1QixJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDbkMsT0FBTyxJQUFJLE1BQU0sS0FBSyxDQUFBO0FBQ3RCLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQTtBQUUxQixJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0FBRXZCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUM5QixJQUFJLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN2RSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUMzQyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDdkQ7WUFDRSxZQUFZLEVBQUUsa0JBQWtCO1lBQ2hDLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLEdBQUc7WUFDVCxLQUFLLEVBQUUsYUFBYTtTQUNyQjtRQUNEO1lBQ0UsWUFBWSxFQUFFLGtCQUFrQjtZQUNoQyxRQUFRLEVBQUUsT0FBTztZQUNqQixJQUFJLEVBQUUsS0FBSztZQUNYLElBQUksRUFBRSxHQUFHO1lBQ1QsS0FBSyxFQUFFLGFBQWE7U0FDckI7UUFDRDtZQUNFLFlBQVksRUFBRSxXQUFXO1lBQ3pCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLElBQUksRUFBRSxLQUFLO1lB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