| 'use strict'; |
| var Suite = require('../suite'); |
| var Test = require('../test'); |
| |
| /** |
| * Exports-style (as Node.js module) interface: |
| * |
| * exports.Array = { |
| * '#indexOf()': { |
| * 'should return -1 when the value is not present': function() { |
| * |
| * }, |
| * |
| * 'should return the correct index when the value is present': function() { |
| * |
| * } |
| * } |
| * }; |
| * |
| * @param {Suite} suite Root suite. |
| */ |
| module.exports = function(suite) { |
| var suites = [suite]; |
| |
| suite.on(Suite.constants.EVENT_FILE_REQUIRE, visit); |
| |
| function visit(obj, file) { |
| var suite; |
| for (var key in obj) { |
| if (typeof obj[key] === 'function') { |
| var fn = obj[key]; |
| switch (key) { |
| case 'before': |
| suites[0].beforeAll(fn); |
| break; |
| case 'after': |
| suites[0].afterAll(fn); |
| break; |
| case 'beforeEach': |
| suites[0].beforeEach(fn); |
| break; |
| case 'afterEach': |
| suites[0].afterEach(fn); |
| break; |
| default: |
| var test = new Test(key, fn); |
| test.file = file; |
| suites[0].addTest(test); |
| } |
| } else { |
| suite = Suite.create(suites[0], key); |
| suites.unshift(suite); |
| visit(obj[key], file); |
| suites.shift(); |
| } |
| } |
| } |
| }; |
| |
| module.exports.description = 'Node.js module ("exports") style'; |