File: inject_component_util.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 (67 lines) | stat: -rw-r--r-- 1,892 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
use strict;
use warnings;
use Test::More;
use FindBin;
use lib "$FindBin::Bin/lib";

BEGIN {
  package RoleTest1;
  use Moose::Role;

  sub aaa { 'aaa' }

 $INC{'RoleTest1.pm'} = __FILE__;

  package RoleTest2;
  use Moose::Role;

  sub bbb { 'bbb' }

 $INC{'RoleTest2.pm'} = __FILE__;

  package Model::Banana;
  use base qw/Catalyst::Model/;

 $INC{'Model/Banana.pm'} = __FILE__;

  package Model::BananaMoose;

  use Moose;
  extends 'Catalyst::Model';

  Model::BananaMoose->meta->make_immutable;
 $INC{'Model/BananaMoose.pm'} = __FILE__;
}

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

  use Moose;
  use Catalyst;
  use Catalyst::Utils;

  after 'setup_components' => sub {
      my $self = shift;
      Catalyst::Utils::inject_component( into => __PACKAGE__, component => 'Model::Banana' );
      Catalyst::Utils::inject_component( into => __PACKAGE__, component => 'Test::Apple' );
      Catalyst::Utils::inject_component( into => __PACKAGE__, component => 'Model::Banana', as => 'Cherry' );
      Catalyst::Utils::inject_component( into => __PACKAGE__, component => 'Model::BananaMoose', as => 'CherryMoose', traits => ['RoleTest1', 'RoleTest2'] );
      Catalyst::Utils::inject_component( into => __PACKAGE__, component => 'Test::Apple', as => 'Apple' );
      Catalyst::Utils::inject_component( into => __PACKAGE__, component => 'Test::Apple', as => 'Apple2', traits => ['RoleTest1', 'RoleTest2'] );
  };

  TestCatalyst->config( 'home' => '.' );
  TestCatalyst->setup;
}

use Catalyst::Test qw/TestCatalyst/;

ok( TestCatalyst->controller( $_ ) ) for qw/ Apple Test::Apple /;
ok( TestCatalyst->model( $_ ) ) for qw/ Banana Cherry /;
is( TestCatalyst->controller('Apple2')->aaa, 'aaa');
is( TestCatalyst->controller('Apple2')->bbb, 'bbb');
is( TestCatalyst->model('CherryMoose')->aaa, 'aaa');
is( TestCatalyst->model('CherryMoose')->bbb, 'bbb');

done_testing;