From 8c7c3ddf055d336b4fc0e798cb4614ee177dfbbd Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Sun, 25 Jan 2015 20:08:10 -0500 Subject: [PATCH] add basic tests --- package.json | 5 +++- test/fixture/test1.js | 42 +++++++++++++++++++++++++++++ test/index.js | 63 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 test/fixture/test1.js create mode 100644 test/index.js diff --git a/package.json b/package.json index 5f4f63c..e8fb5f7 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Generate JS documentation via AST parsing", "main": "lib/index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "node_modules/.bin/mocha ./test" }, "repository": { "type": "git", @@ -18,5 +18,8 @@ "homepage": "https://github.com/brettlangdon/docast", "dependencies": { "esprima": "^1.2.3" + }, + "devDependencies": { + "mocha": "^2.1.0" } } diff --git a/test/fixture/test1.js b/test/fixture/test1.js new file mode 100644 index 0000000..fe3518b --- /dev/null +++ b/test/fixture/test1.js @@ -0,0 +1,42 @@ +/* + * wrapper + */ +(function(global){ + /* + * func1 + */ + function func1(arg1, arg2){ + throw new Exception('hello'); + return 'string'; + } + + /* + * func2 + */ + var func2 = function(arg1, arg2){ + // return 5 + return 5; + } + + /* + * class1 + */ + function class1(options){ + } + /* + * class1.method1 + */ + class1.prototype.method1 = function(arg1){ + }; + + /* + * class2 + */ + var class2 = function(options){ + }; + /* + * class2.method1 + */ + class2.prototype.method1 = function(arg1){ + }; +})(this); diff --git a/test/index.js b/test/index.js new file mode 100644 index 0000000..f89ebe6 --- /dev/null +++ b/test/index.js @@ -0,0 +1,63 @@ +var docast = require('../'); +var assert = require('assert'); + +describe('docast', function(){ + describe('#parse(filename)', function(){ + it('should properly parse ./fixture/test1.js', function(){ + var comments = docast.parse(__dirname + '/fixture/test1.js'); + + assert.equal(comments.length, 7); + + var wrapper = comments[0]; + assert.ok(~wrapper.doc.indexOf('wrapper')); + assert.equal(wrapper.data.name, null); + assert.deepEqual(wrapper.data.params, ['global']); + assert.deepEqual(wrapper.data.returns, []); + assert.deepEqual(wrapper.data.raises, []); + + var func1 = comments[1]; + assert.ok(~func1.doc.indexOf('func1')); + assert.equal(func1.data.name, 'func1'); + assert.deepEqual(func1.data.params, ['arg1', 'arg2']); + assert.deepEqual(func1.data.returns, ['string']); + assert.deepEqual(func1.data.raises, ['Exception']); + + var func2 = comments[2]; + assert.ok(~func2.doc.indexOf('func2')); + assert.equal(func2.data.name, 'func2'); + assert.deepEqual(func2.data.params, ['arg1', 'arg2']); + assert.deepEqual(func2.data.returns, [5]); + assert.deepEqual(func2.data.raises, []); + + var class1 = comments[3]; + assert.ok(~class1.doc.indexOf('class1')); + assert.equal(class1.data.name, 'class1'); + assert.deepEqual(class1.data.params, ['options']); + assert.deepEqual(class1.data.returns, []); + assert.deepEqual(class1.data.raises, []); + + var class1_method1 = comments[4]; + assert.ok(~class1_method1.doc.indexOf('class1.method1')); + assert.equal(class1_method1.data.name, 'method1'); + assert.equal(class1_method1.data.class, 'class1'); + assert.deepEqual(class1_method1.data.params, ['arg1']); + assert.deepEqual(class1_method1.data.returns, []); + assert.deepEqual(class1_method1.data.raises, []); + + var class2 = comments[5]; + assert.ok(~class2.doc.indexOf('class2')); + assert.equal(class2.data.name, 'class2'); + assert.deepEqual(class2.data.params, ['options']); + assert.deepEqual(class2.data.returns, []); + assert.deepEqual(class2.data.raises, []); + + var class2_method1 = comments[6]; + assert.ok(~class2_method1.doc.indexOf('class2.method1')); + assert.equal(class2_method1.data.name, 'method1'); + assert.equal(class2_method1.data.class, 'class2'); + assert.deepEqual(class2_method1.data.params, ['arg1']); + assert.deepEqual(class2_method1.data.returns, []); + assert.deepEqual(class2_method1.data.raises, []); + }); + }); +});