###Boilerplate for Global Day of Coderetreat
This project represents a minimal boilerplate code to start a Coderetreat project using Node.js, Mocha, Expect.js, Sinon.js with Grunt task automation.
####Prerequisities
####Installation
Clone the project, then run npm install
.
####Grunt tasks
We have the following tasks:
- jshint to lint .js files
- mochacli to run tests
When developing, run:
-
grunt watch
results in running grunt tasks automatically when a file is changed in the watched directory. -
grunt test:dev
to lint your code and run your tests. The task stops if there's any failing test. The same happens if you rungrunt
without any arguments. -
grunt test:all
to lint your code and run the test suite with all the tests, no matter if there's a failing one.
####Sample project
You can check the boilerplate by running grunt
in the project folder. There is a sample test in the test
directory, that tests a simple sum()
function:
// sample.module.spec.js
'use strict';
var expect = require('expect.js');
var sum = require('../src/sample.module.js');
describe('Sample test', function(){
it('should add arguments', function(){
expect(sum(1, 2, 3, 4, 5)).to.equal(1 + 2 + 3 + 4 + 5);
});
});
describe('Sample stub test', function(){
it('returns the return value from the original function', function () {
var callback = sinon.stub().returns(1 + 2 + 3 + 4 + 5);
var proxy = sum(callback);
expect(proxy()).to.equal(1 + 2 + 3 + 4 + 5);
});
});
And there is a sample production code in src
directory, that contains the tested function:
// sample.module.js
'use strict';
var sum = function(){
var args = Array.prototype.slice.call(arguments);
return args.reduce(function(previous, current){
return previous + current;
});
};
module.exports = sum;
####Cleaning up the boilerplate
You can clean up the boilerplate by running grunt clean
. It will delete all files and subfolders in src
and test
folders. There is a copy of the sample files in the sample
folder.
####Used packages
- Grunt.js for task automaton
grunt-contrib-jshint
for lintinggrunt-newer
for running Grunt tasks on newer files onlygrunt-contrib-watch
grunt-mocha-cli
(Mocha testing framework for Grunt)grunt-contrib-clean
(cleaning up the boilerplate)
- Expect.js as an assertion framework
- Sinon.js as a mocking tool
####EditorConfig
EditorConfig is used to maintain consistent coding styles. There is an .editorconfig
file in the project root directory, that defines the main styles.
You have EditorConfig plugins for lots of editors.
As opening a file, EditorConfig plugins look for a file named .editorconfig
in the directory of the opened file and in every parent directory. A search for .editorconfig
files will stop if the root filepath is reached or an .editorconfig
file with root=true
is found.