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

(-)a/Koha/UploadedFile.pm (-7 lines)
Lines 75-87 sub delete { Link Here
75
    my $file = $self->full_path;
75
    my $file = $self->full_path;
76
76
77
    my $retval = $self->SUPER::delete;
77
    my $retval = $self->SUPER::delete;
78
    if( !defined($retval) ) { # undef is Unknown (-1)
79
        $retval = -1;
80
    } elsif( $retval eq '0' ) { # 0 => 0E0
81
        $retval = "0E0";
82
    } elsif( $retval !~ /^(0E0|1)$/ ) { # Unknown too
83
        $retval = -1;
84
    }
85
    return $retval if $params->{keep_file};
78
    return $retval if $params->{keep_file};
86
79
87
    if( ! -e $file ) {
80
    if( ! -e $file ) {
(-)a/Koha/UploadedFiles.pm (-4 / +4 lines)
Lines 72-79 sub delete { Link Here
72
    # We use the individual delete on each resultset record
72
    # We use the individual delete on each resultset record
73
    my $rv = 0;
73
    my $rv = 0;
74
    while( my $row = $self->next ) {
74
    while( my $row = $self->next ) {
75
        my $delete= $row->delete( $params ); # 1, 0E0 or -1
75
        my $deleted = eval { $row->delete( $params ) };
76
        $rv = ( $delete < 0 || $rv < 0 ) ? -1 : ( $rv + $delete );
76
        $rv++ if $deleted && !$@;
77
    }
77
    }
78
    return $rv==0 ? "0E0" : $rv;
78
    return $rv==0 ? "0E0" : $rv;
79
}
79
}
Lines 135-142 sub delete_missing { Link Here
135
        # We are passing keep_file since we already know that the file
135
        # We are passing keep_file since we already know that the file
136
        # is missing and we do not want to see the warning
136
        # is missing and we do not want to see the warning
137
        # Apply the same logic as in delete for the return value
137
        # Apply the same logic as in delete for the return value
138
        my $delete = $row->delete({ keep_file => 1 }); # 1, 0E0 or -1
138
        my $deleted = eval { $row->delete({ keep_file => 1 }) };
139
        $rv = ( $delete < 0 || $rv < 0 ) ? -1 : ( $rv + $delete );
139
        $rv++ if $deleted && !$@;
140
    }
140
    }
141
    return $rv==0 ? "0E0" : $rv;
141
    return $rv==0 ? "0E0" : $rv;
142
}
142
}
(-)a/t/db_dependent/Upload.t (-6 / +8 lines)
Lines 4-9 use Modern::Perl; Link Here
4
use File::Temp qw/ tempdir /;
4
use File::Temp qw/ tempdir /;
5
use Test::More tests => 13;
5
use Test::More tests => 13;
6
use Test::Warn;
6
use Test::Warn;
7
use Try::Tiny;
7
8
8
use Test::MockModule;
9
use Test::MockModule;
9
use t::lib::Mocks;
10
use t::lib::Mocks;
Lines 171-177 subtest 'Test delete via UploadedFile as well as UploadedFiles' => sub { Link Here
171
    my $kohaobj = Koha::UploadedFiles->find( $upl->result );
172
    my $kohaobj = Koha::UploadedFiles->find( $upl->result );
172
    $path = $kohaobj->full_path;
173
    $path = $kohaobj->full_path;
173
    $delete = $kohaobj->delete;
174
    $delete = $kohaobj->delete;
174
    ok( $delete=~/^-?1$/, 'Delete successful' );
175
    ok( $delete, 'Delete successful' );
175
    isnt( -e $path, 1, 'File no longer found after delete' );
176
    isnt( -e $path, 1, 'File no longer found after delete' );
176
177
177
    # add another record with TestBuilder, so file does not exist
178
    # add another record with TestBuilder, so file does not exist
Lines 180-195 subtest 'Test delete via UploadedFile as well as UploadedFiles' => sub { Link Here
180
    warning_like { $delete = Koha::UploadedFiles->find( $upload01->{id} )->delete; }
181
    warning_like { $delete = Koha::UploadedFiles->find( $upload01->{id} )->delete; }
181
        qr/file was missing/,
182
        qr/file was missing/,
182
        'delete warns when file is missing';
183
        'delete warns when file is missing';
183
    ok( $delete=~/^-?1$/, 'Deleting record was successful' );
184
    ok( $delete, 'Deleting record was successful' );
184
    is( Koha::UploadedFiles->count, 4, 'Back to four uploads now' );
185
    is( Koha::UploadedFiles->count, 4, 'Back to four uploads now' );
185
186
186
    # add another one with TestBuilder and delete twice (file does not exist)
187
    # add another one with TestBuilder and delete twice (file does not exist)
187
    $upload01 = $builder->build({ source => 'UploadedFile' });
188
    $upload01 = $builder->build({ source => 'UploadedFile' });
188
    $kohaobj = Koha::UploadedFiles->find( $upload01->{id} );
189
    $kohaobj = Koha::UploadedFiles->find( $upload01->{id} );
189
    $delete = $kohaobj->delete({ keep_file => 1 });
190
    $delete = $kohaobj->delete({ keep_file => 1 });
190
    $delete = $kohaobj->delete({ keep_file => 1 });
191
    try {
191
    ok( $delete =~ /^(0E0|-1)$/, 'Repeated delete unsuccessful' );
192
        $delete = $kohaobj->delete({ keep_file => 1 });
192
    # NOTE: Koha::Object->delete does not return 0E0 (yet?)
193
    } catch {
194
        ok( $_->isa("DBIx::Class::Exception"), 'Repeated delete unsuccessful' );
195
    }
193
};
196
};
194
197
195
subtest 'Test delete_missing' => sub {
198
subtest 'Test delete_missing' => sub {
196
- 

Return to bug 21684