blob: 6edbe8576848027c0d4e8dfe6b048341329dbb02 [file] [log] [blame]
Akron9490e3b2019-10-17 12:26:29 +02001use Mojo::Base -strict;
2use Test::More;
3use Test::Mojo;
Akrona24af0a2021-01-11 17:38:40 +01004use Mojo::File qw/path/;
Akron9490e3b2019-10-17 12:26:29 +02005
6# Test the documentation
7
8my $t = Test::Mojo->new('Kalamar');
9
10my $app = $t->app;
11
12is($app->under_construction, '<p>Under Construction!</p>');
13
Akron3cfa26d2019-10-24 15:17:34 +020014is($app->embedded_link_to('doc', 'privacy', 'privacy'), '<a class="embedded-link" href="/doc/privacy">privacy</a>');
Marc Kupietzfcadda62021-09-08 09:06:25 +020015is($app->embedded_link_to('doc', 'privacy', 'development', 'privacy'), '<a class="embedded-link" href="/doc/development/privacy">privacy</a>');
Akron9490e3b2019-10-17 12:26:29 +020016
17
18my $c = $app->build_controller;
19$c->title('Example');
20is($c->page_title, '<h2 id="page-top">Example</h2>');
21
Akron90be03b2020-02-03 16:13:37 +010022$t->get_ok('/' => { 'X-Forwarded-Host' => 'korap2.ids-mannheim.de'})
23 ->attr_is('meta[property="og:url"]', 'content', '//korap2.ids-mannheim.de/')
24 ;
25
Akronb7b91c52021-01-27 17:46:52 +010026# Test csp
Akronbc6b3f22021-01-13 14:53:12 +010027$t->get_ok('/')
28 ->header_like('Content-Security-Policy', qr!default-src 'self';!)
29 ->header_like('Content-Security-Policy', qr!media-src 'none';!)
30 ->header_like('Content-Security-Policy', qr!object-src 'self';!)
Akronb7b91c52021-01-27 17:46:52 +010031 ->header_like('Content-Security-Policy', qr!nonce-!)
Akronaef5cf22021-06-21 11:45:54 +020032 ->header_like('Content-Security-Policy', qr!frame-ancestors 'self';!)
Akronb7b91c52021-01-27 17:46:52 +010033 ->content_like(qr/<script nonce/)
34 ->content_like(qr/document\.body\.classList\.remove\(\'no-js\'\);/)
Akron807225b2021-01-13 18:00:13 +010035 ->header_is('X-Content-Type-Options', 'nosniff')
Akron5b6d7272021-01-21 11:26:02 +010036 ->header_is('Access-Control-Allow-Methods','GET, POST, OPTIONS')
Akron52b32d02021-01-21 17:37:19 +010037 ->header_is('X-XSS-Protection', '1; mode=block')
Akronbb3da4d2025-12-05 22:47:35 +010038 ->element_exists('*[data-testid=home]')
39 ->element_exists('*[data-testid=tour-start]')
Akronbc6b3f22021-01-13 14:53:12 +010040 ;
41
Akrona24af0a2021-01-11 17:38:40 +010042# Test additions
43$t = Test::Mojo->new('Kalamar' => {
44 'Localize' => {
Marc Kupietz08095ef2026-08-10 11:52:03 +020045 # Behave like a real instance conf: let these entries override the
46 # defaults now shipped in kalamar.dict (corpusPub etc.).
47 override => 1,
Akrona24af0a2021-01-11 17:38:40 +010048 dict => {
49 en_howToCite => 'Citation Help',
50 de_howToCite => 'Zitierhilfe',
Marc Kupietz08095ef2026-08-10 11:52:03 +020051 en_corpusPub => 'Recent publications to refer to DeReKo as linguistic research data',
52 de_corpusPub => 'Neuere Publikationen zu DeReKo als linguistische Forschungsdatengrundlage',
53 en_korapPub => 'Recent publications to refer to KorAP as a research tool',
54 de_korapPub => 'Neuere Publikationen zu KorAP als Forschungswerkzeug',
Akronc4177492023-11-29 08:35:37 +010055 title_addon => 'Test',
Akrona24af0a2021-01-11 17:38:40 +010056 }
57 },
58 'TagHelpers-ContentBlock' => {
59 footer => [
60 {
61 inline => '<%= link_to loc("howToCite") => url_for(doc => { page => "faq" })->fragment("howToCite") %>',
62 position => 75
63 }
64 ],
65 faq => [
66 {
67 position => 50,
68 inline => <<'HOWTOCITE'
69<section>
70 <h3 id="howToCite"><%= loc 'howToCite' %></h3>
71%= include 'custom/partial/citation'
72</section>
73HOWTOCITE
74 }
75 ]
76 }
77});
78
79push @{$t->app->renderer->paths}, path(path(__FILE__)->dirname);
80
81$t->get_ok('/')
82 ->text_is('footer a:nth-child(1)', 'Citation Help')
83 ->attr_like('footer a:nth-child(1)', 'href', qr'/doc/+faq#howToCite');
84
85$t->get_ok('/doc//faq#howToCite')
86 ->text_is('#howToCite', 'Citation Help')
87 ->text_is('section > section h4', 'Recent publications to refer to DeReKo as linguistic research data')
88 ;
89
Akronc4177492023-11-29 08:35:37 +010090$t->get_ok('/')
91 ->text_is('title', 'KorAP-Test - Corpus Analysis Platform')
92 ->text_is('h1 > span', 'KorAP-Test - Corpus Analysis Platform')
93 ->text_is('div.logoaddon', 'Test')
94 ;
95
Akron459bf582023-11-03 10:17:11 +010096like($app->korap_maintenance('2023-10-03','13:00','15:00'), qr!<time datetime="2023-10-03">!);
97like($app->korap_maintenance('2023-10-03','13:00','15:00'), qr!Tuesday, 3rd October 2023!);
98like($app->korap_maintenance('2023-10-03','13:00','15:00'), qr!Maintenance 13:00 - 15:00 o&#39;clock!);
99like($app->korap_maintenance('2023-10-03','13:00','15:00'), qr!Due to maintenance work the service will be interrupted\.!);
100
101
102$c = $app->build_controller;
103$c->req->headers->accept_language('de-DE, en-US, en');
104$c->app($app);
105
106like($c->korap_maintenance('2023-10-03','13:00','15:00'), qr!<time datetime="2023-10-03">!);
107like($c->korap_maintenance('2023-10-03','13:00','15:00'), qr!Dienstag, 3\. Oktober 2023!);
108like($c->korap_maintenance('2023-10-03','13:00','15:00'), qr!Wartungsfenster 13:00 - 15:00 Uhr!);
109like($c->korap_maintenance('2023-10-03','13:00','15:00'), qr!Aufgrund von Wartungsarbeiten wird es zu Unterbrechungen des Dienstes kommen\.!);
110
111
Akron9490e3b2019-10-17 12:26:29 +0200112done_testing;
113
1141;