adr
Version:
轻量级架构记录工具 - Command-line tools for working with Architecture Decision Records
140 lines (130 loc) • 10.1 kB
JavaScript
let sinon = require('sinon');
let fs = require('fs');
let walkSync = require('walk-sync');
let LRU = require('lru-cache');
import test from 'ava';
import ADR from '../index';
let StatusHelper = ADR.StatusHelper;
let mdTemplate = `
# 10. 更友好的 CLI
日期: 2017-11-23
## 状态
2017-11-23 提议
2017-11-23 通过
`;
let asciidocTemplate = `
= 10. 更友好的 CLI
日期: 2017-11-23
== 状态
2017-11-23 提议
2017-11-23 通过
`;
test('ADR: list status', t => {
let entriesSpy = sinon.stub(walkSync, 'entries').returns([
{
relativePath: '001-编写完整的单元测试.md',
basePath: '/Users/fdhuang/learing/adr/docs/adr/',
mode: 33188,
size: 246,
mtime: 1511435254653
}
]);
let cacheSpy = sinon.stub(LRU.prototype, 'get').returns({
path: 'some',
language: 'zh-cn'
});
let fsReadSpy = sinon.stub(fs, 'readFileSync')
.onCall(0).returns(mdTemplate)
.onCall(1).returns(mdTemplate);
let status = StatusHelper.getAllStatus('./001-编写完整的单元测试.md');
t.deepEqual(status, [
'2017-11-23 提议',
'2017-11-23 通过'
]);
fsReadSpy.restore();
entriesSpy.restore();
cacheSpy.restore();
});
test('ADR:status helper set status', t => {
let fsWriteSpy = sinon.stub(fs, 'writeFileSync');
let entriesSpy = sinon.stub(walkSync, 'entries').returns([
{
relativePath: '001-编写完整的单元测试.md',
basePath: '/Users/fdhuang/learing/adr/docs/adr/',
mode: 33188,
size: 246,
mtime: 1511435254653
}
]);
let cacheSpy = sinon.stub(LRU.prototype, 'get').returns({
path: 'some',
language: 'zh-cn'
});
let fsReadSpy = sinon.stub(fs, 'readFileSync')
.onCall(0).returns(mdTemplate)
.onCall(1).returns(mdTemplate);
StatusHelper.setStatus('./001-编写完整的单元测试.md', '完成');
// t.deepEqual(fsWriteSpy.calledWith('./001-编写完整的单元测试.md', '{"language":"en","path":"docs/adr/","prefix":"","digits":4}'), true)
t.deepEqual(true, true);
fsReadSpy.restore();
fsWriteSpy.restore();
entriesSpy.restore();
cacheSpy.restore();
});
test('ADR: list status ith Asciidoc', t => {
let ADRGetDocExtensionSpy = sinon.stub(ADR.Config, 'getDocExtension').returns('adoc');
let entriesSpy = sinon.stub(walkSync, 'entries').returns([
{
relativePath: '001-编写完整的单元测试.adoc',
basePath: '/Users/fdhuang/learing/adr/docs/adr/',
mode: 33188,
size: 246,
mtime: 1511435254653
}
]);
let cacheSpy = sinon.stub(LRU.prototype, 'get').returns({
path: 'some',
language: 'zh-cn'
});
let fsReadSpy = sinon.stub(fs, 'readFileSync')
.onCall(0).returns(asciidocTemplate)
.onCall(1).returns(asciidocTemplate);
let status = StatusHelper.getAllStatus('./001-编写完整的单元测试.adoc');
t.deepEqual(status, [
'2017-11-23 提议',
'2017-11-23 通过'
]);
fsReadSpy.restore();
entriesSpy.restore();
cacheSpy.restore();
ADRGetDocExtensionSpy.restore();
});
test('ADR:status helper set status with Asciidoc', t => {
let ADRGetDocExtensionSpy = sinon.stub(ADR.Config, 'getDocExtension').returns('adoc');
let fsWriteSpy = sinon.stub(fs, 'writeFileSync');
let entriesSpy = sinon.stub(walkSync, 'entries').returns([
{
relativePath: '001-编写完整的单元测试.adoc',
basePath: '/Users/fdhuang/learing/adr/docs/adr/',
mode: 33188,
size: 246,
mtime: 1511435254653
}
]);
let cacheSpy = sinon.stub(LRU.prototype, 'get').returns({
path: 'some',
language: 'zh-cn'
});
let fsReadSpy = sinon.stub(fs, 'readFileSync')
.onCall(0).returns(asciidocTemplate)
.onCall(1).returns(asciidocTemplate);
StatusHelper.setStatus('./001-编写完整的单元测试.adoc', '完成');
// t.deepEqual(fsWriteSpy.calledWith('./001-编写完整的单元测试.md', '{"language":"en","path":"docs/adr/","prefix":"","digits":4}'), true)
t.deepEqual(true, true);
fsReadSpy.restore();
fsWriteSpy.restore();
entriesSpy.restore();
cacheSpy.restore();
ADRGetDocExtensionSpy.restore();
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzSGVscGVyLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHMvc3RhdHVzSGVscGVyLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQzVCLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN0QixJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDbkMsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRTlCLE9BQU8sSUFBSSxNQUFNLEtBQUssQ0FBQTtBQUV0QixPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUE7QUFDMUIsSUFBSSxZQUFZLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQTtBQUVuQyxJQUFJLFVBQVUsR0FBRzs7Ozs7Ozs7Ozs7Q0FXaEIsQ0FBQTtBQUVELElBQUksZ0JBQWdCLEdBQUc7Ozs7Ozs7Ozs7O0NBV3RCLENBQUE7QUFFRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDM0IsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3ZEO1lBQ0UsWUFBWSxFQUFFLGtCQUFrQjtZQUNoQyxRQUFRLEVBQUUsc0NBQXNDO1lBQ2hELElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLEdBQUc7WUFDVCxLQUFLLEVBQUUsYUFBYTtTQUNyQjtLQUNGLENBQUMsQ0FBQTtJQUNGLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDdEQsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsT0FBTztLQUNsQixDQUFDLENBQUE7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