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

=pod

05_sources.t - test for the source plugins

=cut

use strict;
use warnings;

use Data::Dumper;

use Test::More tests => 8;
use File::Basename;
use File::Spec;
use YAML::Tiny;

my $dir    = File::Spec->rel2abs( dirname( __FILE__ ) );

my $module = 'EPublisher::Source';
use_ok( $module );

#
# Module
###
{
   # test EPublisher::Source::Plugin::Module
   my $source = $module->new({
      type => 'Module',
      name => 'File::Temp', 
   });
   ok( $source->isa( 'EPublisher::Source::Plugin::Module' ), '$source isa EPublisher::Source::Plugin::Module' );
   ok( $source->isa( 'EPublisher::Source::Base' ),           '$source isa EPublisher::Source::Base' );
   
   ok( $source->load_source, 'check *::Module::load_source()' );
}

#
# File
###
{
   my $source = $module->new({
      type => 'File',
      path => __FILE__,
   });
   
   ok( $source->isa( 'EPublisher::Source::Plugin::File' ), '$source isa EPublisher::Source::Plugin::File' );
   ok( $source->isa( 'EPublisher::Source::Base' ),         '$source isa EPublisher::Source::Base' );
   
   ok( $source->load_source, 'check *::File::load_source()' );
}

#
# Force Error
###
{
   eval{
      my $source = $module->new({
         type => 'AnyNonExistentTargetPlugin',
      });
   };
   
   like( $@, qr/Problems with/, 'Force error' );
}