@@ -332,24 +332,45 @@ subtest 'perldoc.jp/$VALUE のように指定したら、よしなにリダイ
332332 };
333333 };
334334
335- subtest ' /{name} - いずれにも該当しなかった場合、最新ドキュメントか組み込み関数のページへリダイレクトする ' => sub {
336- subtest ' /Acme::Bleach は、/docs/modules/Acme-Bleach-1.12 /Bleach.pod にリダイレクトされる' => sub {
335+ subtest ' /{name} - いずれにも該当しなかった場合、404が返る ' => sub {
336+ subtest ' /Acme::Bleach は、/docs/modules/Acme-Bleach-*.* /Bleach.pod にリダイレクトされる' => sub {
337337 $mech -> get(' /Acme::Bleach' );
338338 is $mech -> status, 200, ' status is 200' ;
339339 like $mech -> title, qr / ^Acme::Bleach/ ;
340340
341- $mech -> base_like(qr { /docs/modules/Acme-Bleach-1.12 /Bleach.pod$} );
341+ $mech -> base_like(qr { /docs/modules/Acme-Bleach-\d + \.\d + /Bleach.pod$} );
342342 };
343343
344- subtest ' /fuga は、/func/fuga にリダイレクトされる ' => sub {
344+ subtest ' /fuga は、404が返る ' => sub {
345345 $mech -> get(' /fuga' );
346346 is $mech -> status, 404, ' status is 404' ;
347- is $mech -> title, " 'fuga' は Perl の組み込み関数ではありません。 - perldoc.jp" ;
348-
349- $mech -> base_like(qr { /func/fuga$} );
350- $mech -> text_contains(" 'fuga' は Perl の組み込み関数ではありません。" );
347+ $mech -> content_contains(' fuga' );
348+ $mech -> content_contains(' 検索結果が見つかりませんでした' );
351349 };
352350 };
353351};
354352
353+ subtest ' GET /search' => sub {
354+ subtest ' 検索クエリが指定された場合、/$qへリダイレクトされる' => sub {
355+ # /search?q=chomp -> /chomp -> /func/chomp
356+ $mech -> get(' /search?q=chomp' );
357+ is $mech -> status, 200, ' status is 200' ;
358+ is $mech -> title, ' Perlの組み込み関数 chomp の翻訳 - perldoc.jp' ;
359+ $mech -> base_like(qr { /func/chomp$} );
360+ };
361+
362+ subtest ' モジュール名を検索した場合も/$qへリダイレクトされる' => sub {
363+ # /search?q=Acme::Bleach -> /Acme::Bleach -> /docs/modules/...
364+ $mech -> get(' /search?q=Acme::Bleach' );
365+ is $mech -> status, 200, ' status is 200' ;
366+ like $mech -> title, qr / ^Acme::Bleach/ ;
367+ $mech -> base_like(qr { /docs/modules/Acme-Bleach-\d +\.\d +/Bleach\. pod$} );
368+ };
369+
370+ subtest ' qパラメータがない場合、404が返る' => sub {
371+ $mech -> get(' /search' );
372+ is $mech -> status, 404, ' status is 404' ;
373+ };
374+ };
375+
355376done_testing;
0 commit comments