# $Id: 11-updates.t 1783 2005-01-09 05:44:52Z btrott $ use warnings; use strict; use Test::More; use POE qw( Component::BlogCloud Component::Server::TCP ); BEGIN { plan tests => 14 } use constant TEST_PORT => 9999; ## Create the blo.gs client, and point it towards the fake server ## that we will create below. POE::Component::BlogCloud->spawn( ReceivedUpdate => \&blog_update, RemoteAddress => 'localhost', RemotePort => TEST_PORT, ); ## Now create the server. POE::Component::Server::TCP->new( Alias => 'myserver', Port => TEST_PORT, ClientConnected => \&client_connect, ClientInput => sub { }, ); { ## Supress "Client got read error 0 (Normal disconnection)" warning. local $SIG{__WARN__} = sub { }; POE::Kernel->run; } exit; our $count = 0; sub blog_update { my($update) = $_[ ARG0 ]; ok($update); is(ref($update), 'POE::Component::BlogCloud::Update'); unless ($count++) { is($update->uri, 'http://btrott.typepad.com/'); is($update->name, 'StupidFool.org'); is($update->service, 'ping'); is($update->feed_uri, 'http://btrott.typepad.com/typepad/atom.xml'); is($update->updated_at->iso8601, '2005-01-03T01:09:50'); } else { is($update->uri, 'http://mena.typepad.com/'); is($update->name, 'Not a Dollarshort'); is($update->service, 'ping'); ok(!$update->feed_uri); is($update->updated_at->iso8601, '2005-01-03T01:10:00'); } } sub client_connect { my($session, $kernel, $heap) = @_[ SESSION, KERNEL, HEAP ]; $heap->{client}->put(< XML $kernel->yield('shutdown'); $kernel->post(myserver => 'shutdown'); }