UNPKG

fics

Version:

A promise-based interface for the Free Internet Chess Server

92 lines (63 loc) 2.15 kB
var net = require("net"); var path = require("path"); var EventEmitter = require("events").EventEmitter; var Readable = require("stream").Readable; var _ = require("underscore"); var sinon = require("sinon"); var FICSClient = require(path.join(__filename, "..", "..", "..")); var MockSocket = require("./mock_socket"); exports.testClientCanBeCreated = function(test) { var mockConnection = sinon.mock(net); mockConnection.expects("connect") .withExactArgs({ host: "freechess.org", port: 5000 }) .returns({ on: function() { } }); new FICSClient(); mockConnection.verify(); mockConnection.restore(); test.done(); }; exports.testClientIsAnEmitter = function(test) { var mockSocket = new MockSocket(test); var fics = new FICSClient(); test.ok(fics instanceof EventEmitter); fics.on("foo", function() { mockSocket.close(); }); // force private socket to emit an event fics.socket.emit("foo"); }; exports.testGetStream = function(test) { var mockSocket = new MockSocket(test); mockSocket.registerFixture("login_screen"); var fics = new FICSClient(); var stream = fics.getStream(); test.ok(stream instanceof Readable); stream.on("data", function(data) { mockSocket.close(); }); mockSocket.run(); }; exports.testClose = function(test) { var mockStream = sinon.mock({ on: function() { }, removeAllListeners: function() { }, end: function() { } }); mockStream.expects("removeAllListeners").once().returns(mockStream.object); mockStream.expects("end").once() var mockConnection = sinon.mock(net); mockConnection.expects("connect").returns(mockStream.object); (new FICSClient()).end(); mockStream.verify(); mockConnection.restore(); test.done(); }; exports.testLinesFunction = function(test) { var client = new FICSClient(); var socket = client.socket; var listenerCount = 25; var deffereds = _.map(Array(listenerCount), function(n) { return _.tap(client.lines(_.noop), function() { test.equal(1, socket.listeners("data").length); }); }); _.invoke(deffereds, "resolve"); client.end(); test.done(); };