UNPKG

1.37 kBJavaScriptView Raw
1'use strict';
2
3/**
4 * Module dependencies.
5 */
6
7var Suite = require('../suite');
8var Test = require('../test');
9
10/**
11 * Exports-style (as Node.js module) interface:
12 *
13 * exports.Array = {
14 * '#indexOf()': {
15 * 'should return -1 when the value is not present': function() {
16 *
17 * },
18 *
19 * 'should return the correct index when the value is present': function() {
20 *
21 * }
22 * }
23 * };
24 *
25 * @param {Suite} suite Root suite.
26 */
27module.exports = function (suite) {
28 var suites = [suite];
29
30 suite.on('require', visit);
31
32 function visit (obj, file) {
33 var suite;
34 for (var key in obj) {
35 if (typeof obj[key] === 'function') {
36 var fn = obj[key];
37 switch (key) {
38 case 'before':
39 suites[0].beforeAll(fn);
40 break;
41 case 'after':
42 suites[0].afterAll(fn);
43 break;
44 case 'beforeEach':
45 suites[0].beforeEach(fn);
46 break;
47 case 'afterEach':
48 suites[0].afterEach(fn);
49 break;
50 default:
51 var test = new Test(key, fn);
52 test.file = file;
53 suites[0].addTest(test);
54 }
55 } else {
56 suite = Suite.create(suites[0], key);
57 suites.unshift(suite);
58 visit(obj[key], file);
59 suites.shift();
60 }
61 }
62 }
63};