'use strict'; /** * Functions common to more than one interface. * * @param {Suite[]} suites * @param {Context} context * @return {Object} An object containing common functions. */ module.exports = function(suites, context) { return { /** * This is only present if flag --delay is passed into Mocha. It triggers * root suite execution. * * @param {Suite} suite The root wuite. * @return {Function} A function which runs the root suite */ runWithSuite: function runWithSuite(suite) { return function run() { suite.run(); }; }, /** * Execute before running tests. * * @param {string} name * @param {Function} fn */ before: function(name, fn) { suites[0].beforeAll(name, fn); }, /** * Execute after running tests. * * @param {string} name * @param {Function} fn */ after: function(name, fn) { suites[0].afterAll(name, fn); }, /** * Execute before each test case. * * @param {string} name * @param {Function} fn */ beforeEach: function(name, fn) { suites[0].beforeEach(name, fn); }, /** * Execute after each test case. * * @param {string} name * @param {Function} fn */ afterEach: function(name, fn) { suites[0].afterEach(name, fn); }, test: { /** * Pending test case. * * @param {string} title */ skip: function(title) { context.test(title); }, /** * Number of retry attempts * * @param {string} n */ retries: function(n) { context.retries(n); } } }; };