=cut
sub IsSuperLibrarian {
- my $userenv = C4::Context->userenv
- || carp("C4::Context->userenv not defined!");
+ my $userenv = C4::Context->userenv;
- return $userenv->{flags} % 2 == 1;
+ unless ( $userenv and exists $userenv->{flags} ) {
+ carp("C4::Context->userenv not defined!");
+ return 0;
+ }
+
+ return $userenv->{flags} % 2;
}
1;
#!/usr/bin/perl
-use strict;
-use warnings;
+
+use Modern::Perl;
use DBI;
-use Test::More tests => 1;
+use Test::More tests => 6;
use Test::MockModule;
BEGIN {
use_ok('C4::Context');
}
+
+my $context = new Test::MockModule('C4::Context');
+my $userenv = {};
+
+$context->mock('userenv', sub {
+ return $userenv;
+});
+
+local $SIG{__WARN__} = sub { die $_[0] };
+
+eval { C4::Context::IsSuperLibrarian(); };
+like ( $@, qr/not defined/, "IsSuperLibrarian logs an error if no userenv is defined" );
+
+$userenv->{flags} = 42;
+my $is_super_librarian = eval{ C4::Context::IsSuperLibrarian() };
+is ( $@, q||, "IsSuperLibrarian does not log an error if userenv is defined" );
+is ( $is_super_librarian, 0, "With flag=42, it is not a super librarian" );
+
+$userenv->{flags} = 421;
+$is_super_librarian = eval{ C4::Context::IsSuperLibrarian() };
+is ( $@, q||, "IsSuperLibrarian does not log an error if userenv is defined" );
+is ( $is_super_librarian, 1, "With flag=1, it is a super librarian" );