From 70707510df698168089318c8acfa34ba51d0e42d Mon Sep 17 00:00:00 2001 From: Vincent Jousse Date: Tue, 22 Feb 2011 16:32:10 +0100 Subject: [PATCH] Finished simple Client/Server mapper --- lib/client-server-mapper.js | 19 +++++--- test/client-server-mapper_test.js | 75 ++++++++++++++++++++++++++++--- 2 files changed, 82 insertions(+), 12 deletions(-) diff --git a/lib/client-server-mapper.js b/lib/client-server-mapper.js index 8cd69a0..1aeb1b1 100644 --- a/lib/client-server-mapper.js +++ b/lib/client-server-mapper.js @@ -61,6 +61,17 @@ ClientServerMapper.prototype.map = function(client, server) { throw new Error("Your server should have an uuid"); } + if(self.clients[server.uuid] != null) { + throw new Error("A client already exists for this server"); + } + + if(self.servers[client.uuid] != null) { + throw new Error("A server already exists for this client"); + } + + self.clients[server.uuid] = client; + self.servers[client.uuid] = server; + return this; } @@ -74,9 +85,7 @@ ClientServerMapper.prototype.map = function(client, server) { ClientServerMapper.prototype.getClientForServer = function(server) { var self = this; - - return this; - + return self.clients[server.uuid]; } @@ -88,9 +97,7 @@ ClientServerMapper.prototype.getClientForServer = function(server) { ClientServerMapper.prototype.getServerForClient = function(client) { var self = this; - - return this; - + return self.servers[client.uuid]; } diff --git a/test/client-server-mapper_test.js b/test/client-server-mapper_test.js index 5b69e1b..b738047 100644 --- a/test/client-server-mapper_test.js +++ b/test/client-server-mapper_test.js @@ -8,20 +8,50 @@ var ClientServerMapper = require( 'client-server-mapper' ); /* ------------------------------ Fixtures ------------------------------ */ -var client = { - , name: 'some client name' +var clientId = 1; +var serverId = 1; + +function getClientWithoutUuid() { + + var client = { + name: 'some client name' , description: 'some client description' -}; + }; + + return client; + +} -var server = { - , name: 'some server name' +function getClient() { + var client = getClientWithoutUuid(); + client.uuid = clientId++; + + return client; +} + +function getServerWithoutUuid() { + var server = { + name: 'some server name' , description: 'some server description' -}; + }; + + return server; +} + +function getServer() { + var server = getServerWithoutUuid(); + server.uuid = serverId++; + + return server; +} exports['uuid exception'] = function(test) { var mapper = new ClientServerMapper(); + client = getClientWithoutUuid(); + server = getServerWithoutUuid(); + test.throws( function() { mapper.map(client, server); @@ -32,6 +62,39 @@ exports['uuid exception'] = function(test) { test.finish(); }; + +exports['map'] = function(test) { + var mapper = new ClientServerMapper(); + + var client = getClient(); + var server = getServer(); + + test.doesNotThrow( + function() { + mapper.map(client, server); + }, + '/uuid/' + ); + + clientMapped = mapper.getClientForServer(server); + test.equal(clientMapped.uuid,client.uuid); + + serverMapped = mapper.getServerForClient(client); + test.equal(serverMapped.uuid,server.uuid); + + var newClient = getClient(); + + test.throws( + function() { + mapper.map(newClient, server); + }, + '/exists/' + ); + + + test.finish(); +}; + /* ------------------------------ Run ------------------------------ */ if ( module == require.main ) require( 'async_testing' ).run( __filename, process.ARGV )