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

(-)a/t/db_dependent/Koha/Object.t (-1 / +42 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 21;
20
use Test::More tests => 22;
21
use Test::Exception;
21
use Test::Exception;
22
use Test::Warn;
22
use Test::Warn;
23
use DateTime;
23
use DateTime;
Lines 33-38 use Koha::DateUtils qw( dt_from_string ); Link Here
33
use Koha::Libraries;
33
use Koha::Libraries;
34
use Koha::Patrons;
34
use Koha::Patrons;
35
use Koha::ApiKeys;
35
use Koha::ApiKeys;
36
use Koha::AuthorisedValueCategories;
37
use Koha::AuthorisedValues;
36
38
37
use JSON;
39
use JSON;
38
use Scalar::Util qw( isvstring );
40
use Scalar::Util qw( isvstring );
Lines 898-900 subtest 'messages() and add_message() tests' => sub { Link Here
898
900
899
    $schema->storage->txn_rollback;
901
    $schema->storage->txn_rollback;
900
};
902
};
903
904
subtest 'Authorised values expansion' => sub {
905
    plan tests => 4;
906
907
    $schema->storage->txn_begin;
908
909
    Koha::AuthorisedValues->search({category => 'Countries'})->delete;
910
    Koha::AuthorisedValueCategories->search({category_name =>'Countries'})->delete;
911
912
    my $cat = $builder->build_object({ class => 'Koha::AuthorisedValueCategories', value => {category_name =>'Countries'} });
913
    my $fr = $builder->build_object({ class => 'Koha::AuthorisedValues', value => {authorised_value => 'FR', lib=>'France', category=>$cat->category_name} });
914
    my $us = $builder->build_object({ class => 'Koha::AuthorisedValues', value => {authorised_value => 'US', lib=>'United States of America', category=>$cat->category_name} });
915
    my $ar = $builder->build_object({ class => 'Koha::AuthorisedValues', value => {authorised_value => 'AR', lib=>'Argentina', category=>$cat->category_name} });
916
917
    my $city_class = Test::MockModule->new('Koha::City');
918
    $city_class->mock( '_fetch_authorised_values',
919
        sub {
920
            my ($self) = @_;
921
            use Koha::AuthorisedValues;
922
            my $av = Koha::AuthorisedValues->find({authorised_value => $self->city_country, category => 'Countries'});
923
            return {country => $av->unblessed};
924
        }
925
    );
926
927
    my $marseille = $builder->build_object({ class => 'Koha::Cities', value => {city_country => 'FR', city_name => 'Marseille'} });
928
    my $cordoba = $builder->build_object({ class => 'Koha::Cities', value => {city_country => 'AR', city_name => 'Córdoba'} });
929
930
    my $mobj = $marseille->to_api({av_expand => 1});
931
    my $cobj = $cordoba->to_api({av_expand => 1});
932
933
    isnt($mobj->{_authorised_values}, undef, '_authorised_values exists for Marseille');
934
    isnt($cobj->{_authorised_values}, undef, '_authorised_values exists for Córdoba');
935
936
    is($mobj->{_authorised_values}->{country}->{lib}, $fr->lib, 'Authorised value for country expanded');
937
    is($cobj->{_authorised_values}->{country}->{lib}, $ar->lib, 'Authorised value for country expanded');
938
939
940
    $schema->storage->txn_rollback;
941
};
(-)a/t/db_dependent/Koha/REST/Plugin/Objects.t (-8 / +199 lines)
Lines 20-25 use Modern::Perl; Link Here
20
use Koha::Acquisition::Orders;
20
use Koha::Acquisition::Orders;
21
use Koha::Cities;
21
use Koha::Cities;
22
use Koha::Biblios;
22
use Koha::Biblios;
23
use Koha::AuthorisedValueCategories;
24
use Koha::AuthorisedValues;
23
25
24
# Dummy app for testing the plugin
26
# Dummy app for testing the plugin
25
use Mojolicious::Lite;
27
use Mojolicious::Lite;
Lines 80-86 get '/biblios' => sub { Link Here
80
};
82
};
81
83
82
# The tests
84
# The tests
83
use Test::More tests => 12;
85
use Test::More tests => 14;
84
use Test::Mojo;
86
use Test::Mojo;
85
87
86
use t::lib::Mocks;
88
use t::lib::Mocks;
Lines 312-318 subtest 'objects.search helper, embed' => sub { Link Here
312
    $schema->storage->txn_rollback;
314
    $schema->storage->txn_rollback;
313
};
315
};
314
316
315
subtest 'object.search helper with query parameter' => sub {
317
subtest 'objects.search helper with query parameter' => sub {
316
    plan tests => 4;
318
    plan tests => 4;
317
319
318
    $schema->storage->txn_begin;
320
    $schema->storage->txn_begin;
Lines 336-342 subtest 'object.search helper with query parameter' => sub { Link Here
336
    $schema->storage->txn_rollback;
338
    $schema->storage->txn_rollback;
337
};
339
};
338
340
339
subtest 'object.search helper with q parameter' => sub {
341
subtest 'objects.search helper with q parameter' => sub {
340
    plan tests => 4;
342
    plan tests => 4;
341
343
342
    $schema->storage->txn_begin;
344
    $schema->storage->txn_begin;
Lines 360-366 subtest 'object.search helper with q parameter' => sub { Link Here
360
    $schema->storage->txn_rollback;
362
    $schema->storage->txn_rollback;
361
};
363
};
362
364
363
subtest 'object.search helper with x-koha-query header' => sub {
365
subtest 'objects.search helper with x-koha-query header' => sub {
364
    plan tests => 4;
366
    plan tests => 4;
365
367
366
    $schema->storage->txn_begin;
368
    $schema->storage->txn_begin;
Lines 384-390 subtest 'object.search helper with x-koha-query header' => sub { Link Here
384
    $schema->storage->txn_rollback;
386
    $schema->storage->txn_rollback;
385
};
387
};
386
388
387
subtest 'object.search helper with all query methods' => sub {
389
subtest 'objects.search helper with all query methods' => sub {
388
    plan tests => 6;
390
    plan tests => 6;
389
391
390
    $schema->storage->txn_begin;
392
    $schema->storage->txn_begin;
Lines 411-418 subtest 'object.search helper with all query methods' => sub { Link Here
411
    $schema->storage->txn_rollback;
413
    $schema->storage->txn_rollback;
412
};
414
};
413
415
414
subtest 'object.search helper order by embedded columns' => sub {
416
subtest 'objects.search helper order by embedded columns' => sub {
415
416
    plan tests => 3;
417
    plan tests => 3;
417
418
418
    $schema->storage->txn_begin;
419
    $schema->storage->txn_begin;
Lines 476-478 subtest 'objects.find helper, embed' => sub { Link Here
476
477
477
    $schema->storage->txn_rollback;
478
    $schema->storage->txn_rollback;
478
};
479
};
479
- 
480
481
subtest 'objects.find helper with expanded authorised values' => sub {
482
    plan tests => 10;
483
484
    $schema->storage->txn_begin;
485
486
    my $t = Test::Mojo->new;
487
488
    Koha::AuthorisedValues->search( { category => 'Countries' } )->delete;
489
    Koha::AuthorisedValueCategories->search( { category_name => 'Countries' } )
490
      ->delete;
491
492
    my $cat = $builder->build_object(
493
        {
494
            class => 'Koha::AuthorisedValueCategories',
495
            value => { category_name => 'Countries' }
496
        }
497
    );
498
    my $fr = $builder->build_object(
499
        {
500
            class => 'Koha::AuthorisedValues',
501
            value => {
502
                authorised_value => 'FR',
503
                lib              => 'France',
504
                category         => $cat->category_name
505
            }
506
        }
507
    );
508
    my $us = $builder->build_object(
509
        {
510
            class => 'Koha::AuthorisedValues',
511
            value => {
512
                authorised_value => 'US',
513
                lib              => 'United States of America',
514
                category         => $cat->category_name
515
            }
516
        }
517
    );
518
    my $ar = $builder->build_object(
519
        {
520
            class => 'Koha::AuthorisedValues',
521
            value => {
522
                authorised_value => 'AR',
523
                lib              => 'Argentina',
524
                category         => $cat->category_name
525
            }
526
        }
527
    );
528
529
    my $city_class = Test::MockModule->new('Koha::City');
530
    $city_class->mock(
531
        '_fetch_authorised_values',
532
        sub {
533
            my ($self) = @_;
534
            use Koha::AuthorisedValues;
535
            my $av = Koha::AuthorisedValues->find(
536
                {
537
                    authorised_value => $self->city_country,
538
                    category         => 'Countries'
539
                }
540
            );
541
            return { country => $av->unblessed };
542
        }
543
    );
544
545
    my $manuel = $builder->build_object(
546
        {
547
            class => 'Koha::Cities',
548
            value => {
549
                city_name    => 'Manuel',
550
                city_country => 'AR'
551
            }
552
        }
553
    );
554
    my $manuela = $builder->build_object(
555
        {
556
            class => 'Koha::Cities',
557
            value => {
558
                city_name    => 'Manuela',
559
                city_country => 'US'
560
            }
561
        }
562
    );
563
564
    $t->get_ok( '/cities/' . $manuel->cityid => { 'x-koha-av-expand' => 1 } )
565
      ->status_is(200)->json_is( '/name' => 'Manuel' )
566
      ->json_has('/_authorised_values')
567
      ->json_is( '/_authorised_values/country/lib' => $ar->lib );
568
569
    $t->get_ok( '/cities/' . $manuela->cityid => { 'x-koha-av-expand' => 1 } )
570
      ->status_is(200)->json_is( '/name' => 'Manuela' )
571
      ->json_has('/_authorised_values')
572
      ->json_is( '/_authorised_values/country/lib' => $us->lib );
573
574
    $schema->storage->txn_rollback;
575
};
576
577
subtest 'objects.search helper with expanded authorised values' => sub {
578
579
    plan tests => 11;
580
581
    my $t = Test::Mojo->new;
582
583
    $schema->storage->txn_begin;
584
585
    Koha::AuthorisedValues->search( { category => 'Countries' } )->delete;
586
    Koha::AuthorisedValueCategories->search( { category_name => 'Countries' } )
587
      ->delete;
588
589
    my $cat = $builder->build_object(
590
        {
591
            class => 'Koha::AuthorisedValueCategories',
592
            value => { category_name => 'Countries' }
593
        }
594
    );
595
    my $fr = $builder->build_object(
596
        {
597
            class => 'Koha::AuthorisedValues',
598
            value => {
599
                authorised_value => 'FR',
600
                lib              => 'France',
601
                category         => $cat->category_name
602
            }
603
        }
604
    );
605
    my $us = $builder->build_object(
606
        {
607
            class => 'Koha::AuthorisedValues',
608
            value => {
609
                authorised_value => 'US',
610
                lib              => 'United States of America',
611
                category         => $cat->category_name
612
            }
613
        }
614
    );
615
    my $ar = $builder->build_object(
616
        {
617
            class => 'Koha::AuthorisedValues',
618
            value => {
619
                authorised_value => 'AR',
620
                lib              => 'Argentina',
621
                category         => $cat->category_name
622
            }
623
        }
624
    );
625
626
    my $city_class = Test::MockModule->new('Koha::City');
627
    $city_class->mock(
628
        '_fetch_authorised_values',
629
        sub {
630
            my ($self) = @_;
631
            use Koha::AuthorisedValues;
632
            my $av = Koha::AuthorisedValues->find(
633
                {
634
                    authorised_value => $self->city_country,
635
                    category         => 'Countries'
636
                }
637
            );
638
            return { country => $av->unblessed };
639
        }
640
    );
641
642
    $builder->build_object(
643
        {
644
            class => 'Koha::Cities',
645
            value => {
646
                city_name    => 'Manuel',
647
                city_country => 'AR'
648
            }
649
        }
650
    );
651
    $builder->build_object(
652
        {
653
            class => 'Koha::Cities',
654
            value => {
655
                city_name    => 'Manuela',
656
                city_country => 'US'
657
            }
658
        }
659
    );
660
661
    $t->get_ok( '/cities?name=manuel&_per_page=4&_page=1&_match=starts_with' =>
662
          { 'x-koha-av-expand' => 1 } )->status_is(200)->json_has('/0')
663
      ->json_has('/1')->json_hasnt('/2')->json_is( '/0/name' => 'Manuel' )
664
      ->json_has('/0/_authorised_values')
665
      ->json_is( '/0/_authorised_values/country/lib' => $ar->lib )
666
      ->json_is( '/1/name' => 'Manuela' )->json_has('/1/_authorised_values')
667
      ->json_is( '/1/_authorised_values/country/lib' => $us->lib );
668
669
    $schema->storage->txn_rollback;
670
};

Return to bug 26635