YUKI Hiroshi
null+****@clear*****
Thu Jan 10 19:22:55 JST 2013
YUKI Hiroshi 2013-01-10 19:22:55 +0900 (Thu, 10 Jan 2013) New Revision: e280d72df060dbef1012e77b0100e5453e79d57e https://github.com/groonga/express-kotoumi/commit/e280d72df060dbef1012e77b0100e5453e79d57e Log: Separate utility methods and custom assertions from the test Added files: test/test-utils.js Modified files: test/backend-adaptor.test.js Modified: test/backend-adaptor.test.js (+18 -116) =================================================================== --- test/backend-adaptor.test.js 2013-01-10 19:11:16 +0900 (4384c2a) +++ test/backend-adaptor.test.js 2013-01-10 19:22:55 +0900 (90b193b) @@ -1,109 +1,11 @@ var assert = require('chai').assert; var nodemock = require('nodemock'); -var Connection = require('../lib/backend-adaptor').Connection; - -function createMockedSender() { - var sender = { - emit: function(eventName, message) { - this.messages.push({ eventName: eventName, message: message }); - }, - assertSent: function(eventName, message) { - var firstMessage = this.messages.shift(); - var expectedMessage = { eventName: eventName, message: message }; - assert.deepEqual(firstMessage, expectedMessage); - }, - messages: [], - }; - return sender; -} - -function createMockedReceiver() { - var mockedSockets; - var mockedReceiverInternal = nodemock; - var connactionCallbackController = {}; - var messageCallbackController = {}; - var receiver = { - // mocking receiver - sockets: - (mockedSockets = nodemock.mock('on') - .takes('connection', function() {}) - .ctrl(1, connactionCallbackController)), - 'set': function(key, value) {}, - - // extra features as a mocked object - triggerConnect: function(tag) { - mockedSockets.assertThrows(); - var mockedSocket = nodemock.mock('on') - .takes(tag + '.message', function() {}) - .ctrl(1, messageCallbackController); - connactionCallbackController.trigger(mockedSocket); - mockedSocket.assertThrows(); - }, - emitMessage: function(message) { // simulate message from backend - messageCallbackController.trigger(message); - } - }; - return receiver; -} - -function createMockedMessageCallback() { - var mockedCallback = nodemock; - var callback = function(message) { - mockedCallback.receive(message); - }; - callback.takes = function(message) { - callback.assert = function() { - mockedCallback.assertThrows(); - }; - mockedCallback = mockedCallback - .mock('receive') - .takes(message); - }; - callback.mock = mockedCallback; - return callback; -} +var utils = require('./test-utils'); +var TypeOf = utils.TypeOf; +var InstanceOf = utils.InstanceOf; -function TypeOf(typeString) { - if (!(this instanceof TypeOf)) - return new TypeOf(typeString); - - this.typeString = typeString; - if (typeString == 'date') { - return new InstanceOf(Date); - } -} - -function InstanceOf(constructor) { - if (!(this instanceof InstanceOf)) - return new InstanceOf(constructor); - - this.constructorFunction = constructor; -} - -function assertEnvelopeEqual(actual, expected) { - var vs = JSON.stringify(actual) + ' vs ' + JSON.stringify(expected); - Object.keys(expected).forEach(function(key) { - var actualValue = actual[key]; - var expectedValue = expected[key]; - if (expectedValue instanceof InstanceOf) { - if (typeof actualValue == 'string') { - // Try fo parse the value and create new instance. - // If this process is failed, it can be an invalid value. - actualValue = new expectedValue.constructorFunction(actualValue); - } - assert.instanceOf(actualValue, - expectedValue.constructorFunction, - key + ' / ' + vs); - } else if (expectedValue instanceof TypeOf) { - assert.typeOf(typeof actualValue, - expectedValue.typeString, - key + ' / ' + vs); - } else { - assert.deepEqual(actualValue, expectedValue, key + ' / ' + vs); - } - }); -} +var Connection = require('../lib/backend-adaptor').Connection; suite('Connection', function() { var connection; @@ -114,8 +16,8 @@ suite('Connection', function() { connection = new Connection({ tag: 'test', listenPort: 3333, - sender: sender = createMockedSender(), - receiver: receiver = createMockedReceiver() + sender: sender = utils.createMockedSender(), + receiver: receiver = utils.createMockedReceiver() }); receiver.triggerConnect('test'); }); @@ -128,16 +30,16 @@ suite('Connection', function() { test('sending message without response (volatile message)', function() { var message = connection.emitMessage({ command: 'foobar' }); - assertEnvelopeEqual(message, - { id: TypeOf('string'), - date: InstanceOf(Date), - statusCode: 200, - body: { command: 'foobar' } }); + assert.envelopeEqual(message, + { id: TypeOf('string'), + date: InstanceOf(Date), + statusCode: 200, + body: { command: 'foobar' } }); sender.assertSent('message', message); }); test('receiving message from the backend', function() { - var callback = createMockedMessageCallback(); + var callback = utils.createMockedMessageCallback(); connection.on('message', callback); var now = new Date(); @@ -163,13 +65,13 @@ suite('Connection', function() { }); test('sending message with one response', function() { - var callback = createMockedMessageCallback(); + var callback = utils.createMockedMessageCallback(); var message = connection.emitMessage({ command: 'foobar' }, callback); - assertEnvelopeEqual(message, - { id: TypeOf('string'), - date: InstanceOf(Date), - statusCode: 200, - body: { command: 'foobar' } }); + assert.envelopeEqual(message, + { id: TypeOf('string'), + date: InstanceOf(Date), + statusCode: 200, + body: { command: 'foobar' } }); sender.assertSent('message', message); var now = new Date(); Added: test/test-utils.js (+111 -0) 100644 =================================================================== --- /dev/null +++ test/test-utils.js 2013-01-10 19:22:55 +0900 (294f534) @@ -0,0 +1,111 @@ +var assert = require('chai').assert; +var nodemock = require('nodemock'); + +function createMockedSender() { + var sender = { + emit: function(eventName, message) { + this.messages.push({ eventName: eventName, message: message }); + }, + assertSent: function(eventName, message) { + var firstMessage = this.messages.shift(); + var expectedMessage = { eventName: eventName, message: message }; + assert.deepEqual(firstMessage, expectedMessage); + }, + messages: [], + }; + return sender; +} +exports.createMockedSender = createMockedSender; + +function createMockedReceiver() { + var mockedSockets; + var mockedReceiverInternal = nodemock; + var connactionCallbackController = {}; + var messageCallbackController = {}; + var receiver = { + // mocking receiver + sockets: + (mockedSockets = nodemock.mock('on') + .takes('connection', function() {}) + .ctrl(1, connactionCallbackController)), + 'set': function(key, value) {}, + + // extra features as a mocked object + triggerConnect: function(tag) { + mockedSockets.assertThrows(); + var mockedSocket = nodemock.mock('on') + .takes(tag + '.message', function() {}) + .ctrl(1, messageCallbackController); + connactionCallbackController.trigger(mockedSocket); + mockedSocket.assertThrows(); + }, + emitMessage: function(message) { // simulate message from backend + messageCallbackController.trigger(message); + } + }; + return receiver; +} +exports.createMockedReceiver = createMockedReceiver; + +function createMockedMessageCallback() { + var mockedCallback = nodemock; + var callback = function(message) { + mockedCallback.receive(message); + }; + callback.takes = function(message) { + callback.assert = function() { + mockedCallback.assertThrows(); + }; + mockedCallback = mockedCallback + .mock('receive') + .takes(message); + }; + callback.mock = mockedCallback; + return callback; +} +exports.createMockedMessageCallback = createMockedMessageCallback; + + +function TypeOf(typeString) { + if (!(this instanceof TypeOf)) + return new TypeOf(typeString); + + this.typeString = typeString; + if (typeString == 'date') { + return new InstanceOf(Date); + } +} +exports.TypeOf = TypeOf; + +function InstanceOf(constructor) { + if (!(this instanceof InstanceOf)) + return new InstanceOf(constructor); + + this.constructorFunction = constructor; +} +exports.InstanceOf = InstanceOf; + +function assertEnvelopeEqual(actual, expected) { + var vs = JSON.stringify(actual) + ' vs ' + JSON.stringify(expected); + Object.keys(expected).forEach(function(key) { + var actualValue = actual[key]; + var expectedValue = expected[key]; + if (expectedValue instanceof InstanceOf) { + if (typeof actualValue == 'string') { + // Try fo parse the value and create new instance. + // If this process is failed, it can be an invalid value. + actualValue = new expectedValue.constructorFunction(actualValue); + } + assert.instanceOf(actualValue, + expectedValue.constructorFunction, + key + ' / ' + vs); + } else if (expectedValue instanceof TypeOf) { + assert.typeOf(typeof actualValue, + expectedValue.typeString, + key + ' / ' + vs); + } else { + assert.deepEqual(actualValue, expectedValue, key + ' / ' + vs); + } + }); +} +assert.envelopeEqual = assertEnvelopeEqual; -------------- next part -------------- HTML����������������������������...Télécharger