- diff -r ab32e196c4fc jpoker/js/jquery.jpoker.js
- --- a/jpoker/js/jquery.jpoker.js Fri Dec 11 21:22:32 2009 +0100
- +++ b/jpoker/js/jquery.jpoker.js Mon Jan 18 21:11:19 2010 +0100
- -631,6 +631,7 @@
- TOURNEY_DETAILS: 'retrieving tourney details',
- TABLE_JOIN: 'joining table',
- TABLE_PICK: 'picking table',
- + TABLE_QUIT: 'quitting table',
- TOURNEY_REGISTER: 'updating tourney registration',
- PERSONAL_INFO: 'getting personal info',
- CREATE_ACCOUNT: 'creating account',
- -802,14 +803,14 @@
- }
- },
- - sendPacket: function(packet) {
- + sendPacket: function(packet, callback) {
- if(this.pendingLongPoll) {
- if(jpoker.verbose > 0) {
- jpoker.message('sendPacket PacketPokerLongPollReturn');
- }
- this.sendPacketAjax({ type: 'PacketPokerLongPollReturn' }, 'direct');
- }
- - this.sendPacketAjax(packet, 'queue');
- + this.sendPacketAjax(packet, 'queue', callback);
- if(packet.type == 'PacketPokerLongPoll') {
- this.pendingLongPoll = true;
- }
- -823,7 +824,7 @@
- this.queueIncoming(data);
- },
- - sendPacketAjax: function(packet, mode) {
- + sendPacketAjax: function(packet, mode, callback) {
- var $this = this;
- var json_data = JSON.stringify(packet);
- if(jpoker.verbose > 0) {
- -847,6 +848,9 @@
- if(packet_type != 'PacketPokerLongPollReturn') {
- $this.receivePacket(data);
- }
- + if (callback !== undefined) {
- + callback(data, status);
- + }
- },
- error: function(xhr, status, error) {
- if(status == 'timeout') {
- -1493,6 +1497,19 @@
- }
- },
- + tableQuit: function(game_id) {
- + if (this.loggedIn() === false) {
- + jpoker.dialog(_("User must be logged in"));
- + } else {
- + this.queueRunning(function(server) {
- + server.setState(server.TABLE_QUIT);
- + server.sendPacket({ type: 'PacketPokerTableQuit', game_id: game_id }, function() {
- + server.setState(server.RUNNING, 'PacketPokerTableQuit');
- + });
- + });
- + }
- + },
- +
- bankroll: function(currency_serial) {
- var key = 'X' + currency_serial;
- if(this.loggedIn() && 'money' in this.userInfo && key in this.userInfo.money) {
- -3379,13 +3396,11 @@
- var server = jpoker.getServer(url);
- var table = jpoker.getTable(url, game_id);
- if(server) {
- - server.sendPacket({ type: 'PacketPokerTableQuit', game_id: game_id });
- - server.setTimeout(function() {
- - server.queueRunning(function(server) {
- - table.handler(server, game_id, { type: 'PacketPokerTableDestroy',
- - game_id: game_id });
- - });
- - }, 1);
- + server.tableQuit(game_id);
- + server.queueRunning(function(server) {
- + table.handler(server, game_id, { type: 'PacketPokerTableDestroy',
- + game_id: game_id });
- + });
- }
- }).hover(function(){
- $(this).addClass('hover');
- -3764,7 +3779,7 @@
- var server = jpoker.getServer(table.url);
- server.tourneyRowClick(server, {name: '', game_id: table.tourney_serial});
- },
- - quit: function(table) {
- + quit: function(table, packet) {
- },
- display_done: function(element) {
- },
- diff -r ab32e196c4fc jpoker/js/test-jpoker.js
- --- a/jpoker/js/test-jpoker.js Fri Dec 11 21:22:32 2009 +0100
- +++ b/jpoker/js/test-jpoker.js Mon Jan 18 21:11:19 2010 +0100
- -2063,6 +2063,55 @@
- equals(server.callbacks[0][0], callback, 'tablePick callback still in place');
- });
- +
- +test("jpoker.server.tableQuit", function(){
- + expect(3);
- + stop();
- + var player_serial = 42;
- + var game_id = 100;
- +
- + var PokerServer = function() {};
- +
- + PokerServer.prototype = {
- + outgoing: '[]',
- +
- + handle: function(packet) { }
- + };
- +
- + ActiveXObject.prototype.server = new PokerServer();
- +
- + var server = jpoker.serverCreate({ url: 'url' });
- + server.serial = player_serial;
- + var sendPacket = server.sendPacket;
- + server.sendPacket = function(packet, callback) {
- + if (packet.type == 'PacketPokerTableQuit') {
- + equals(packet.game_id, game_id);
- + equals(server.state, server.TABLE_QUIT);
- + callback();
- + equals(server.state, server.RUNNING);
- + server.queueRunning(start_and_cleanup);
- + }
- + };
- + server.tableQuit(game_id);
- + });
- +
- +test("jpoker.server.tableQuit not logged", function(){
- + expect(1);
- + stop();
- +
- + var server = jpoker.serverCreate({ url: 'url' });
- +
- + server.serial = 0;
- +
- + var dialog = jpoker.dialog;
- + jpoker.dialog = function(message) {
- + equals(message.indexOf("must be logged in") >= 0, true, "should be logged");
- + jpoker.dialog = dialog;
- + start_and_cleanup();
- + };
- + server.tableQuit(100);
- + });
- +
- test("jpoker.server.setInterval", function(){
- expect(1);
- stop();
- -2544,6 +2593,26 @@
- equals(self.connected(), true, "connected()");
- });
- +test("jpoker.connection:sendPacket callback", function(){
- + expect(1);
- + stop();
- + var PokerServer = function() {};
- +
- + PokerServer.prototype = {
- + outgoing: '[]',
- +
- + handle: function(packet) { }
- + };
- +
- + ActiveXObject.prototype.server = new PokerServer();
- +
- + var self = new jpoker.connection();
- + self.sendPacket({ type: 'foo'}, function() {
- + ok(true, 'callback called');
- + start_and_cleanup();
- + });
- + });
- +
- test("jpoker.connection:dequeueIncoming clearTimeout", function(){
- expect(1);
- var self = new jpoker.connection();
- -5870,12 +5939,13 @@
- });
- test("jpoker.plugins.table: PacketPokerTableQuit", function(){
- - expect(6);
- -
- - var server = jpoker.serverCreate({ url: 'url' });
- - var place = $("#main");
- - var id = 'jpoker' + jpoker.serial;
- - var game_id = 100;
- + expect(7);
- +
- + var server = jpoker.serverCreate({ url: 'url' });
- + var place = $("#main");
- + var id = 'jpoker' + jpoker.serial;
- + var game_id = 100;
- + server.serial = 42;
- var table_packet = { id: game_id };
- server.tables[game_id] = new jpoker.table(server, table_packet);
- -5887,7 +5957,9 @@
- server.sendPacket = function(packet) {
- equals(packet.type, 'PacketPokerTableQuit');
- equals(packet.game_id, game_id);
- + equals(server.state, server.TABLE_QUIT);
- sent = true;
- + server.setState(server.RUNNING);
- };
- server.setTimeout = function(callback, delay) { callback(); };
- equals($("#game_window" + id).size(), 1, 'game element exists');
- -5977,7 +6049,6 @@
- place.jpoker('table', 'url', game_id);
- table.handler(server, game_id, { type: 'PacketPokerTableMove', game_id: game_id });
- - $("#quit" + id).click();
- jpoker.plugins.table.callback.quit = callback;
- start_and_cleanup();
- });
