Bug 17880 - Add test to check version number comparison
[koha.git] / t / Installer_PerlModules.t
1 #!/usr/bin/perl
2 #
3 # This Koha test module is a stub!  
4 # Add more tests here!!!
5
6 use strict;
7 use warnings;
8
9 use Test::More tests => 19;
10
11 BEGIN {
12         use_ok('C4::Installer::PerlModules');
13 }
14
15 $C4::Installer::PerlModules::PERL_DEPS->{'Local::Module::Sort'} = {
16     'required' => '1',
17     'min_ver' => '0.9.3',
18     'usage' => "Testing: make sure numbers are compared numerically and not lexicographically",
19 };
20
21 $Local::Module::Sort::VERSION = '0.9.13';
22 $INC{"Local/Module/Sort.pm"} = 1;
23 use_ok("Local::Module::Sort");
24
25 my $modules;
26 ok ($modules = C4::Installer::PerlModules->new(), 'Tests modules object');
27 my $prereq_pm = $modules->prereq_pm();
28 ok (exists($prereq_pm->{"DBI"}), 'DBI required for installer to run');
29 ok (exists($prereq_pm->{"CGI"}), 'CGI required for installer to run' );
30 ok (exists($prereq_pm->{"YAML"}), 'YAML required for installer to run');
31 is ($modules->required('module'=>"DBI"),1, 'DBI should return 1 since required');
32 is ($modules->required('module'=>"thisdoesn'texist"),-1, 'string should return -1 since not in hash');
33 my $required = $modules->required('required'=>1);
34 my %params = map { $_ => 1 } @$required;
35 ok (exists($params{"DBI"}), 'DBI required for installer to run');
36 my $optional = $modules->required('optional'=>1);
37 %params = map { $_ => 1 } @$optional;
38 ok (exists($params{"Test::Strict"}), 'test::strict optional for installer to run');
39 is ($optional = $modules->required('spaghetti'=>1),-1, '-1 returned when parsing in unknown parameter');
40 my $version_info = $modules->version_info('module'=>"DBI");
41 ok (exists($version_info->{'DBI'}->{"required"}), 'required exists');
42 ok (exists($version_info->{'DBI'}->{"upgrade"}), 'upgrade exists');
43 is ($modules->version_info('module'=>"thisdoesn'texist"),-1, 'thisdoesntexist should return -1');
44 ok ($modules->module_count() >10 , 'count should be greater than 10');
45 my @module_list = $modules->module_list;
46 %params = map { $_ => 1 } @module_list;
47 ok (exists($params{"DBI"}), 'DBI exists in array');
48 is ($modules->required('module'=>"String::Random"),1, 'String::Random should return 1 since required');
49 ok (!$modules->version_info(), "Testing empty modules");
50
51 is($modules->version_info('module'=>"Local::Module::Sort")->{"Local::Module::Sort"}->{"upgrade"},0,"Version 0.9.13 is greater than 0.9.3, so no upgrade needed");