Added simple search fixture to fake server
Change-Id: I65a5fcc80820d6eb61a2deab1748e25ab1354dc3
diff --git a/lib/Kalamar.pm b/lib/Kalamar.pm
index 2db406a..c35ed27 100644
--- a/lib/Kalamar.pm
+++ b/lib/Kalamar.pm
@@ -71,12 +71,15 @@
$self->log->info('Mount test server');
+ my $mount_point = '/api/v0.1/';
+
$self->plugin(Mount => {
- '/api/v0.1' => $self->home->child('lib/Kalamar/Apps/test_backend.pl')
+ $mount_point => $self->home->child('lib/Kalamar/Apps/test_backend.pl')
});
- # Fix api endpoint
- $self->config('Kalamar')->{api} = "/api/v0.1/";
+ # Fix api endpoints
+ $self->config('Kalamar')->{api} = $mount_point;
+ $self->config('Search')->{api} = $mount_point;
};
# Client notifications
diff --git a/lib/Kalamar/Apps/test_backend.pl b/lib/Kalamar/Apps/test_backend.pl
index 27566a2..ee3d821 100644
--- a/lib/Kalamar/Apps/test_backend.pl
+++ b/lib/Kalamar/Apps/test_backend.pl
@@ -2,12 +2,15 @@
use Mojolicious::Lite;
use Mojo::ByteStream 'b';
use Mojo::Date;
+use Mojo::JSON qw/true false/;
use strict;
use warnings;
use Mojo::JWT;
# This is an API fake server with fixtures
+# TODO: Test the fake server
+
helper jwt => sub {
shift;
Mojo::JWT->new(
@@ -25,6 +28,98 @@
};
+# Search fixtures
+get '/search' => sub {
+ my $c = shift;
+ my $v = $c->validation;
+ $v->optional('q');
+ $v->optional('page');
+ $v->optional('ql');
+ $v->optional('count');
+ $v->optional('context');
+
+ # Simple search fixture
+ return $c->render(
+ json => {
+ "\@context" => "http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
+ "meta" => {
+ "count" => 25,
+ "startIndex" => 0,
+ "timeout" => 120000,
+ "context" => {
+ "left" => ["token",40],
+ "right" => ["token",40]
+ },
+ "fields" => ["pubDate","subTitle","author","pubPlace","title","textSigle","UID","ID","layerInfos","corpusSigle","docSigle","corpusID","textClass"],
+ "version" => "0.55.7",
+ "benchmark" => "0.120577834 s",
+ "totalResults" => 51,
+ "serialQuery" => "tokens:s:Baum",
+ "itemsPerPage" => 25
+ },
+ "query" => {
+ "\@type" => "koral:token",
+ "wrap" => {
+ "\@type" => "koral:term",
+ "layer" => "orth",
+ "key" => "Baum",
+ "match" => "match:eq",
+ "foundry" => "opennlp",
+ "rewrites" => [
+ {
+ "\@type" => "koral:rewrite",
+ "src" => "Kustvakt",
+ "operation" => "operation:injection",
+ "scope" => "foundry"
+ }
+ ]
+ }
+ },
+ "matches" => [
+ {
+ "field" => "tokens",
+ "pubPlace" => "München",
+ "textSigle" => "GOE/AGI/00000",
+ "docSigle" => "GOE/AGI",
+ "corpusSigle" => "GOE",
+ "title" => "Italienische Reise",
+ "subTitle" => "Auch ich in Arkadien!",
+ "author" => "Goethe, Johann Wolfgang von",
+ "layerInfos" => "base/s=spans corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels mdp/d=rels opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens tt/s=spans",
+ "startMore" => true,
+ "endMore" => true,
+ "snippet" => "<span class=\"context-left\"><span class=\"more\"></span>sie etwas bedeuten zu wollen und machte mit der Oberlippe eine fatale Miene. ich sprach sehr viel mit ihr durch, sie war überall zu Hause und merkte gut auf die Gegenstände. so fragte sie mich einmal, was das für ein </span><span class=\"match\"><mark>Baum</mark></span><span class=\"context-right\"> sei. es war ein schöner großer Ahorn, der erste, der mir auf der ganzen Reise zu Gesichte kam. den hatte sie doch gleich bemerkt und freute sich, da mehrere nach und nach erschienen, daß sie auch diesen Baum unterscheiden könne<span class=\"more\"></span></span>",
+ "matchID" => "match-GOE/AGI/00000-p2030-2031",
+ "UID" => 0,
+ "pubDate" => "1982"
+ },
+ {
+ "field" => "tokens",
+ "pubPlace" => "München",
+ "textSigle" => "GOE/AGI/00000",
+ "docSigle" => "GOE/AGI",
+ "corpusSigle" => "GOE",
+ "title" => "Italienische Reise",
+ "subTitle" => "Auch ich in Arkadien!",
+ "author" => "Goethe, Johann Wolfgang von",
+ "layerInfos" => "base/s=spans corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels mdp/d=rels opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens tt/s=spans",
+ "startMore" => true,
+ "endMore" => true,
+ "snippet" => "<span class=\"context-left\"><span class=\"more\"></span>für ein Baum sei. es war ein schöner großer Ahorn, der erste, der mir auf der ganzen Reise zu Gesichte kam. den hatte sie doch gleich bemerkt und freute sich, da mehrere nach und nach erschienen, daß sie auch diesen </span><span class=\"match\"><mark>Baum</mark></span><span class=\"context-right\"> unterscheiden könne. sie gehe, sagte sie, nach Bozen auf die Messe, wo ich doch wahrscheinlich auch hinzöge. wenn sie mich dort anträfe, müsse ich ihr einen Jahrmarkt kaufen, welches ich ihr denn auch versprach. dort wollte sie auch ihre neue<span class=\"more\"></span></span>",
+ "matchID" => "match-GOE/AGI/00000-p2068-2069",
+ "UID" => 0,
+ "pubDate" => "1982"
+ }
+ ]
+ }
+ );
+};
+
+
+############
+# Auth API #
+############
+
# Request API token
get '/auth/apiToken' => sub {
my $c = shift;
diff --git a/t/remote.t b/t/remote.t
index 30156ea..53ab29e 100644
--- a/t/remote.t
+++ b/t/remote.t
@@ -1,9 +1,12 @@
use Mojo::Base -strict;
use lib '../lib', 'lib';
-use Test::More skip_all => 'No remote tests';
+use Test::More;
use Test::Mojo;
+$ENV{MOJO_MODE} = 'test';
+
my $t = Test::Mojo->new('Kalamar');
+
$t->get_ok('/')
->status_is(200)
->text_is('title', 'KorAP - Corpus Analysis Platform')
@@ -11,12 +14,15 @@
;
# Check paging
-$t->get_ok('/?q=test')
- ->text_like('h1 span', qr/KorAP: Find "test"/i)
+$t->get_ok('/?q=Baum')
+ ->text_like('h1 span', qr/KorAP: Find .Baum./i)
# ->text_is('pre.query.serial span', 'JSON-LD Serialization for "test"')
->text_like('#total-results', qr/\d+$/)
->text_is('#pagination a[rel=self] span', 1)
-;
+ ;
+
+done_testing;
+__END__
# Check paging
$t->get_ok('/?q=test&p=2')
diff --git a/t/remote_user.t b/t/remote_user.t
index 1942158..5e23b95 100644
--- a/t/remote_user.t
+++ b/t/remote_user.t
@@ -4,7 +4,6 @@
use Test::Mojo;
use Data::Dumper;
-$ENV{MOJO_USERAGENT_DEBUG} = 1;
$ENV{MOJO_MODE} = 'test';
my $t = Test::Mojo->new('Kalamar');