1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More;
7use Test::Fatal;
8
9use Web::Machine;
10
11{
12    package My::Plack::Request;
13    use strict;
14    use warnings;
15
16    use parent 'Plack::Request';
17}
18
19my $app = Web::Machine->new(
20    resource      => 'Web::Machine::Resource',
21    request_class => 'My::Plack::Request',
22);
23
24my $request = $app->inflate_request({});
25
26isa_ok($request, 'My::Plack::Request');
27isa_ok($request, 'Plack::Request');
28
29ok(
30    exception {
31        Web::Machine->new(
32            resource      => 'Web::Machine::Resource',
33            request_class => $request,
34        );
35    },
36    'The constructor dies when request_class is not a module name...'
37);
38
39like(
40    exception {
41        Web::Machine->new(
42            resource      => 'Web::Machine::Resource',
43            request_class => 'Web::Machine',
44        );
45    },
46    qr/must inherit from Plack::Request/,
47    '...or if the request_class class does not inherit from Plack::Request'
48);
49
50like(
51    exception {
52        Web::Machine->new(
53            resource      => 'Web::Machine::Resource',
54            request_class => 'Does::not::Exist',
55        );
56    },
57    qr/must inherit from Plack::Request/,
58    '...or if the request_class class does not exist'
59);
60
61done_testing;
62