The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*- perl -*-

# t/12_plugin_depends.t - Test Depends

use Test::Most tests => 1+1;
use Test::NoWarnings;

use lib 't/testlib';
use Test08;

subtest 'Depends' => sub {
   plan tests => 8;

   {
      my $test01 = Test08->new_with_options( WriteToFile => 1 );
      isa_ok( $test01, 'MooseX::App::Message::Envelope' );
      
      my @errors = grep { $_->type eq 'error' } @{ $test01->blocks };
      is( scalar @errors, 1, 'only returned a single error' );
      is( $errors[0]->header,
          'Option \'WriteToFile\' requires \'FileFormat\' to be defined',
          'generated an error when an option dependency was not present'
      );
   }
   
   {
      my $test02 = Test08->new_with_options( ReadFromFile => 1 );
      isa_ok( $test02, 'MooseX::App::Message::Envelope' );
      
      my @errors = grep { $_->type eq 'error' } @{ $test02->blocks };
      is( scalar @errors, 1, 'only returned a single error' );
      is( $errors[0]->header,
          'Option \'ReadFromFile\' requires \'FileFormat\' to be defined',
          'generated an error when an option dependency was not present'
      );
   }
   
   {
      my $test03 = Test08->new_with_options( WriteToFile => 1, FileFormat => 'tsv' );
      ok( ! $test03->can('blocks'), 
          'generated no errors when both an option and its dependencies are defined' 
      );
   }
     
   {
      my $test04 = Test08->new_with_options( ReadFromFile => 1, FileFormat => 'tsv' );
      ok( ! $test04->can('blocks'), 
          'generated no errors when both an option and its dependencies are defined' 
      );
   } 
};