Renard-Curie
view release on metacpan or search on metacpan
t/Renard/Curie/App.t view on Meta::CPAN
#!/usr/bin/env perl
use Test::Most tests => 5;
use Test::Trap;
use Test::Exception 0.43;
use lib 't/lib';
use CurieTestHelper;
use Renard::Block::Format::PDF::Devel::TestHelper;
use Renard::Block::Format::Cairo::Devel::TestHelper;
use Renard::Incunabula::Common::Setup;
use Renard::Curie::Container::App;
use Renard::Curie::App;
use File::Temp;
use URI::file;
use Test::MockObject;
use Test::MockModule;
use version 0.77 ();
subtest "Process arguments" => sub {
subtest "Process arguments for PDF file" => sub {
my $pdf_ref_path = try {
Renard::Block::Format::PDF::Devel::TestHelper->pdf_reference_document_path;
} catch {
plan skip_all => "$_";
};
my $c = CurieTestHelper->get_app_container;
my $app = $c->app;
local @ARGV = ($pdf_ref_path);
$app->process_arguments;
like $c->main_window->window->get_title, qr/\Q$pdf_ref_path\E/, "Window title contains path to file";
undef $app;
};
subtest "Process no arguments" => sub {
my $app = CurieTestHelper->get_app_container->app;
local @ARGV = ();
lives_ok {
$app->process_arguments;
} 'Processes no arguments fine';
undef $app;
};
subtest "Process arguments for non-existent file" => sub {
my $non_existent_filename = File::Temp::tmpnam();
local @ARGV = ($non_existent_filename);
my $app = CurieTestHelper->get_app_container->app;
throws_ok {
$app->process_arguments;
} 'Renard::Incunabula::Common::Error::IO::FileNotFound', "Throws exception when file not found";
undef $app;
};
subtest "Process --help flag" => sub {
my $app = CurieTestHelper->get_app_container->app;
local @ARGV = qw(--help);
trap { $app->process_arguments; };
like( $trap->stdout, qr/--help/, 'Shows usage text' );
is( $trap->exit, 0, 'Exits successfully after call' );
undef $app;
};
subtest "Process --version flag" => sub {
my $app = CurieTestHelper->get_app_container->app;
local @ARGV = qw(--version);
trap { $app->process_arguments; };
like( $trap->stdout, qr/Project Renard Curie/, 'Prints full name of application' );
is( $trap->exit, 0, 'Exits successfully after call' );
undef $app;
};
subtest "Process --short-version flag" => sub {
my $app = CurieTestHelper->get_app_container->app;
local @ARGV = qw(--short-version);
trap { $app->process_arguments; };
chomp( my $version_or_dev = $trap->stdout );
note "Got version: $version_or_dev";
if( $version_or_dev =~ qr/^dev$/ ) {
pass( 'Prints out dev as version' );
} else {
lives_ok {
version->parse($version_or_dev);
} "version parses";
}
is( $trap->exit, 0, 'Exits successfully after call' );
undef $app;
};
};
subtest "Run app and destroy" => sub {
plan tests => 2;
my $c = CurieTestHelper->get_app_container;
my $app = $c->app;
Glib::Timeout->add(100, sub {
cmp_ok( Gtk3::main_level, '>', 0, 'Main loop is running');
$c->main_window->window->destroy;
});
$app->main;
is( Gtk3::main_level, 0, 'Main loop is no longer running');
undef $app;
};
subtest "Open document twice" => sub {
my $c = CurieTestHelper->get_app_container;
my $app = $c->app;
my $cairo_doc_a = Renard::Block::Format::Cairo::Devel::TestHelper->create_cairo_document;
my $cairo_doc_b = Renard::Block::Format::Cairo::Devel::TestHelper->create_cairo_document;
$c->view_manager->current_document($cairo_doc_a);
cmp_deeply $c->_test_current_view->document, $cairo_doc_a, 'First document loaded';
$c->view_manager->current_document($cairo_doc_b);
cmp_deeply $c->_test_current_view->document, $cairo_doc_b, 'Second document loaded';
undef $app;
};
subtest "Drag and drop of file" => sub {
my $pdf_ref_path = try {
Renard::Block::Format::PDF::Devel::TestHelper->pdf_reference_document_path;
} catch {
plan skip_all => "$_";
};
my $pdf_ref_uri = URI::file->new($pdf_ref_path);
my $c = CurieTestHelper->get_app_container;
my @tests = (
{
name => 'text/uri-list',
( run in 0.884 second using v1.01-cache-2.11-cpan-d80b1682f3f )