File: class_traits.t

package info (click to toggle)
libcatalyst-perl 5.90132-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,016 kB
  • sloc: perl: 11,061; makefile: 7
file content (98 lines) | stat: -rw-r--r-- 1,850 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
use strict;
use warnings;
use Test::More;
use Class::MOP;

BEGIN {
  my %hidden = map { (my $m = "$_.pm") =~ s{::}{/}g; $m => 1 } qw(
    Foo
    Bar
  );
  unshift @INC, sub {
    return unless exists $hidden{$_[1]};
    die "Can't locate $_[1] in \@INC (hidden)\n";
  };
}

BEGIN {
  package TestRole;
  $INC{'TestRole'} = __FILE__;
  use Moose::Role;

  sub a { 'a' }
  sub b { 'b' }

  package Catalyst::TraitFor::Request::Foo;
  $INC{'Catalyst/TraitFor/Request/Foo.pm'} = __FILE__;
  use Moose::Role;

  sub c { 'c' }

  package TestApp::TraitFor::Request::Bar;
  $INC{'TestApp/TraitFor/Request/Bar.pm'} = __FILE__;
  use Moose::Role;

  sub d { 'd' }

  package Catalyst::TraitFor::Response::Foo;
  $INC{'Catalyst/TraitFor/Response/Foo.pm'} = __FILE__;

  use Moose::Role;

  sub c { 'c' }

  package TestApp::TraitFor::Response::Bar;
  $INC{'TestApp/TraitFor/Response/Bar.pm'} = __FILE__;

  use Moose::Role;

  sub d { 'd' }
}

BEGIN {
  package TestApp::Controller::Root;
  $INC{'TestApp/Controller/Root.pm'} = __FILE__;

  use Moose;

  BEGIN { extends 'Catalyst::Controller' };

  sub root :Path('/') {}
}

{
  package TestApp;
  $INC{'TestApp.pm'} = __FILE__;

  use Catalyst;

  __PACKAGE__->request_class_traits([qw/TestRole Foo Bar/]);
  __PACKAGE__->response_class_traits([qw/TestRole Foo Bar/]);
  __PACKAGE__->stats_class_traits([qw/TestRole/]);

  __PACKAGE__->setup;
}


foreach my $class_prefix (qw/request response stats/) {
  my $method = 'composed_' .$class_prefix. '_class';
  ok(
    Class::MOP::class_of(TestApp->$method)->does_role('TestRole'),
    "$method does TestRole",
  );
}

use Catalyst::Test 'TestApp';

my ($res, $c) = ctx_request '/';

is $c->req->a, 'a';
is $c->req->b, 'b';
is $c->req->c, 'c';
is $c->req->d, 'd';
is $c->res->a, 'a';
is $c->res->b, 'b';
is $c->res->c, 'c';
is $c->res->d, 'd';

done_testing;