Bug 37018: Unit tests

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Martin Renvoize 2024-06-05 14:19:06 +01:00 committed by Katrin Fischer
parent 5a6b8c4166
commit 470db1620f
Signed by: kfischer
GPG key ID: 0EF6E2C03357A834

View file

@ -206,6 +206,19 @@ get '/build_query' => sub {
}; };
}; };
get '/dbic_validate_operators' => sub {
my ( $c, $args ) = @_;
my $query = $c->req->json->{q};
return try {
$c->dbic_validate_operators( { filtered_params => $query } );
$c->render( json => { filtered_params => $query }, status => 200 );
} catch {
return $c->render( json => { filtered_params => $query }, status => 400 );
};
};
get '/stash_embed' => sub { get '/stash_embed' => sub {
my $c = shift; my $c = shift;
@ -337,7 +350,7 @@ sub to_model {
# The tests # The tests
use Test::More tests => 8; use Test::More tests => 9;
use Test::Mojo; use Test::Mojo;
subtest 'extract_reserved_params() tests' => sub { subtest 'extract_reserved_params() tests' => sub {
@ -634,3 +647,42 @@ subtest 'dbic_extended_attributes_join() tests' => sub {
] ]
); );
}; };
subtest 'dbic_validate_operators' => sub {
plan tests => 16;
my $t = Test::Mojo->new;
# Valid queries
my $q = {};
$t->get_ok( '/dbic_validate_operators' => json => { q => $q } )->status_is(200);
$q = [];
$t->get_ok( '/dbic_validate_operators' => json => { q => $q } )->status_is(200);
$q = {
firstname => 'Bilbo',
lastname => 'Baggins'
};
$t->get_ok( '/dbic_validate_operators' => json => { q => $q } )->status_is(200);
$q = {
firstname => undef,
lastname => 'Baggins'
};
$t->get_ok( '/dbic_validate_operators' => json => { q => $q } )->status_is(200);
$q = { lastname => [ 'Gaggins', 'Gamgee' ] };
$t->get_ok( '/dbic_validate_operators' => json => { q => $q } )->status_is(200);
$q = { lastname => { '!=' => [ 'Gaggins', 'Gamgee' ] } };
$t->get_ok( '/dbic_validate_operators' => json => { q => $q } )->status_is(200);
$q = { status => { '!=', 'completed', -not_like => 'pending%' } };
$t->get_ok( '/dbic_validate_operators' => json => { q => $q } )->status_is(200);
# Invalid queries
$q = [ { "-and" => [ [ { "biblio_id" => { "like(sleep(1/100000))or" => "%a%" } } ] ] } ];
$t->get_ok( '/dbic_validate_operators' => json => { q => $q } )->status_is(400);
};