Lines 50-55
get '/cities_to_model_to_api' => sub {
Link Here
|
50 |
$c->render( status => 200, json => $cities ); |
50 |
$c->render( status => 200, json => $cities ); |
51 |
}; |
51 |
}; |
52 |
|
52 |
|
|
|
53 |
get '/cities_sorted' => sub { |
54 |
my $c = shift; |
55 |
$c->validation->output($c->req->params->to_hash); |
56 |
my $cities_set = Koha::Cities->new; |
57 |
my $cities = $c->objects->search( $cities_set, \&to_model, \&to_api ); |
58 |
$c->render( status => 200, json => $cities ); |
59 |
}; |
60 |
|
53 |
sub to_model { |
61 |
sub to_model { |
54 |
my $params = shift; |
62 |
my $params = shift; |
55 |
|
63 |
|
Lines 71-77
sub to_api {
Link Here
|
71 |
} |
79 |
} |
72 |
|
80 |
|
73 |
# The tests |
81 |
# The tests |
74 |
use Test::More tests => 1; |
82 |
use Test::More tests => 2; |
75 |
use Test::Mojo; |
83 |
use Test::Mojo; |
76 |
|
84 |
|
77 |
use t::lib::TestBuilder; |
85 |
use t::lib::TestBuilder; |
Lines 233-235
subtest 'objects.search helper' => sub {
Link Here
|
233 |
|
241 |
|
234 |
$schema->storage->txn_rollback; |
242 |
$schema->storage->txn_rollback; |
235 |
}; |
243 |
}; |
236 |
- |
244 |
|
|
|
245 |
subtest 'objects.search helper, sorting on mapped column' => sub { |
246 |
|
247 |
plan tests => 14; |
248 |
|
249 |
my $t = Test::Mojo->new; |
250 |
|
251 |
$schema->storage->txn_begin; |
252 |
|
253 |
# Have complete control over the existing cities to ease testing |
254 |
Koha::Cities->delete; |
255 |
|
256 |
$builder->build_object({ class => 'Koha::Cities', value => { city_name => 'A', city_country => 'Argentina' } }); |
257 |
$builder->build_object({ class => 'Koha::Cities', value => { city_name => 'B', city_country => 'Argentina' } }); |
258 |
|
259 |
$t->get_ok('/cities_sorted?_order_by=%2Bnombre&_order_by=+city_country') |
260 |
->status_is(200) |
261 |
->json_has('/0') |
262 |
->json_has('/1') |
263 |
->json_hasnt('/2') |
264 |
->json_is('/0/nombre' => 'A') |
265 |
->json_is('/1/nombre' => 'B'); |
266 |
|
267 |
$t->get_ok('/cities_sorted?_order_by=-nombre') |
268 |
->status_is(200) |
269 |
->json_has('/0') |
270 |
->json_has('/1') |
271 |
->json_hasnt('/2') |
272 |
->json_is('/0/nombre' => 'B') |
273 |
->json_is('/1/nombre' => 'A'); |
274 |
|
275 |
$schema->storage->txn_rollback; |
276 |
} |