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

(-)a/t/db_dependent/Koha/BackgroundJob.t (-5 / +32 lines)
Lines 16-21 Link Here
16
# along with Koha; if not, see <http://www.gnu.org/licenses>.
16
# along with Koha; if not, see <http://www.gnu.org/licenses>.
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
use utf8;
20
use Encode;
19
21
20
use Test::More tests => 5;
22
use Test::More tests => 5;
21
use Test::MockModule;
23
use Test::MockModule;
Lines 242-256 subtest 'process tests' => sub { Link Here
242
244
243
subtest 'decoded_data() and set_encoded_data() tests' => sub {
245
subtest 'decoded_data() and set_encoded_data() tests' => sub {
244
246
245
    plan tests => 3;
247
    plan tests => 8;
248
    $schema->storage->txn_begin;
246
249
247
    my $job = Koha::BackgroundJob::BatchUpdateItem->new->set_encoded_data( undef );
250
    my $job = Koha::BackgroundJob::BatchUpdateItem->new->set_encoded_data( undef );
248
    is( $job->decoded_data, undef );
251
    is( $job->decoded_data, undef, 'undef is undef' );
249
252
250
    my $data = { some => 'data' };
253
    my $data = { some => 'data' };
251
254
252
    $job->set_encoded_data( $data );
255
    $job->set_encoded_data( $data );
253
256
254
    is_deeply( $job->json->decode($job->data), $data );
257
    is_deeply( $job->json->decode($job->data), $data, 'decode what we sent' );
255
    is_deeply( $job->decoded_data, $data );
258
    is_deeply( $job->decoded_data, $data, 'check with decoded_data' );
259
260
    # Let's get some Unicode stuff into the game
261
    $data = { favorite_Chinese => [ '葑', '癱' ], latin_dancing => [ '¢', '¥', 'á', 'û' ] };
262
    $job->set_encoded_data( $data )->store;
263
264
    $job->discard_changes; # refresh
265
    is_deeply( $job->decoded_data, $data, 'Deep compare with Unicode data' );
266
    # To convince you even more
267
    is( ord( $job->decoded_data->{favorite_Chinese}->[0] ), 33873, 'We still found Unicode \x8451' );
268
    is( ord( $job->decoded_data->{latin_dancing}->[0] ), 162, 'We still found the equivalent of Unicode \x00A2' );
269
270
    # Testing with sending encoded data (which we normally shouldnt do)
271
    my $utf8_data;
272
    foreach my $k ( 'favorite_Chinese', 'latin_dancing' ) {
273
        foreach my $c ( @{$data->{$k}} ) {
274
            push @{$utf8_data->{$k}}, Encode::encode('UTF-8', $c);
275
        }
276
    }
277
    $job->set_encoded_data( $utf8_data )->store;
278
    $job->discard_changes; # refresh
279
    is_deeply( $job->decoded_data, $utf8_data, 'Deep compare with utf8_data' );
280
    # Need more evidence?
281
    is( ord( $job->decoded_data->{favorite_Chinese}->[0] ), 232, 'We still found a UTF8 encoded byte' ); # ord does not need substr here
282
283
    $schema->storage->txn_rollback;
256
};
284
};
257
- 

Return to bug 31351