From 28f1b3f681476ea99872376afe02d8d69ece65ef Mon Sep 17 00:00:00 2001 From: Alexey Gurianov Date: Fri, 5 Jun 2015 18:40:26 +0400 Subject: [PATCH] initial mocha tests --- package.json | 15 +++++++---- test/.jshintrc | 18 +++++++++++++ test/mocha.opts | 4 +++ test/techs/ng-annotate.test.js | 29 +++++++++++++++++++++ test/techs/ng-templates.test.js | 45 +++++++++++++++++++++++++++++++++ 5 files changed, 106 insertions(+), 5 deletions(-) create mode 100644 test/.jshintrc create mode 100644 test/mocha.opts create mode 100644 test/techs/ng-annotate.test.js create mode 100644 test/techs/ng-templates.test.js diff --git a/package.json b/package.json index ad5db95..b5076e6 100644 --- a/package.json +++ b/package.json @@ -21,15 +21,20 @@ "bem" ], "devDependencies": { - "enb": "^0.15.0", - "jscs": "^1.13.1", - "jshint": "^2.8.0" + "enb": "0.15.0", + "jscs": "1.13.1", + "jshint": "2.8.0", + "mocha": "2.2.5", + "mock-enb": "0.0.1", + "mock-fs": "2.7.1", + "must": "0.12.0" }, "dependencies": { "ng-annotate": "^1.0.0" }, "scripts": { - "test": "npm run lint", - "lint": "jshint . && jscs -c .jscs.js ." + "test": "npm run lint && npm run unit", + "lint": "jshint . && jscs -c .jscs.js .", + "unit": "mocha -R spec" } } diff --git a/test/.jshintrc b/test/.jshintrc new file mode 100644 index 0000000..0cb9567 --- /dev/null +++ b/test/.jshintrc @@ -0,0 +1,18 @@ +{ + "bitwise": true, + "eqeqeq": true, + "forin": true, + "freeze": true, + "immed": true, + "latedef": "nofunc", + "noarg": true, + "noempty": true, + "nonbsp": true, + "nonew": true, + "undef": true, + "unused": true, + "node": true, + "mocha": true, + "expr": true, + "sub": true +} diff --git a/test/mocha.opts b/test/mocha.opts new file mode 100644 index 0000000..b2e017d --- /dev/null +++ b/test/mocha.opts @@ -0,0 +1,4 @@ +test/**/*.test.js +--ui bdd +--reporter dot +--require must diff --git a/test/techs/ng-annotate.test.js b/test/techs/ng-annotate.test.js new file mode 100644 index 0000000..e8f517e --- /dev/null +++ b/test/techs/ng-annotate.test.js @@ -0,0 +1,29 @@ +var mock = require('mock-fs'), + MockNode = require('mock-enb/lib/mock-node'), + ngAnnotate = require('../../techs/ng-annotate'); + +describe('ng-annotate', function () { + var bundle; + + afterEach(function () { + mock.restore(); + }); + + it('must apply ng-annotate module', function () { + mock({ + blocks: {}, + bundle: { + 'bundle.pre.js': 'angular.module("MyMod").controller("MyCtrl", function(dep1, dep2) {});' + } + }); + + bundle = new MockNode('bundle'); + + var reference = 'angular.module("MyMod").controller("MyCtrl", ["dep1", "dep2", function(dep1, dep2) {}]);'; + + return bundle.runTechAndGetContent(ngAnnotate, { source: 'bundle.pre.js' }) + .spread(function (content) { + content.toString().must.be(reference); + }); + }); +}); diff --git a/test/techs/ng-templates.test.js b/test/techs/ng-templates.test.js new file mode 100644 index 0000000..08b52c9 --- /dev/null +++ b/test/techs/ng-templates.test.js @@ -0,0 +1,45 @@ +var EOL = require('os').EOL, + mock = require('mock-fs'), + FileList = require('enb/lib/file-list'), + MockNode = require('mock-enb/lib/mock-node'), + ngTemplates = require('../../techs/ng-templates'); + +describe('ng-templates', function () { + var bundle, + fileList; + + afterEach(function () { + mock.restore(); + }); + + it('must wrap file content with script tag and use filename as id', function () { + mock({ + blocks: { + 'block0.tmpl.html': 'Hello0', + 'block1.tmpl.html': 'Hello1' + }, + bundle: {} + }); + + bundle = new MockNode('bundle'); + fileList = new FileList(); + + fileList.loadFromDirSync('blocks'); + + bundle.provideTechData('?.files', fileList); + + var reference = [ + '', + '' + ].join(EOL); + + return bundle.runTechAndGetContent(ngTemplates) + .spread(function (content) { + content.toString().must.be(reference); + }); + }); +});