The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::Most;
use Test::XML;
use CPAN::Index::API::File::Whois;

my $whois = <<'EndOfWhois';
<?xml version="1.0" encoding="UTF-8"?>
<cpan-whois xmlns='http://www.cpan.org/xmlns/whois'
            last-generated='Tue Sep 18 04:19:04 2012 GMT'
            generated-by='Id'>
 <cpanid>
  <id>AFOXSON</id>
  <type>author</type>
  <fullname></fullname>
 </cpanid>
 <cpanid>
  <id>YOHAMED</id>
  <type>author</type>
  <fullname></fullname>
  <email>moe334578-pause@yahoo.com</email>
 </cpanid>
</cpan-whois>
EndOfWhois

my $index = CPAN::Index::API::File::Whois->read_from_string($whois);

my $generated_by   = 'Id';
my $last_generated = "Tue Sep 18 04:19:04 2012 GMT";

my @authordata = (
    {
        cpanid    => 'AFOXSON',
        type      => 'author',
        full_name => '',
    },
    {
        cpanid    => 'YOHAMED',
        type      => 'author',
        full_name => '',
        email     => 'moe334578-pause@yahoo.com',
    },
);

is $index->generated_by, $generated_by, 'read generated-by';
is $index->last_generated, $last_generated, 'read last-generated';

is $index->author_count, scalar @authordata, 'correct number of entries';

my $i = 0;

foreach my $author ($index->authors) {
    foreach my $property ( keys %{$authordata[$i]} ) {
        is $author->{$property}, $authordata[$i]{$property}, "read author $property";
    }
    $i++;
}

my $new_index = CPAN::Index::API::File::Whois->new(
    generated_by   => $generated_by,
    last_generated => $last_generated,
    authors        => \@authordata,
);

is_xml $new_index->content, $whois, "generate xml";

done_testing;