@@ -, +, @@ columns +GET /biblio/1?_order_by=item.holds.cardnumber HTTP/1.1 +x-koha-embed: item.holds --- Koha/REST/Plugin/Query.pm | 2 +- t/db_dependent/Koha/REST/Plugin/Objects.t | 29 +++++++++++++++++++++++------ 2 files changed, 24 insertions(+), 7 deletions(-) --- a/Koha/REST/Plugin/Query.pm +++ a/Koha/REST/Plugin/Query.pm @@ -277,7 +277,7 @@ sub _build_order_atom { my $param = $string; $param =~ s/^(\+|\-|\s)//; if ( $result_set ) { - my $model_param = $result_set->from_api_mapping->{$param}; + my $model_param = _from_api_param($param, $result_set); $param = $model_param if defined $model_param; } --- a/t/db_dependent/Koha/REST/Plugin/Objects.t +++ a/t/db_dependent/Koha/REST/Plugin/Objects.t @@ -72,12 +72,12 @@ get '/biblios' => sub { } }); my $biblios = $c->objects->search($biblios_set); - - $c->render( status => 200, json => {count => scalar(@$biblios)} ); + $c->render( status => 200, json => {count => scalar(@$biblios), biblios => $biblios} ); }; + # The tests -use Test::More tests => 8; +use Test::More tests => 9; use Test::Mojo; use t::lib::TestBuilder; @@ -316,8 +316,8 @@ subtest 'object.search helper with all query methods' => sub { $schema->storage->txn_begin; - my $patron1 = $builder->build_object( { class => "Koha::Patrons" , value => {cardnumber => 'cardpatron1', firstname=>'patron1'} } ); - my $patron2 = $builder->build_object( { class => "Koha::Patrons" , value => {cardnumber => 'cardpatron2', firstname=>'patron2'} } ); + my $patron1 = $builder->build_object( { class => "Koha::Patrons" , value => {firstname=>'patron1'} } ); + my $patron2 = $builder->build_object( { class => "Koha::Patrons" , value => {firstname=>'patron2'} } ); my $biblio1 = $builder->build_sample_biblio; my $biblio2 = $builder->build_sample_biblio; my $biblio3 = $builder->build_sample_biblio; @@ -335,4 +335,21 @@ subtest 'object.search helper with all query methods' => sub { ->json_is('/count' => 0, 'there shouldn\'t be biblios where suggester has patron1 fistname and patron2 id'); $schema->storage->txn_rollback; -}; +}; + +subtest 'object.search helper order by embedded columns' => sub { + plan tests => 3; + + my $patron1 = $builder->build_object( { class => "Koha::Patrons" , value => {firstname=>'patron1'} } ); + my $patron2 = $builder->build_object( { class => "Koha::Patrons" , value => {firstname=>'patron2'} } ); + my $biblio1 = $builder->build_sample_biblio; + my $biblio2 = $builder->build_sample_biblio; + my $suggestion1 = $builder->build_object( { class => "Koha::Suggestions", value => { suggestedby => $patron1->borrowernumber, biblionumber => $biblio1->biblionumber} } ); + my $suggestion2 = $builder->build_object( { class => "Koha::Suggestions", value => { suggestedby => $patron2->borrowernumber, biblionumber => $biblio2->biblionumber} } ); + + $t->get_ok('/biblios?_order_by=-suggestions.suggester.firstname' => json => [{"me.biblio_id" => $biblio1->biblionumber}, {"me.biblio_id" => $biblio2->biblionumber}]) + ->json_is('/biblios/0/biblio_id' => $biblio2->biblionumber, 'Biblio 2 should be first') + ->json_is('/biblios/1/biblio_id' => $biblio1->biblionumber, 'Biblio 1 should be second'); + + $schema->storage->txn_begin; +} --