| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 1 | use Mojo::Base -strict; |
| 2 | use Test::More; |
| 3 | use Test::Mojo; |
| 4 | use Mojo::File qw/path/; |
| 5 | |
| Helge | 3d1d04d | 2026-01-28 18:04:39 +0100 | [diff] [blame^] | 6 | # Get API version from Kalamar config (respects env and config file) |
| 7 | my $api_version = Test::Mojo->new('Kalamar')->app->config('Kalamar')->{api_version}; |
| 8 | |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 9 | # Get the fixture path |
| Akron | 73f3608 | 2018-10-25 15:34:59 +0200 | [diff] [blame] | 10 | my $mock_server = path(Mojo::File->new(__FILE__)->dirname, 'server')->child('mock.pl'); |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 11 | |
| Akron | 73f3608 | 2018-10-25 15:34:59 +0200 | [diff] [blame] | 12 | my $t = Test::Mojo->new($mock_server); |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 13 | |
| Helge | 3d1d04d | 2026-01-28 18:04:39 +0100 | [diff] [blame^] | 14 | $t->get_ok("/v$api_version") |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 15 | ->status_is(200) |
| Helge | 3d1d04d | 2026-01-28 18:04:39 +0100 | [diff] [blame^] | 16 | ->content_is("Fake server available: $api_version"); |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 17 | |
| Helge | 3d1d04d | 2026-01-28 18:04:39 +0100 | [diff] [blame^] | 18 | $t->get_ok("/v$api_version/search?ql=cosmas3") |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 19 | ->status_is(400) |
| 20 | ->json_is('/errors/0/0',"307") |
| 21 | ->json_is('/errors/0/1',"cosmas3 is not a supported query language!") |
| 22 | ; |
| 23 | |
| Helge | 3d1d04d | 2026-01-28 18:04:39 +0100 | [diff] [blame^] | 24 | my $err = $t->get_ok("/v$api_version/search?q=server_fail") |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 25 | ->status_is(500) |
| 26 | ->content_like(qr!Oooops!) |
| Akron | 58c6099 | 2021-09-07 13:11:43 +0200 | [diff] [blame] | 27 | ->tx->res->dom->at('#error') |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 28 | ; |
| Akron | 58c6099 | 2021-09-07 13:11:43 +0200 | [diff] [blame] | 29 | is(defined $err ? $err->text : '', ''); |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 30 | |
| Helge | 3d1d04d | 2026-01-28 18:04:39 +0100 | [diff] [blame^] | 31 | $err = $t->get_ok("/v$api_version/search?q=[orth=das&ql=poliqarp&offset=0&count=25") |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 32 | ->status_is(400) |
| 33 | ->json_is('/errors/0/0',302) |
| 34 | ->json_is('/errors/0/1','Parantheses/brackets unbalanced.') |
| 35 | ->json_is('/errors/1/0',302) |
| 36 | ->json_is('/errors/1/1','Could not parse query >>> [orth=das <<<.') |
| Akron | 58c6099 | 2021-09-07 13:11:43 +0200 | [diff] [blame] | 37 | ->tx->res->dom->at('#error') |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 38 | ; |
| Akron | 58c6099 | 2021-09-07 13:11:43 +0200 | [diff] [blame] | 39 | is(defined $err ? $err->text : '', ''); |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 40 | |
| Akron | 58c6099 | 2021-09-07 13:11:43 +0200 | [diff] [blame] | 41 | |
| Helge | 3d1d04d | 2026-01-28 18:04:39 +0100 | [diff] [blame^] | 42 | $err = $t->get_ok("/v$api_version/search?q=baum&ql=poliqarp&offset=0&count=25") |
| Akron | 3239663 | 2018-10-11 17:08:37 +0200 | [diff] [blame] | 43 | ->status_is(200) |
| 44 | ->json_is('/meta/count', 25) |
| 45 | ->json_is('/meta/serialQuery', "tokens:s:Baum") |
| 46 | ->json_is('/matches/0/docSigle', "GOE/AGI") |
| Akron | 58c6099 | 2021-09-07 13:11:43 +0200 | [diff] [blame] | 47 | ->tx->res->dom->at('#error') |
| Akron | 3239663 | 2018-10-11 17:08:37 +0200 | [diff] [blame] | 48 | ; |
| Akron | 58c6099 | 2021-09-07 13:11:43 +0200 | [diff] [blame] | 49 | is(defined $err ? $err->text : '', ''); |
| 50 | |
| Helge | 3d1d04d | 2026-01-28 18:04:39 +0100 | [diff] [blame^] | 51 | $err = $t->get_ok("/v$api_version/search?q=baum&ql=poliqarp&offset=0&count=25&fields=textSigle") |
| Akron | 2fc697a | 2024-06-28 10:35:10 +0200 | [diff] [blame] | 52 | ->status_is(200) |
| 53 | ->json_is('/meta/count', 25) |
| 54 | ->json_is('/meta/serialQuery', "tokens:s:Baum") |
| 55 | ->json_hasnt('/matches/0/docSigle') |
| 56 | ->json_is('/matches/0/textSigle', "GOE/AGI/00000") |
| 57 | ->tx->res->dom->at('#error') |
| 58 | ; |
| 59 | is(defined $err ? $err->text : '', ''); |
| 60 | |
| Akron | 3239663 | 2018-10-11 17:08:37 +0200 | [diff] [blame] | 61 | |
| Helge | 3d1d04d | 2026-01-28 18:04:39 +0100 | [diff] [blame^] | 62 | $t->get_ok("/v$api_version/corpus/WPD15/232/39681/p2133-2134?spans=false&foundry=*") |
| Akron | b80341d | 2018-10-15 19:46:23 +0200 | [diff] [blame] | 63 | ->status_is(200) |
| 64 | ->json_is('/textSigle', 'WPD15/232/39681') |
| 65 | ; |
| Akron | 3239663 | 2018-10-11 17:08:37 +0200 | [diff] [blame] | 66 | |
| Akron | 0e1ed24 | 2018-10-11 13:22:00 +0200 | [diff] [blame] | 67 | done_testing; |
| 68 | __END__ |
| Akron | 6d49c1f | 2018-10-11 14:22:21 +0200 | [diff] [blame] | 69 | |