UNPKG

3.78 kBJavaScriptView Raw
1
2const _ = require('underscore');
3const path = require('path');
4const assert = require('assert');
5const utils = require('../lib/utils');
6const parser = require('../lib/docparser');
7const builder = require('../lib/builder');
8const Firedoc = require('../lib/firedoc').Firedoc;
9const Handlebars = require('handlebars');
10
11describe('filedoc.helpers', function () {
12
13 var src = path.join(__dirname, './targets/class');
14 var doc = new Firedoc({
15 'paths': [src],
16 'linkNatives': false
17 });
18 var ast, ctx;
19 var callOptions = {
20 fn: function () {
21 return '';
22 }
23 };
24
25 before(function (next) {
26 doc.walk(next);
27 });
28 before(function (next) {
29 ast = parser.parse('js', doc.filemap, doc.dirmap);
30 ctx = builder.compile(ast, doc.options, next);
31 });
32
33 describe('.renderFileTree', function () {
34 it('should render 1-level file tree', function () {
35 var filetree = utils.buildFileTree(_.values(ast.files));
36 var html = ctx.helpers.renderFileTree.call(ctx, filetree);
37 assert.ok(html);
38 });
39 });
40
41 describe('.crossLink', function () {
42 it('shoud return empty', function () {
43 var ret = ctx.helpers.crossLink.call(ctx, null, callOptions);
44 assert.equal(ret, 'unknown');
45 });
46 it('should crossLink with 2 links', function () {
47 var ret = ctx.helpers.crossLink.call(ctx, 'Number|Object');
48 assert.equal(ret, 'Number | Object');
49 });
50 it('should crossLink with 1 link', function () {
51 var ret = ctx.helpers.crossLink.call(ctx, 'Array', callOptions);
52 assert.equal(ret, 'Array');
53 });
54 it('should link natives', function () {
55 ctx.options.linkNatives = true;
56 var ret = ctx.helpers.crossLink.call(ctx, 'Array', callOptions);
57 assert.equal(ret, '<a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array" class="crosslink external" target="_blank">Array</a>');
58 });
59 it('should crosslink a dot class', function () {
60 var ret = ctx.helpers.crossLink.call(ctx, 'Clazz.Example', callOptions);
61 assert.equal(ret, '<a href="../classes/ClazzExample.html" class="crosslink">Clazz.Example</a>');
62 });
63 it('should crossLink class/name', function () {
64 var ret = ctx.helpers.crossLink.call(ctx, 'ClazzExample/method1', callOptions);
65 assert.equal(ret, '<a href="../classes/ClazzExample.html#method_method1" class="crosslink">method1</a>');
66 });
67 it('should crossLink property', function () {
68 var ret = ctx.helpers.crossLink.call(ctx, 'ClazzExample/name:property', callOptions);
69 assert.equal(ret, '<a href="../classes/ClazzExample.html#property_name" class="crosslink">name</a>');
70 });
71 it('should crossLink attribute', function () {
72 var ret = ctx.helpers.crossLink.call(ctx, 'SecondClazz/attr1:attr', callOptions);
73 assert.equal(ret, '<a href="../classes/SecondClazz.html#attr_attr1" class="crosslink">attr1</a>');
74 });
75 it('should crossLink event', function () {
76 var ret = ctx.helpers.crossLink.call(ctx, 'ClazzExample/evt1:event', callOptions);
77 assert.equal(ret, '<a href="../classes/ClazzExample.html#event_evt1" class="crosslink">evt1</a>');
78 });
79 it('should crossLink webbase', function () {
80 // TODO(Yorkie)
81 });
82 });
83
84 describe('.crossLinkRaw', function () {
85 before(function () {
86 ctx.options.linkNatives = true;
87 });
88 it('should return 2 links', function () {
89 var ret = ctx.helpers.crossLinkRaw.call(ctx, 'Number|Object', callOptions);
90 assert.equal(ret, 'https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number | https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object');
91 });
92 });
93
94});
\No newline at end of file