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);
+ }
+}