var testPackage = require('../../helpers/test-package'); var Dgeni = require('dgeni'); var path = require('path'); describe('renderExamples processor', () => { var injector, processor, exampleMap, regionParser, collectExamples, exampleMap; beforeEach(function() { const dgeni = new Dgeni([testPackage('examples-package', true)]); injector = dgeni.configureInjector(); exampleMap = injector.get('exampleMap'); processor = injector.get('renderExamples'); collectExamples = injector.get('collectExamples'); exampleMap = injector.get('exampleMap'); collectExamples.exampleFolders = ['examples']; exampleMap['examples'] = { 'test/url': { regions: { '': { renderedContent: 'whole file' }, 'region-1': { renderedContent: 'region 1 contents' } } } }; }); it('should run before the correct processor', () => { expect(processor.$runBefore).toEqual(['writing-files']) }); it('should run after the correct processor', () => { expect(processor.$runAfter).toEqual(['docs-rendered']); }); ['code-example', 'code-pane'].forEach(CODE_TAG => describe(CODE_TAG, () => { it(`should ignore a <${CODE_TAG}> tags with no path attribute`, () => { const docs = [ { renderedContent: `Some text\n<${CODE_TAG}>Some code\n<${CODE_TAG} class="anti-pattern" title="Bad Code">do not do this` } ]; processor.$process(docs); expect(docs[0].renderedContent).toEqual(`Some text\n<${CODE_TAG}>Some code\n<${CODE_TAG} class="anti-pattern" title="Bad Code">do not do this`); }); it(`should replace the content of the <${CODE_TAG}> tag with the whole contents from an example file if a path is provided`, () => { const docs = [ { renderedContent: `<${CODE_TAG} path="test/url">Some code`} ]; processor.$process(docs); expect(docs[0].renderedContent).toEqual(`<${CODE_TAG}>\nwhole file\n`); }); it(`should replace all instances of <${CODE_TAG}> tags`, () => { const docs = [ { renderedContent: `<${CODE_TAG} path="test/url">Some code<${CODE_TAG} path="test/url" region="region-1">Other code`} ]; processor.$process(docs); expect(docs[0].renderedContent).toEqual(`<${CODE_TAG}>\nwhole file\n<${CODE_TAG}>\nregion 1 contents\n`); }); it('should contain the region contents from the example file if a region is specified', () => { const docs = [ { renderedContent: `<${CODE_TAG} path="test/url" region="region-1">Some code` } ]; processor.$process(docs); expect(docs[0].renderedContent).toEqual(`<${CODE_TAG}>\nregion 1 contents\n`); }); it(`should replace the content of the <${CODE_TAG}> tag with the whole contents from an example file if the region is empty`, () => { const docs = [ { renderedContent: `<${CODE_TAG} path="test/url" region="">Some code` } ]; processor.$process(docs); expect(docs[0].renderedContent).toEqual(`<${CODE_TAG}>\nwhole file\n`); }); it('should remove the path and region attributes but leave the other attributes alone', () => { const docs = [ { renderedContent: `<${CODE_TAG} class="special" path="test/url" linenums="15" region="region-1" id="some-id">Some code` } ]; processor.$process(docs); expect(docs[0].renderedContent).toEqual(`<${CODE_TAG} class="special" linenums="15" id="some-id">\nregion 1 contents\n`); }); it('should cope with spaces and double quotes inside attribute values', () => { const docs = [ { renderedContent: `<${CODE_TAG} title='a "quoted" value' path="test/url">`} ]; processor.$process(docs); expect(docs[0].renderedContent).toEqual(`<${CODE_TAG} title="a "quoted" value">\nwhole file\n`); }); }) ); });