View | Details | Raw Unified | Return to bug 31791
Collapse All | Expand All

(-)a/Koha/Biblio.pm (+18 lines)
Lines 224-230 sub can_article_request { Link Here
224
    return q{};
224
    return q{};
225
}
225
}
226
226
227
=head3 can_be_edited
227
228
229
    if ( $biblio->can_be_edited( $patron ) ) { ... }
230
231
Returns a boolean denoting whether the passed I<$patron> meets the required
232
conditions to manually edit the record.
233
234
=cut
235
236
sub can_be_edited {
237
    my ( $self, $patron ) = @_;
238
239
    Koha::Exceptions::MissingParameter->throw( error => "The patron parameter is missing or invalid" )
240
        unless $patron && ref($patron) eq 'Koha::Patron';
241
242
    return (
243
        ( $self->metadata->source_allows_editing && $patron->has_permission( { editcatalogue => 'edit_catalogue' } ) )
244
            || $patron->has_permission( { editcatalogue => 'edit_locked_records' } ) ) ? 1 : 0;
245
}
228
246
229
=head3 check_booking
247
=head3 check_booking
230
248
(-)a/t/db_dependent/Koha/Biblio.t (-2 / +61 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 36;
20
use Test::More tests => 37;
21
use Test::Exception;
21
use Test::Exception;
22
use Test::Warn;
22
use Test::Warn;
23
23
Lines 1549-1554 subtest 'opac_summary_html' => sub { Link Here
1549
    );
1549
    );
1550
};
1550
};
1551
1551
1552
subtest 'can_be_edited() tests' => sub {
1553
1554
    plan tests => 6;
1555
1556
    $schema->storage->txn_begin;
1557
1558
    my $patron = $builder->build_object( { class => 'Koha::Patrons', value => { flags => 0 } } );
1559
    my $biblio = $builder->build_sample_biblio;
1560
1561
    my $source_allows_editing = 1;
1562
1563
    my $mock_metadata = Test::MockModule->new('Koha::Biblio::Metadata');
1564
    $mock_metadata->mock( 'source_allows_editing', sub { return $source_allows_editing; } );
1565
1566
    ok( !$biblio->can_be_edited($patron), "Patron needs 'edit_catalog' subpermission" );
1567
1568
    # Add editcatalogue => edit_catalog subpermission
1569
    $builder->build(
1570
        {
1571
            source => 'UserPermission',
1572
            value  => {
1573
                borrowernumber => $patron->id,
1574
                module_bit     => 9,                  # editcatalogue
1575
                code           => 'edit_catalogue',
1576
            },
1577
        }
1578
    );
1579
1580
    ok( $biblio->can_be_edited($patron), "Patron with 'edit_catalogue' can edit" );
1581
1582
    # Mock the record source doesn't allow direct editing
1583
    $source_allows_editing = 0;
1584
    ok( !$biblio->can_be_edited($patron), "Patron needs 'edit_locked_record' subpermission for locked records" );
1585
1586
    # Add editcatalogue => edit_catalog subpermission
1587
    $builder->build(
1588
        {
1589
            source => 'UserPermission',
1590
            value  => {
1591
                borrowernumber => $patron->id,
1592
                module_bit     => 9,                       # editcatalogue
1593
                code           => 'edit_locked_records',
1594
            },
1595
        }
1596
    );
1597
    ok( $biblio->can_be_edited($patron), "Patron needs 'edit_locked_record' subpermission for locked records" );
1598
1599
    throws_ok { $biblio->can_be_edited() }
1600
    'Koha::Exceptions::MissingParameter',
1601
        'Exception thrown on missing parameter';
1602
1603
    my $potato = 'Potato';
1604
1605
    throws_ok { $biblio->can_be_edited($potato) }
1606
    'Koha::Exceptions::MissingParameter',
1607
        'Exception thrown if parameter not a Koha::Patron reference';
1608
1609
    $schema->storage->txn_rollback;
1610
};
1611
1552
sub component_record1 {
1612
sub component_record1 {
1553
    my $marc = MARC::Record->new;
1613
    my $marc = MARC::Record->new;
1554
    $marc->append_fields(
1614
    $marc->append_fields(
1555
- 

Return to bug 31791