File Coverage

File:t/app-restful-request.t
Coverage:100.0%

linestmtbrancondsubpodtimecode
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
7package PostsController;
8
1
1
1
108
4
15
use Railsish::Controller;
9
1
1
1
11
3
19
use Test::More;
10
11sub index {
12
1
9
    response->body("index is rendered");
13}
14
15sub show {
16
1
9
    my $id = params("id");
17
1
7
    response->body("post($id) is rendered");
18}
19
20sub new {
21
1
8
    response->body("new_post is rendered")
22}
23
24sub edit {
25
1
1
8
7
    response->body("edit_post(@{[ params('id') ]}) is rendered")
26}
27
28sub create {
29
1
8
    response->body("create_post is rendered");
30}
31
32sub update {
33
1
1
9
8
    response->body("update_post(@{[ params('id') ]}) is rendered");
34}
35
36sub destroy {
37
1
1
9
7
    response->body("destroy_post(@{[ params('id') ]}) is rendered");
38}
39
40package main;
41
1
1
1
77
6
16
use Railsish::Router;
42
43Railsish::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
55my $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