The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use warnings;

use Test::More tests => 10;

use AnyEvent::XMPP::Parser;

use_ok 'JLogger::Handler::Message';

my $handler = new_ok 'JLogger::Handler::Message';

my $parser = AnyEvent::XMPP::Parser->new;

my $message;

$parser->set_stanza_cb(
    sub { $message = $handler->handle($_[1]) if defined $_[1]; });

$parser->feed(<<'XML');
<?xml version='1.0'?>
<stream:stream
    xmlns:stream='http://etherx.jabber.org/streams'
    xmlns='jabber:component:accept'
    from=''
    id='1'>
XML

$parser->feed(<<'XML');
<message
    from='sender@domain.com/resource'
    to='receiver@domain.com/resource'
    type='chat'
    id='id1'>
  <thread>thread1</thread>
  <body>body text</body>
</message>
XML

is $message->{to},   'receiver@domain.com/resource', 'message receiver';
is $message->{from}, 'sender@domain.com/resource',   'message sender';
is $message->{type}, 'message',                      'message type';

is $message->{message_type}, 'chat',      'message message_type';
is $message->{id},           'id1',       'message id';
is $message->{body},         'body text', 'message body';
is $message->{thread},       'thread1',   'message thread';

$parser->feed(<<'XML');
<message
    from='sender@domain.com'
    to='receiver@domain.com'>
  <composing xmlns='http://jabber.org/protocol/chatstates'/>
</message>
XML

is $message, undef, 'empty message';