adr
Version:
轻量级架构记录工具 - Command-line tools for working with Architecture Decision Records
67 lines (63 loc) • 5.86 kB
JavaScript
import { __awaiter } from "tslib";
let sinon = require('sinon');
let path = require('path');
let fs = require('fs');
let mkdirp = require('mkdirp');
let walkSync = require('walk-sync');
let OpenInEditor = require('open-in-editor');
import test from 'ava';
import ADR from '../index';
let Config = ADR.Config;
let adrTemplate = `# {NUMBER}. {TITLE}
日期: {DATE}
## 状态
列表:提议/通过/完成/已弃用/已取代
{DATE} 提议`;
let adrOptions = JSON.stringify({
path: './',
language: 'en'
});
test('ADR: create', t => {
const filename = '0002-create.md';
let consoleSpy = sinon.stub(console, 'log');
let mkdirpSync = sinon.stub(mkdirp, 'sync');
let generateSpy = sinon.stub(ADR, 'generate');
let fsWriteSyncSpy = sinon.stub(fs, 'writeFileSync');
let openInEditorSpy = sinon.stub(OpenInEditor, 'configure').returns({ open: (filePath) => __awaiter(void 0, void 0, void 0, function* () {
t.is(path.basename(filePath), filename);
}) });
let entriesSpy = sinon.stub(walkSync, 'entries').returns([
{
relativePath: '001-编写完整的单元测试.md',
basePath: './',
mode: 33188,
size: 246,
mtime: 1511435254653
}
]);
let fsExistSpy = sinon.stub(fs, 'existsSync').returns(true);
let fsReadSpy = sinon.stub(fs, 'readFileSync')
.onCall(0).returns(JSON.stringify(adrOptions))
.onCall(1).returns(JSON.stringify(adrOptions))
.onCall(2).returns(JSON.stringify(adrOptions))
.onCall(3).returns(JSON.stringify(adrOptions))
.onCall(4).returns(JSON.stringify(adrOptions))
.onCall(5).returns(adrTemplate);
let ADRGetSavePathSpy = sinon.stub(Config, 'getSavePath').returns('./');
ADR.create('create');
// create
t.deepEqual(fsWriteSyncSpy.calledWith(`./${filename}`), true);
// TOC
t.deepEqual(fsWriteSyncSpy.calledWith('./README.md'), true);
t.deepEqual(mkdirpSync.callCount, 1);
openInEditorSpy.restore();
fsWriteSyncSpy.restore();
ADRGetSavePathSpy.restore();
fsExistSpy.restore();
fsReadSpy.restore();
entriesSpy.restore();
consoleSpy.restore();
generateSpy.restore();
mkdirpSync.restore();
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHMvY3JlYXRlLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUM1QixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDMUIsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3RCLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUM5QixJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDbkMsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUE7QUFFNUMsT0FBTyxJQUFJLE1BQU0sS0FBSyxDQUFBO0FBRXRCLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQTtBQUMxQixJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0FBRXZCLElBQUksV0FBVyxHQUFHOzs7Ozs7OztVQVFSLENBQUE7QUFDVixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzlCLElBQUksRUFBRSxJQUFJO0lBQ1YsUUFBUSxFQUFFLElBQUk7Q0FDZixDQUFDLENBQUE7QUFFRixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ3RCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFBO0lBQ2pDLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQzNDLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzNDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUs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