feat: make sol-doc only document what's requested

if a list of contracts-to-document is passed into sol-doc, then the
output should only contain documentation for the contracts requested.

if an empty/undefined list is passed, then it should document all
contracts that were found.
This commit is contained in:
F. Eugene Aumson
2018-09-22 10:31:47 -04:00
parent 37cb18e1da
commit 9f0dfb1e1a
2 changed files with 29 additions and 18 deletions

View File

@@ -24,14 +24,13 @@ describe('#SolidityDocGenerator', () => {
const docPromises: Array<Promise<DocAgnosticFormat>> = [
generateSolDocAsync(`${__dirname}/../../test/fixtures/contracts`),
generateSolDocAsync(`${__dirname}/../../test/fixtures/contracts`, []),
generateSolDocAsync(`${__dirname}/../../test/fixtures/contracts`, ['TokenTransferProxy']),
];
docPromises.forEach(docPromise => {
it('should generate a doc object that matches the TokenTransferProxy fixture', async () => {
it('should generate a doc object that matches the TokenTransferProxy fixture with its dependencies', async () => {
const doc = await docPromise;
expect(doc).to.not.be.undefined();
verifyTokenTransferProxyABIIsDocumented(doc, 'TokenTransferProxy');
verifyTokenTransferProxyAndDepsABIsAreDocumented(doc, 'TokenTransferProxy');
let addAuthorizedAddressMethod: SolidityMethod | undefined;
for (const method of doc.TokenTransferProxy.methods) {
@@ -48,6 +47,12 @@ describe('#SolidityDocGenerator', () => {
expect((addAuthorizedAddressMethod as SolidityMethod).parameters[0].comment).to.equal(expectedParamComment);
});
});
it('should generate a doc object that matches the TokenTransferProxy fixture', async () => {
const doc: DocAgnosticFormat = await generateSolDocAsync(`${__dirname}/../../test/fixtures/contracts`, [
'TokenTransferProxy',
]);
verifyTokenTransferProxyABIIsDocumented(doc, 'TokenTransferProxy');
});
describe('when processing all the permutations of devdoc stuff that we use in our contracts', () => {
let doc: DocAgnosticFormat;
before(async () => {
@@ -188,19 +193,10 @@ function verifyTokenTransferProxyABIIsDocumented(doc: DocAgnosticFormat, contrac
throw new Error('events should never be undefined');
}
expect(events.length).to.equal(tokenTransferProxyEventCount);
}
expect(doc.Ownable).to.not.be.undefined();
expect(doc.Ownable.constructors).to.not.be.undefined();
expect(doc.Ownable.methods).to.not.be.undefined();
const ownableConstructorCount = 1;
const ownableMethodCount = 2;
const ownableEventCount = 1;
expect(doc.Ownable.constructors.length).to.equal(ownableConstructorCount);
expect(doc.Ownable.methods.length).to.equal(ownableMethodCount);
if (_.isUndefined(doc.Ownable.events)) {
throw new Error('events should never be undefined');
}
expect(doc.Ownable.events.length).to.equal(ownableEventCount);
function verifyTokenTransferProxyAndDepsABIsAreDocumented(doc: DocAgnosticFormat, contractName: string): void {
verifyTokenTransferProxyABIIsDocumented(doc, contractName);
expect(doc.ERC20).to.not.be.undefined();
expect(doc.ERC20.constructors).to.not.be.undefined();