File: | t/app-restful-request.t |
Coverage: | 100.0% |
line | stmt | bran | cond | sub | pod | time | code |
---|---|---|---|---|---|---|---|
1 | #!/usr/bin/env perl -w | ||||||
2 | 1 1 1 | 100 9 11 | use strict; | ||||
3 | 1 1 1 | 10 2 11 | use warnings; | ||||
4 | 1 1 1 | 108 5 20 | use Test::More; | ||||
5 | 1 1 1 | 96 5 5 | use Moose (); | ||||
6 | |||||||
7 | package PostsController; | ||||||
8 | 1 1 1 | 108 4 15 | use Railsish::Controller; | ||||
9 | 1 1 1 | 11 3 19 | use Test::More; | ||||
10 | |||||||
11 | sub index { | ||||||
12 | 1 | 9 | response->body("index is rendered"); | ||||
13 | } | ||||||
14 | |||||||
15 | sub show { | ||||||
16 | 1 | 9 | my $id = params("id"); | ||||
17 | 1 | 7 | response->body("post($id) is rendered"); | ||||
18 | } | ||||||
19 | |||||||
20 | sub new { | ||||||
21 | 1 | 8 | response->body("new_post is rendered") | ||||
22 | } | ||||||
23 | |||||||
24 | sub edit { | ||||||
25 | 1 1 | 8 7 | response->body("edit_post(@{[ params('id') ]}) is rendered") | ||||
26 | } | ||||||
27 | |||||||
28 | sub create { | ||||||
29 | 1 | 8 | response->body("create_post is rendered"); | ||||
30 | } | ||||||
31 | |||||||
32 | sub update { | ||||||
33 | 1 1 | 9 8 | response->body("update_post(@{[ params('id') ]}) is rendered"); | ||||
34 | } | ||||||
35 | |||||||
36 | sub destroy { | ||||||
37 | 1 1 | 9 7 | response->body("destroy_post(@{[ params('id') ]}) is rendered"); | ||||
38 | } | ||||||
39 | |||||||
40 | package main; | ||||||
41 | 1 1 1 | 77 6 16 | use Railsish::Router; | ||||
42 | |||||||
43 | Railsish::Router->draw( | ||||||
44 | sub { | ||||||
45 | 1 | 5 | my ($map) = @_; | ||||
46 | 1 | 9 | $map->resources("posts") | ||||
47 | } | ||||||
48 | 1 | 30 | ); | ||||
49 | |||||||
50 | 1 1 1 | 88 5 20 | use Railsish::Dispatcher; | ||||
51 | 1 1 1 | 77 5 16 | use HTTP::Engine; | ||||
52 | |||||||
53 | 1 1 1 | 85 4 19 | use HTTP::Request; | ||||
54 | |||||||
55 | my $engine = HTTP::Engine->new( | ||||||
56 | interface => { | ||||||
57 | module => "Test", | ||||||
58 | request_handler => sub { | ||||||
59 | 11 | 333 | Railsish::Dispatcher->dispatch(@_); | ||||
60 | } | ||||||
61 | } | ||||||
62 | 1 | 30 | ); | ||||
63 | |||||||
64 | 1 | 116 | my @reqs = ( | ||||
65 | # Good requests | ||||||
66 | [GET => "/posts", "index is rendered"], | ||||||
67 | [GET => "/posts/3", "post(3) is rendered"], | ||||||
68 | [GET => "/posts/new", "new_post is rendered"], | ||||||
69 | [GET => "/posts/3/edit", "edit_post(3) is rendered"], | ||||||
70 | [POST => "/posts", undef, "xxx", "create_post is rendered"], | ||||||
71 | [PUT => "/posts/3", undef, 'yyy', "update_post(3) is rendered"], | ||||||
72 | [DELETE => "/posts/3", "destroy_post(3) is rendered"], | ||||||
73 | |||||||
74 | # Bad requests | ||||||
75 | [GET => "/posts/destroy/3", "internal server error"], | ||||||
76 | [GET => "/posts/edit/3", "internal server error"], | ||||||
77 | [POST => "/posts/show", "internal server error"], | ||||||
78 | [PUT => "/posts", "internal server error"], | ||||||
79 | ); | ||||||
80 | |||||||
81 | 1 | 17 | plan tests => 0+@reqs; | ||||
82 | |||||||
83 | 1 | 393 | for (@reqs) { | ||||
84 | 11 | 217 | my $response_content = pop(@$_); | ||||
85 | 11 | 154 | my $response = $engine->run(HTTP::Request->new(@$_)); | ||||
86 | 11 | 33 | is( | ||||
87 | $response->content, | ||||||
88 | $response_content, | ||||||
89 | "$_->[0] $_->[1] => $response_content" | ||||||
90 | ); | ||||||
91 | } | ||||||
92 |