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::Patrons; |
24 |
|
25 |
use Mojo::JSON qw(encode_json); |
23 |
|
26 |
|
24 |
# Dummy app for testing the plugin |
27 |
# Dummy app for testing the plugin |
25 |
use Mojolicious::Lite; |
28 |
use Mojolicious::Lite; |
Lines 79-86
get '/biblios' => sub {
Link Here
|
79 |
$c->render( status => 200, json => {count => scalar(@$biblios), biblios => $biblios} ); |
82 |
$c->render( status => 200, json => {count => scalar(@$biblios), biblios => $biblios} ); |
80 |
}; |
83 |
}; |
81 |
|
84 |
|
|
|
85 |
get '/libraries/:library_id_1/:library_id_2' => sub { |
86 |
|
87 |
my $c = shift; |
88 |
|
89 |
# Emulate a public route by stashing the is_public value |
90 |
$c->stash( 'is_public' => 1 ); |
91 |
|
92 |
my $library_id_1 = $c->param('library_id_1'); |
93 |
my $library_id_2 = $c->param('library_id_2'); |
94 |
|
95 |
my $libraries_rs = Koha::Libraries->search( |
96 |
{ branchcode => [ $library_id_1, $library_id_2 ] }, |
97 |
{ order_by => 'branchname' } |
98 |
); |
99 |
my $libraries = $c->objects->search( $libraries_rs ); |
100 |
|
101 |
$c->render( |
102 |
status => 200, |
103 |
json => $libraries |
104 |
); |
105 |
}; |
106 |
|
107 |
get '/my_patrons' => sub { |
108 |
|
109 |
my $c = shift; |
110 |
|
111 |
my $patrons = $c->objects->search( scalar Koha::Patrons->search( {}, { order_by => 'borrowernumber' }) ); |
112 |
|
113 |
$c->render( |
114 |
status => 200, |
115 |
json => $patrons |
116 |
); |
117 |
}; |
118 |
|
82 |
# The tests |
119 |
# The tests |
83 |
use Test::More tests => 12; |
120 |
use Test::More tests => 14; |
84 |
use Test::Mojo; |
121 |
use Test::Mojo; |
85 |
|
122 |
|
86 |
use t::lib::Mocks; |
123 |
use t::lib::Mocks; |
Lines 512-514
subtest 'objects.find helper, embed' => sub {
Link Here
|
512 |
|
549 |
|
513 |
$schema->storage->txn_rollback; |
550 |
$schema->storage->txn_rollback; |
514 |
}; |
551 |
}; |
515 |
- |
552 |
|
|
|
553 |
subtest 'objects.search helper, public requests' => sub { |
554 |
|
555 |
plan tests => 3; |
556 |
|
557 |
$schema->storage->txn_begin; |
558 |
|
559 |
my $library_1 = $builder->build_object({ class => 'Koha::Libraries', value => { branchname => 'A' } }); |
560 |
my $library_2 = $builder->build_object({ class => 'Koha::Libraries', value => { branchname => 'B' } }); |
561 |
|
562 |
my $t = Test::Mojo->new; |
563 |
|
564 |
$t->get_ok( '/libraries/'.$library_1->id.'/'.$library_2->id ) |
565 |
->json_is('/0' => $library_1->to_api({ public => 1 }), 'Public representation of $library_1 is retrieved') |
566 |
->json_is('/1' => $library_2->to_api({ public => 1 }), 'Public representation of $library_2 is retrieved'); |
567 |
|
568 |
$schema->storage->txn_rollback; |
569 |
}; |
570 |
|
571 |
subtest 'objects.search helper, search_limited() tests' => sub { |
572 |
|
573 |
plan tests => 9; |
574 |
|
575 |
$schema->storage->txn_begin; |
576 |
|
577 |
my $library_1 = $builder->build_object({ class => 'Koha::Libraries' }); |
578 |
my $library_2 = $builder->build_object({ class => 'Koha::Libraries' }); |
579 |
|
580 |
my $patron_1 = $builder->build_object({ class => 'Koha::Patrons', value => { branchcode => $library_1->id } }); |
581 |
my $patron_2 = $builder->build_object({ class => 'Koha::Patrons', value => { branchcode => $library_1->id } }); |
582 |
my $patron_3 = $builder->build_object({ class => 'Koha::Patrons', value => { branchcode => $library_2->id } }); |
583 |
|
584 |
my @libraries_where_can_see_patrons = ( $library_1->id, $library_2->id ); |
585 |
|
586 |
my $t = Test::Mojo->new; |
587 |
|
588 |
my $mocked_patron = Test::MockModule->new('Koha::Patron'); |
589 |
$mocked_patron->mock( 'libraries_where_can_see_patrons', sub |
590 |
{ |
591 |
return @libraries_where_can_see_patrons; |
592 |
} |
593 |
); |
594 |
|
595 |
my $patron = $builder->build_object( |
596 |
{ |
597 |
class => 'Koha::Patrons', |
598 |
value => { flags => 2**4 } # borrowers flag = 4 |
599 |
} |
600 |
); |
601 |
|
602 |
t::lib::Mocks::mock_userenv({ patron => $patron }); |
603 |
|
604 |
$t->get_ok( "/my_patrons?q=" . encode_json( { library_id => [ $library_1->id, $library_2->id ] } ) ) |
605 |
->status_is(200) |
606 |
->json_is( '/0/patron_id' => $patron_1->id ) |
607 |
->json_is( '/1/patron_id' => $patron_2->id ) |
608 |
->json_is( '/2/patron_id' => $patron_3->id ); |
609 |
|
610 |
@libraries_where_can_see_patrons = ( $library_2->id ); |
611 |
|
612 |
my $res = $t->get_ok( "/my_patrons?q=" . encode_json( { library_id => [ $library_1->id, $library_2->id ] } ) ) |
613 |
->status_is(200) |
614 |
->json_is( '/0/patron_id' => $patron_3->id, 'Returns the only allowed patron' ) |
615 |
->tx->res->json; |
616 |
|
617 |
is( scalar @{$res}, 1, 'Only one patron returned' ); |
618 |
|
619 |
$schema->storage->txn_rollback; |
620 |
}; |