Tweaks
[gitmo/Mouse.git] / Moose-t-failing / 050_metaclasses / 023_easy_init_meta.t
CommitLineData
41888e7d 1#!/usr/bin/perl
c47cf415 2# This is automatically generated by author/import-moose-test.pl.
3# DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!
4use t::lib::MooseCompat;
41888e7d 5
6use strict;
7use warnings;
8
c47cf415 9use Test::More;
10$TODO = q{Mouse is not yet completed};
41888e7d 11use Test::Mouse qw(does_ok);
12
13{
14 package Foo::Trait::Class;
15 use Mouse::Role;
16}
17
18{
19 package Foo::Trait::Attribute;
20 use Mouse::Role;
21}
22
23{
24 package Foo::Role::Base;
25 use Mouse::Role;
26}
27
28{
29 package Foo::Exporter;
30 use Mouse::Exporter;
31
32 Mouse::Exporter->setup_import_methods(
c47cf415 33 class_metaroles => {
34 class => ['Foo::Trait::Class'],
35 attribute => ['Foo::Trait::Attribute'],
36 },
37 role_metaroles => { role => ['Foo::Trait::Class'] },
38 base_class_roles => ['Foo::Role::Base'],
41888e7d 39 );
40}
41
42{
43 package Foo;
44 use Mouse;
45 Foo::Exporter->import;
46
47 has foo => (is => 'ro');
48
49 ::does_ok(Foo->meta, 'Foo::Trait::Class');
50 ::does_ok(Foo->meta->get_attribute('foo'), 'Foo::Trait::Attribute');
51 ::does_ok('Foo', 'Foo::Role::Base');
52}
53
54{
85476837 55 package Foo::Exporter::WithMouse;
41888e7d 56 use Mouse ();
57 use Mouse::Exporter;
58
c47cf415 59 my ( $import, $unimport, $init_meta )
60 = Mouse::Exporter->build_import_methods(
61 also => 'Mouse',
62 class_metaroles => {
63 class => ['Foo::Trait::Class'],
64 attribute => ['Foo::Trait::Attribute'],
65 },
66 base_class_roles => ['Foo::Role::Base'],
67 install => [qw(import unimport)],
41888e7d 68 );
69
70 sub init_meta {
71 my $package = shift;
72 my %options = @_;
73 ::pass('custom init_meta was called');
74 Mouse->init_meta(%options);
75 return $package->$init_meta(%options);
76 }
77}
78
79{
80 package Foo2;
85476837 81 Foo::Exporter::WithMouse->import;
41888e7d 82
83 has(foo => (is => 'ro'));
84
85 ::isa_ok('Foo2', 'Mouse::Object');
86 ::isa_ok(Foo2->meta, 'Mouse::Meta::Class');
87 ::does_ok(Foo2->meta, 'Foo::Trait::Class');
88 ::does_ok(Foo2->meta->get_attribute('foo'), 'Foo::Trait::Attribute');
89 ::does_ok('Foo2', 'Foo::Role::Base');
90}
91
92{
93 package Foo::Role;
94 use Mouse::Role;
95 Foo::Exporter->import;
96
97 ::does_ok(Foo::Role->meta, 'Foo::Trait::Class');
98}
99
100{
85476837 101 package Foo::Exporter::WithMouseRole;
41888e7d 102 use Mouse::Role ();
103 use Mouse::Exporter;
104
c47cf415 105 my ( $import, $unimport, $init_meta )
106 = Mouse::Exporter->build_import_methods(
107 also => 'Mouse::Role',
108 role_metaroles => {
109 role => ['Foo::Trait::Class'],
110 attribute => ['Foo::Trait::Attribute'],
111 },
112 install => [qw(import unimport)],
41888e7d 113 );
114
115 sub init_meta {
116 my $package = shift;
117 my %options = @_;
118 ::pass('custom init_meta was called');
119 Mouse::Role->init_meta(%options);
120 return $package->$init_meta(%options);
121 }
122}
123
124{
125 package Foo2::Role;
85476837 126 Foo::Exporter::WithMouseRole->import;
41888e7d 127
128 ::isa_ok(Foo2::Role->meta, 'Mouse::Meta::Role');
129 ::does_ok(Foo2::Role->meta, 'Foo::Trait::Class');
130}
c47cf415 131
132done_testing;