main.t 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. use strict;
  2. use warnings;
  3. use utf8;
  4. use Kelp::Test;
  5. use Test::More;
  6. use Test::Deep;
  7. use HTTP::Request::Common;
  8. my $t = Kelp::Test->new( psgi => 'app.pl');
  9. my $world = { randomNumber => re(qr{^\d+$}), id => re(qr{^\d+$}) };
  10. subtest 'json' => sub {
  11. $t->request( GET '/json' )->json_cmp( { message => 'Hello, World!' } );
  12. };
  13. subtest plaintext => sub {
  14. $t->request( GET '/plaintext' )
  15. ->content_type_is('text/plain')
  16. ->content_is('Hello, World!');
  17. };
  18. subtest db => sub {
  19. for my $uri (qw{/db /db/mongo}) {
  20. $t->request( GET $uri )->json_cmp($world);
  21. }
  22. };
  23. subtest queries => sub {
  24. for my $uri (qw{/queries /queries/mongo}) {
  25. $t->request( GET $uri )->json_cmp($world);
  26. $t->request( GET "$uri?queries=3" )
  27. ->json_cmp( [ $world, $world, $world ] );
  28. $t->request( GET "$uri?queries=0" )->json_cmp($world);
  29. }
  30. };
  31. subtest update => sub {
  32. for my $uri (qw{/update /update/mongo}) {
  33. $t->request( GET $uri )->json_cmp([$world]);
  34. $t->request( GET "$uri?queries=3" )
  35. ->json_cmp( [ $world, $world, $world ] );
  36. }
  37. };
  38. subtest fortunes => sub {
  39. for my $uri (qw{/fortunes /fortunes/mongo}) {
  40. $t->request( GET $uri )
  41. ->content_type_is('text/html')
  42. ->content_like(qr{<script>})
  43. ->content_like(qr{フレームワークのベンチマーク})
  44. ->content_like(qr{Additional fortune added at request time.});
  45. }
  46. };
  47. done_testing;