#
#===============================================================================
#  DESCRIPTION: These tests are for creating different parameterized roles so
#  there are many test instances for LIMS::Local::Role::NotTestable to create
#  different 'NotTestables'
#===============================================================================
package TestsFor::LIMS::Local::Role::NotTestable::Live;
use Modern::Perl;
use utf8;
use Test::Class::Moose;

use DDP;
use Try::Tiny;

sub class_name { 'LIMS::Local::Role::NotTestable';}

use FindBin qw($RealBin);
use LIMS::Local::Config;

my $config = LIMS::Local::Config->instance;
my $production_mode = $config->{settings}->{is_in_production_mode};
with(
     'LIMS::Local::Role::NotTestable' => {
        unsafe     => [qw/_unsafe1 _unsafe2/],
        production => 1,
        testing    => 0
    }
);

sub test_some {
    my $test  = shift;
    my $class = $test->test_class;
    ok("before run ok");

    note "LIVE: p = 1, t = 0";
    warning_is { $class->_unsafe1(1, 2, 3) }  undef, 'No warning for live code';
    is($class->_unsafe1(1, 2, 3) , "unsafe 1 2 3", "runs unsafe code");
    is($class->_unsafe2(1, 2, 3) , "unsafe 1 2 3", "doesnt run no substitute sub");

}
sub _unsafe1 {
   my ($self, @args) = @_;
   return "unsafe @args";
}
sub _unsafe2 {
   my ($self, @args) = @_;
   return "unsafe @args";
}
sub _testing_unsafe1 {
   my ($self, @args) = @_;
   return "testing1 @args";
}
sub _dev_unsafe1 {
   my ($self, @args) = @_;
   return "dev1 @args";
}
1;
