From bbc23e2ced42b6780e8c31b637c11d8b3c5f1822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Ma=C5=82ecki?= Date: Fri, 9 Dec 2011 10:16:49 +0100 Subject: [PATCH] [test] DRY tests a bit Add macro for creating a worker. --- test/helpers/macros.js | 21 ++++++++++++++- test/worker-test.js | 58 +++++++++++++++++------------------------- 2 files changed, 43 insertions(+), 36 deletions(-) diff --git a/test/helpers/macros.js b/test/helpers/macros.js index 616e8e9d..8ce13651 100644 --- a/test/helpers/macros.js +++ b/test/helpers/macros.js @@ -9,7 +9,9 @@ var assert = require('assert'), path = require('path'), spawn = require('child_process').spawn, - forever = require('../../lib/forever'); + nssocket = require('nssocket'), + forever = require('../../lib/forever'), + Worker = require('../../lib/forever/worker').Worker; var macros = exports; @@ -73,3 +75,20 @@ macros.assertList = function (list) { assert.lengthOf(list, 1); }; +macros.assertWorkerConnected = function (workerOptions, batch) { + return { + topic: function () { + var self = this, + reader = new nssocket.NsSocket(), + worker = new Worker(workerOptions); + + worker.start(function (err, sock) { + reader.connect(sock, function () { + self.callback(null, reader, worker, workerOptions); + }); + }); + }, + 'worker should connect': batch + }; +}; + diff --git a/test/worker-test.js b/test/worker-test.js index 29e1ad27..0f517898 100644 --- a/test/worker-test.js +++ b/test/worker-test.js @@ -2,51 +2,39 @@ var path = require('path'), assert = require('assert'), vows = require('vows'), nssocket = require('nssocket'), - MonitorMock = require('./helpers/mocks/monitor').MonitorMock, - Worker = require('../lib/forever/worker').Worker; + macros = require('./helpers/macros'), + MonitorMock = require('./helpers/mocks/monitor').MonitorMock; var SOCKET_PATH = path.join(__dirname, 'fixtures'); vows.describe('forever/worker').addBatch({ 'When using forever worker': { - 'and starting it and pinging it': { - topic: function () { - var self = this, - monitor = new MonitorMock(); - - var worker = new Worker({ sockPath: SOCKET_PATH, monitor: monitor }), - reader = new nssocket.NsSocket(); + 'and starting it and pinging it': macros.assertWorkerConnected({ + monitor: new MonitorMock(), + sockPath: SOCKET_PATH + }, { + 'and respond to pings': { + topic: function (reader) { + reader.send(['ping']); + reader.data(['pong'], this.callback); + }, + 'with `pong`': function () {} + }, + 'and when queried for data': { + topic: function (reader, _, options) { + var self = this; - worker.start(function (err, sock) { - reader.connect(sock, function () { - self.callback(null, reader, worker, monitor); + reader.send(['data']); + reader.data(['data'], function (data) { + self.callback(null, { data: data, monitor: options.monitor }); }); - }); - }, - 'it should connect': { - 'and respond to pings': { - topic: function (reader) { - reader.send(['ping']); - reader.data(['pong'], this.callback); - }, - 'with `pong`': function () {} }, - 'and when queried for data': { - topic: function (reader, _, monitor) { - var self = this; - - reader.send(['data']); - reader.data(['data'], function (data) { - self.callback(null, { data: data, monitor: monitor }); - }); - }, - 'it should respond with data': function (obj) { - assert.isObject(obj.data); - assert.deepEqual(obj.data, obj.data); - } + 'it should respond with data': function (obj) { + assert.isObject(obj.data); + assert.deepEqual(obj.data, obj.monitor.data); } } - } + }) } }).export(module);