Lines 54-59
my $new_patron_1 = Koha::Patron->new(
Link Here
|
54 |
surname => 'surname for patron1', |
54 |
surname => 'surname for patron1', |
55 |
firstname => 'firstname for patron1', |
55 |
firstname => 'firstname for patron1', |
56 |
userid => 'a_nonexistent_userid_1', |
56 |
userid => 'a_nonexistent_userid_1', |
|
|
57 |
flags => 1, # Is superlibrarian |
57 |
} |
58 |
} |
58 |
)->store; |
59 |
)->store; |
59 |
my $new_patron_2 = Koha::Patron->new( |
60 |
my $new_patron_2 = Koha::Patron->new( |
Lines 67-73
my $new_patron_2 = Koha::Patron->new(
Link Here
|
67 |
)->store; |
68 |
)->store; |
68 |
|
69 |
|
69 |
C4::Context->_new_userenv('xxx'); |
70 |
C4::Context->_new_userenv('xxx'); |
70 |
C4::Context->set_userenv(0,0,0,'firstname','surname', $library->{branchcode}, 'Midway Public Library', '', '', ''); |
71 |
set_logged_in_user( $new_patron_1 ); |
71 |
|
72 |
|
72 |
is( Koha::Patrons->search->count, $nb_of_patrons + 2, 'The 2 patrons should have been added' ); |
73 |
is( Koha::Patrons->search->count, $nb_of_patrons + 2, 'The 2 patrons should have been added' ); |
73 |
|
74 |
|
Lines 933-938
subtest 'search_patrons_to_anonymise & anonymise_issue_history' => sub {
Link Here
|
933 |
|
934 |
|
934 |
Koha::Patrons->find( $anonymous->{borrowernumber})->delete; |
935 |
Koha::Patrons->find( $anonymous->{borrowernumber})->delete; |
935 |
Koha::Patrons->find( $userenv_patron->{borrowernumber})->delete; |
936 |
Koha::Patrons->find( $userenv_patron->{borrowernumber})->delete; |
|
|
937 |
|
938 |
# Reset IndependentBranches for further tests |
939 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); |
940 |
}; |
941 |
|
942 |
subtest 'libraries_where_can_see_patrons + can_see_patron_infos + search_limited' => sub { |
943 |
plan tests => 3; |
944 |
|
945 |
# group1 |
946 |
# + library_11 |
947 |
# + library_12 |
948 |
# group2 |
949 |
# + library21 |
950 |
my $group_1 = Koha::Library::Group->new( { title => 'TEST Group 1' } )->store; |
951 |
my $group_2 = Koha::Library::Group->new( { title => 'TEST Group 2' } )->store; |
952 |
my $library_11 = $builder->build( { source => 'Branch' } ); |
953 |
my $library_12 = $builder->build( { source => 'Branch' } ); |
954 |
my $library_21 = $builder->build( { source => 'Branch' } ); |
955 |
$library_11 = Koha::Libraries->find( $library_11->{branchcode} ); |
956 |
$library_12 = Koha::Libraries->find( $library_12->{branchcode} ); |
957 |
$library_21 = Koha::Libraries->find( $library_21->{branchcode} ); |
958 |
Koha::Library::Group->new( |
959 |
{ branchcode => $library_11->branchcode, parent_id => $group_1->id } )->store; |
960 |
Koha::Library::Group->new( |
961 |
{ branchcode => $library_12->branchcode, parent_id => $group_1->id } )->store; |
962 |
Koha::Library::Group->new( |
963 |
{ branchcode => $library_21->branchcode, parent_id => $group_2->id } )->store; |
964 |
|
965 |
my $sth = C4::Context->dbh->prepare(q|INSERT INTO user_permissions( borrowernumber, module_bit, code ) VALUES (?, 4, ?)|); # 4 for borrowers |
966 |
# 2 patrons from library_11 (group1) |
967 |
# patron_11_1 see patron's infos from outside its group |
968 |
# Setting flags => undef to not be considered as superlibrarian |
969 |
my $patron_11_1 = $builder->build({ source => 'Borrower', value => { branchcode => $library_11->branchcode, flags => undef, }}); |
970 |
$patron_11_1 = Koha::Patrons->find( $patron_11_1->{borrowernumber} ); |
971 |
$sth->execute( $patron_11_1->borrowernumber, 'edit_borrowers' ); |
972 |
$sth->execute( $patron_11_1->borrowernumber, 'view_borrower_infos_from_any_libraries' ); |
973 |
# patron_11_2 can only see patron's info from its group |
974 |
my $patron_11_2 = $builder->build({ source => 'Borrower', value => { branchcode => $library_11->branchcode, flags => undef, }}); |
975 |
$patron_11_2 = Koha::Patrons->find( $patron_11_2->{borrowernumber} ); |
976 |
$sth->execute( $patron_11_2->borrowernumber, 'edit_borrowers' ); |
977 |
# 1 patron from library_12 (group1) |
978 |
my $patron_12 = $builder->build({ source => 'Borrower', value => { branchcode => $library_12->branchcode, flags => undef, }}); |
979 |
$patron_12 = Koha::Patrons->find( $patron_12->{borrowernumber} ); |
980 |
# 1 patron from library_21 (group2) can only see patron's info from its group |
981 |
my $patron_21 = $builder->build({ source => 'Borrower', value => { branchcode => $library_21->branchcode, flags => undef, }}); |
982 |
$patron_21 = Koha::Patrons->find( $patron_21->{borrowernumber} ); |
983 |
$sth->execute( $patron_21->borrowernumber, 'edit_borrowers' ); |
984 |
|
985 |
# Pfiou, we can start now! |
986 |
subtest 'libraries_where_can_see_patrons' => sub { |
987 |
plan tests => 3; |
988 |
|
989 |
my @branchcodes; |
990 |
|
991 |
set_logged_in_user( $patron_11_1 ); |
992 |
@branchcodes = $patron_11_1->libraries_where_can_see_patrons; |
993 |
is_deeply( \@branchcodes, [], q|patron_11_1 has view_borrower_infos_from_any_libraries => No restriction| ); |
994 |
|
995 |
set_logged_in_user( $patron_11_2 ); |
996 |
@branchcodes = $patron_11_2->libraries_where_can_see_patrons; |
997 |
is_deeply( \@branchcodes, [ sort ( $library_11->branchcode, $library_12->branchcode ) ], q|patron_11_2 has not view_borrower_infos_from_any_libraries => Can only see patron's from its group| ); |
998 |
|
999 |
set_logged_in_user( $patron_21 ); |
1000 |
@branchcodes = $patron_21->libraries_where_can_see_patrons; |
1001 |
is_deeply( \@branchcodes, [$library_21->branchcode], q|patron_21 has not view_borrower_infos_from_any_libraries => Can only see patron's from its group| ); |
1002 |
}; |
1003 |
subtest 'can_see_patron_infos' => sub { |
1004 |
plan tests => 6; |
1005 |
|
1006 |
set_logged_in_user( $patron_11_1 ); |
1007 |
is( $patron_11_1->can_see_patron_infos( $patron_11_2 ), 1, q|patron_11_1 can see patron_11_2, from its library| ); |
1008 |
is( $patron_11_1->can_see_patron_infos( $patron_12 ), 1, q|patron_11_1 can see patron_12, from its group| ); |
1009 |
is( $patron_11_1->can_see_patron_infos( $patron_21 ), 1, q|patron_11_1 can see patron_11_2, from another group| ); |
1010 |
|
1011 |
set_logged_in_user( $patron_11_2 ); |
1012 |
is( $patron_11_2->can_see_patron_infos( $patron_11_1 ), 1, q|patron_11_2 can see patron_11_1, from its library| ); |
1013 |
is( $patron_11_2->can_see_patron_infos( $patron_12 ), 1, q|patron_11_2 can see patron_12, from its group| ); |
1014 |
is( $patron_11_2->can_see_patron_infos( $patron_21 ), 0, q|patron_11_2 can NOT see patron_21, from another group| ); |
1015 |
}; |
1016 |
subtest 'search_limited' => sub { |
1017 |
plan tests => 6; |
1018 |
|
1019 |
set_logged_in_user( $patron_11_1 ); |
1020 |
my $total_number_of_patrons = $nb_of_patrons + 6; # 2 created before + 4 for these subtests |
1021 |
is( Koha::Patrons->search->count, $total_number_of_patrons, 'Non-limited search should return all patrons'); |
1022 |
is( Koha::Patrons->search_limited->count, $total_number_of_patrons, 'patron_11_1 is allowed to see all patrons' ); |
1023 |
|
1024 |
set_logged_in_user( $patron_11_2 ); |
1025 |
is( Koha::Patrons->search->count, $total_number_of_patrons, 'Non-limited search should return all patrons'); |
1026 |
is( Koha::Patrons->search_limited->count, 3, 'patron_12_1 is not allowed to see patrons from other groups, only patron_11_1, patron_11_2 and patron_12' ); |
1027 |
|
1028 |
set_logged_in_user( $patron_21 ); |
1029 |
is( Koha::Patrons->search->count, $total_number_of_patrons, 'Non-limited search should return all patrons'); |
1030 |
is( Koha::Patrons->search_limited->count, 1, 'patron_21 is not allowed to see patrons from other groups, only himself' ); |
1031 |
}; |
1032 |
$patron_11_1->delete; |
1033 |
$patron_11_2->delete; |
1034 |
$patron_12->delete; |
1035 |
$patron_21->delete; |
936 |
}; |
1036 |
}; |
937 |
|
1037 |
|
938 |
subtest 'account_locked' => sub { |
1038 |
subtest 'account_locked' => sub { |
Lines 960-962
is( Koha::Patrons->search->count, $nb_of_patrons + 1, 'Delete should have delete
Link Here
|
960 |
|
1060 |
|
961 |
$schema->storage->txn_rollback; |
1061 |
$schema->storage->txn_rollback; |
962 |
|
1062 |
|
963 |
- |
1063 |
# TODO Move to t::lib::Mocks and reuse it! |
|
|
1064 |
sub set_logged_in_user { |
1065 |
my ($patron) = @_; |
1066 |
C4::Context->set_userenv( |
1067 |
$patron->borrowernumber, $patron->userid, |
1068 |
$patron->cardnumber, 'firstname', |
1069 |
'surname', $patron->library->branchcode, |
1070 |
'Midway Public Library', $patron->flags, |
1071 |
'', '' |
1072 |
); |
1073 |
} |