package tests::OutputFormatsXMLTest;

use strict;

use base qw/Lire::Test::PluginTestCase/;

use Lire::OutputFormats::XML;
use Lire::Config::OutputFormatSpec;
use Lire::PluginManager;
use Lire::Utils qw/tempdir/;
use File::Basename qw/dirname/;
use File::Path qw/rmtree/;

sub set_up {
    my $self = $_[0];
    $self->SUPER::set_up();

    $self->{'testdir'} = dirname( __FILE__ ) ;
    $self->{'output_cfg'} =
      new Lire::Config::OutputFormatSpec( 'name' => 'output' )->instance();
    $self->{'tmpdir'} = tempdir( $self->name() . '_XXXXXX' );
    return;
}

sub tear_down {
    my $self = $_[0];
    $self->SUPER::tear_down();

    rmtree( $self->{'tmpdir'} )
      unless $self->{'keep_tmpdir'};
}

sub create_plugin {
    return new Lire::OutputFormats::XML();
}

sub registration_file {
    return dirname( __FILE__ ) . "/../Lire/OutputFormats/of_xml_init";
}

sub test_format_report {
    my $self = $_[0];

    $self->test_registration_file();
    my $xml = Lire::PluginManager->get_plugin( 'output_format', 'xml' );

    my $report = "$self->{'tmpdir'}/report.xml";
    $xml->format_report( "$self->{'testdir'}/data/test-sqlite.xml", $report);
    $self->assert_num_equals( -s "$self->{'testdir'}/data/test-sqlite.xml",
                              -s $report );
}

sub test_mime_report {
   my $self = $_[0];

   $self->test_registration_file();
   my $xml = Lire::PluginManager->get_plugin( 'output_format', 'xml' );

   my $entity = $xml->mime_report( "$self->{'testdir'}/data/test-sqlite.xml" );
   $self->assert_isa( 'MIME::Entity', $entity );
   $self->assert_str_equals( 'text/xml', $entity->head()->mime_type() );
   $self->assert_str_equals( "quoted-printable\n",
                             $entity->head()->get( 'content-transfer-encoding' ) );
   $self->assert_str_equals( 'utf-8',
                             $entity->head()->mime_attr( 'content-type.charset' ) );
}

1;


syntax highlighted by Code2HTML, v. 0.9.1