Author: dylan
Date: 2005-06-24 21:58:50 -0400 (Fri, 24 Jun 2005)
New Revision: 810

Added:
   trunk/perl/server/t/005_lobby.t
Modified:
   trunk/
   trunk/perl/server/lib/Haver/Server/Entity/Lobby.pm
Log:
 [EMAIL PROTECTED]:  dylan | 2005-06-23 23:47:47 -0400
 improved lobby's loading of channels; added test case.



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/havercurs-objc:43089
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk:11166
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk-merge-10131:11178
27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:1166
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238
   + 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/havercurs-objc:43089
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk:11166
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk-merge-10131:11178
27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:1167
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238

Modified: trunk/perl/server/lib/Haver/Server/Entity/Lobby.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity/Lobby.pm  2005-06-25 01:58:47 UTC 
(rev 809)
+++ trunk/perl/server/lib/Haver/Server/Entity/Lobby.pm  2005-06-25 01:58:50 UTC 
(rev 810)
@@ -4,6 +4,7 @@
 use strict;
 use warnings;
 use Haver::Server::Entity::Channel -base;
+use Haver::Logger 'Log';
 
 our $VERSION = 0.22;
 
@@ -18,10 +19,7 @@
 sub dump {
     my ($self) = shift;
     my $data = super;
-    $data->{channels} = [
-        map  { $_->name }
-        grep { $_->{attr}{keep} } $self->list('channel')
-    ];
+    $data->{channels} = $self->names('channel');
     
     return $data;
 }
@@ -30,8 +28,12 @@
     my ($this, $data, $store) = @_;
     my $self = super($data);
     foreach my $name (@{ $data->{channels} }) {
-        my $chan = $store->fetch('channel', $name);
-        $self->add($chan);
+        if ($store->exists(channel => $name)) {
+            my $chan = $store->fetch(channel => $name);
+            $self->add($chan);
+        } else {
+            Log('error', "Can't load channel $name for lobby.");
+        }
     }
     return $self;
 }

Added: trunk/perl/server/t/005_lobby.t
===================================================================
--- trunk/perl/server/t/005_lobby.t     2005-06-25 01:58:47 UTC (rev 809)
+++ trunk/perl/server/t/005_lobby.t     2005-06-25 01:58:50 UTC (rev 810)
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+# vim: set ft=perl:
+
+use Test::More tests => 5;
+use Haver::Server::Entity::Channel;
+use Haver::Server::Entity::Lobby;
+
+BEGIN { use_ok('Haver::Server::Entity::Lobby') };
+
+
+my $chan = new Haver::Server::Entity::Channel (
+       name => 'pants',
+);
+my $lobby = new Haver::Server::Entity::Lobby;
+$lobby->add($chan);
+my $data = $lobby->dump;
+
+is($data->{channels}[0], 'pants', "dumps lobby");
+
+my $l2 = Haver::Server::Entity::Lobby->load($data, new FakeStore);
+is_deeply($lobby, $l2, "loads lobby");
+
+my $chan2 = $l2->get('channel', 'pants');
+ok($chan2, "get works");
+
+is($chan2->name, $chan->name, "name");
+
+BEGIN {
+       package FakeStore;
+       use Spiffy -base;
+       const exists => 1;
+       sub fetch {
+               my ($self, $ns, $name) = @_;
+               new Haver::Server::Entity::Channel(name => $name);
+       }
+}


Reply via email to