Bug 31028: Add API's for tickets
[koha-ffzg.git] / t / Installer_PerlModules.t
index f64ed85..0a81da0 100755 (executable)
@@ -3,35 +3,36 @@
 # This Koha test module is a stub!  
 # Add more tests here!!!
 
-use strict;
-use warnings;
+use Modern::Perl;
 
-use Test::More tests => 15;
+use Test::More tests => 3;
+use Test::Warn;
 
 BEGIN {
         use_ok('C4::Installer::PerlModules');
 }
 
-my $modules;
-ok ($modules = C4::Installer::PerlModules->new(), 'Tests modules object');
-my $prereq_pm = $modules->prereq_pm();
-ok (exists($prereq_pm->{"DBI"}), 'DBI required for installer to run');
-ok (exists($prereq_pm->{"CGI"}), 'CGI required for installer to run' );
-ok (exists($prereq_pm->{"YAML"}), 'YAML required for installer to run');
-is ($modules->required('module'=>"DBI"),1, 'DBI should return 1 since required');
-is ($modules->required('module'=>"thisdoesn'texist"),-1, 'string should return -1 since not in hash');
-my $required = $modules->required('required'=>1);
-my %params = map { $_ => 1 } @$required;
-ok (exists($params{"DBI"}), 'DBI required for installer to run');
-my $optional = $modules->required('optional'=>1);
-%params = map { $_ => 1 } @$optional;
-ok (exists($params{"Test::Strict"}), 'test::strict optional for installer to run');
-is ($optional = $modules->required('spaghetti'=>1),-1, '-1 returned when parsing in unknown parameter');
-my $version_info = $modules->version_info('module'=>"DBI");
-ok (exists($version_info->{'DBI'}->{"required"}), 'required exists');
-ok (exists($version_info->{'DBI'}->{"upgrade"}), 'upgrade exists');
-is ($modules->version_info('module'=>"thisdoesn'texist"),-1, 'thisdoesntexist should return -1');
-ok ($modules->module_count() >10 , 'count should be greater than 10');
-my @module_list = $modules->module_list;
-%params = map { $_ => 1 } @module_list;
-ok (exists($params{"DBI"}), 'DBI exists in array');
+subtest 'prereq_pm' => sub {
+    my $modules;
+    ok ($modules = C4::Installer::PerlModules->new(), 'Tests modules object');
+    my $prereq_pm = $modules->prereq_pm();
+    ok (exists($prereq_pm->{"DBI"}), 'DBI required for installer to run');
+    ok (exists($prereq_pm->{"CGI"}), 'CGI required for installer to run' );
+    ok (exists($prereq_pm->{"YAML::XS"}), 'YAML::XS required for installer to run');
+};
+
+subtest 'versions_info' => sub {
+    plan tests => 5;
+    my $modules = C4::Installer::PerlModules->new;
+    warning_is { $modules->versions_info } undef, 'No warnings from versions_info';
+    ok( exists $modules->{missing_pm}, 'versions_info fills the missing_pm key' );
+    ok( exists $modules->{upgrade_pm}, 'versions_info fills the upgrade_pm key' );
+    ok( exists $modules->{current_pm}, 'versions_info fills the current_pm key' );
+    my $missing_modules = $modules->get_attr( 'missing_pm' );
+    my $upgrade_modules = $modules->get_attr( 'upgrade_pm' );
+    my $current_modules = $modules->get_attr( 'current_pm' );
+    my $dbi_is_missing = grep { exists $_->{DBI} ? 1 : () } @$missing_modules;
+    my $dbi_is_upgrade = grep { exists $_->{DBI} ? 1 : () } @$upgrade_modules;
+    my $dbi_is_current = grep { exists $_->{DBI} ? 1 : () } @$current_modules;
+    ok( $dbi_is_missing || $dbi_is_upgrade || $dbi_is_current, 'DBI should either be missing, upgrade or current' );
+};