use 5.010; use strict; use warnings; package TestBase; use base qw(Test::Class); use Test::More; use Test::MockObject; use FindBin qw($Bin); use File::Temp (); use File::Copy (); use App::MP4Meta::Source::Data::TVEpisode; # return true if we can run live tests sub can_live_test { return $ENV{'MP4META_CAN_LIVE_TEST'}; } # create a copy of sample.m4v and put in in a temp place, returning filename # sub get_temporary_m4v { # my ($self, $name) = @_; # # my $dir = $self->get_temp_dir(); # my $fname = "$dir/$name.m4v"; # File::Copy::copy("$Bin/sample.m4v", $fname) or die "Copy failed: $!"; # # return $fname; # } # create and return a temp dir for our tests # sub get_temp_dir { # my $self = shift; # # if(! $self->{temp_dir}){ # $self->{temp_dir} = File::Temp->newdir(CLEANUP => 1); # } # return $self->{temp_dir}; # } # return a mocked version of AtomicParsley::Command sub mock_ap { my $mock = Test::MockObject->new(); $mock->set_always( 'write_tags', '/foo/bar' ); $mock->{success} = 1; return $mock; } sub mock_tv_source { my ( $self, $episode ) = @_; $episode //= App::MP4Meta::Source::Data::TVEpisode->new( cover => '/foo/bar.jpg', genre => 'Comedy', overview => 'nice', title => 'Test TV Episode', year => '2012', ); my $mock = Test::MockObject->new(); $mock->set_always( 'get_tv_episode', $episode ); $mock->set_always( 'name', 'test' ); return $mock; } sub mock_film_source { my ( $self, $film ) = @_; $film //= App::MP4Meta::Source::Data::Film->new( cover => '/foo/bar.jpg', genre => 'Comedy', overview => 'nice', title => 'Test Film', year => '2012', ); my $mock = Test::MockObject->new(); $mock->set_always( 'get_film', $film ); $mock->set_always( 'name', 'test' ); return $mock; } 1;