solidity-docgen
Version:
Solidity API documentation automatic generator.
85 lines • 3.29 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ava_1 = __importDefault(require("ava"));
const path_1 = __importDefault(require("path"));
const sitemap_1 = require("./sitemap");
const solidity_1 = require("./solidity");
const solc_1 = require("./solc");
const emptyReadme = (dir = '') => ({
path: path_1.default.join(dir, 'README.md'),
contents: '',
});
ava_1.default('single readme', t => {
const source = buildSoliditySource();
const sitemap = sitemap_1.Sitemap.generate(source, [emptyReadme()], 'md', false);
t.is(sitemap.pages.length, 1);
});
ava_1.default('single readme no contracts', t => {
const source = buildSoliditySource(b => b
.file('Foo.sol'));
const sitemap = sitemap_1.Sitemap.generate(source, [emptyReadme()], 'md', false);
const { pages: [page] } = sitemap;
t.is(page.contracts.length, 0);
});
ava_1.default('single readme multiple contracts', t => {
const source = buildSoliditySource(b => b
.file('Foo.sol')
.contract('Foo')
.contract('Bar'));
const sitemap = sitemap_1.Sitemap.generate(source, [emptyReadme()], 'md', false);
const { pages: [page] } = sitemap;
t.is(page.contracts.length, 2);
t.assert(page.contracts.some(c => c.name === 'Foo'));
t.assert(page.contracts.some(c => c.name === 'Bar'));
});
ava_1.default('filter subdirectory', t => {
const source = buildSoliditySource(b => b
.file('Foo.sol')
.contract('Foo')
.file('sub/Bar.sol')
.contract('Bar'));
const sitemap = sitemap_1.Sitemap.generate(source, [emptyReadme('sub')], 'md', false);
const { pages: [page] } = sitemap;
t.is(page.contracts.length, 1);
t.is(page.contracts[0].name, 'Bar');
});
ava_1.default('filter nested subdirectories', t => {
const source = buildSoliditySource(b => b
.file('sub/Bar.sol')
.contract('Bar')
.file('sub/sub2/Foo.sol')
.contract('Foo'));
const sitemap = sitemap_1.Sitemap.generate(source, [emptyReadme('sub')], 'md', false);
const { pages: [page] } = sitemap;
t.is(page.contracts.length, 2);
t.assert(page.contracts.some(c => c.name === 'Bar'));
t.assert(page.contracts.some(c => c.name === 'Foo'));
});
ava_1.default('links', t => {
const source = buildSoliditySource(b => b
.file('sub1/Bar.sol')
.contract('Bar')
.file('sub2/Foo.sol')
.contract('Foo'));
const sitemap = sitemap_1.Sitemap.generate(source, [emptyReadme('sub1'), emptyReadme('sub2')], 'md', false);
const links = sitemap.links(sitemap.pages[0]);
t.is(links.length, 2);
const bar = links[0];
t.is(bar.target.name, 'Bar');
t.is(bar.path, 'sub1.md');
t.is(bar.relativePath, '');
const foo = links[1];
t.is(foo.target.name, 'Foo');
t.is(foo.path, 'sub2.md');
t.is(foo.relativePath, 'sub2.md');
});
function buildSoliditySource(builder) {
const solcOutput = new solc_1.SolcOutputBuilder();
if (builder)
builder(solcOutput);
return new solidity_1.SoliditySource('', solcOutput, c => c.name);
}
//# sourceMappingURL=sitemap.test.js.map