Commit | Line | Data |
406a97c2 |
1 | use DBIx::Class::Schema::Loader::Optional::Dependencies |
2 | -skip_all_without => 'use_moose'; |
3 | |
71130750 |
4 | use strict; |
f8c2ca5e |
5 | use warnings; |
71130750 |
6 | |
7 | use Test::More; |
71130750 |
8 | |
9 | use lib qw(t/lib); |
10 | use dbixcsl_dumper_tests; |
11 | my $t = 'dbixcsl_dumper_tests'; |
12 | |
13 | $t->cleanup; |
14 | |
15 | # first dump a fresh use_moose=1 schema |
16 | $t->dump_test( |
494e0205 |
17 | classname => 'DBICTest::DumpMore::1', |
18 | options => { |
19 | use_moose => 1, |
20 | result_base_class => 'My::ResultBaseClass', |
21 | schema_base_class => 'My::SchemaBaseClass', |
22 | result_roles => ['TestRole', 'TestRole2'], |
23 | }, |
24 | regexes => { |
25 | schema => [ |
26 | qr/\nuse Moose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::SchemaBaseClass';\n\n/, |
27 | qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/, |
28 | ], |
29 | Foo => [ |
30 | qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/, |
31 | qr/=head1 L<Moose> ROLES APPLIED\n\n=over 4\n\n=item \* L<TestRole>\n\n=item \* L<TestRole2>\n\n=back\n\n=cut\n\n/, |
32 | qr/\nwith 'TestRole', 'TestRole2';\n\n/, |
33 | qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, |
34 | ], |
35 | Bar => [ |
36 | qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/, |
37 | qr/=head1 L<Moose> ROLES APPLIED\n\n=over 4\n\n=item \* L<TestRole>\n\n=item \* L<TestRole2>\n\n=back\n\n=cut\n\n/, |
38 | qr/\nwith 'TestRole', 'TestRole2';\n\n/, |
39 | qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, |
40 | ], |
41 | }, |
71130750 |
42 | ); |
43 | |
44 | $t->cleanup; |
45 | |
7d265d7f |
46 | # check protect_overloads works as expected |
47 | $t->dump_test( |
494e0205 |
48 | classname => 'DBICTest::DumpMore::1', |
49 | options => { |
50 | use_moose => 1, |
51 | only_autoclean => 1, |
52 | }, |
53 | regexes => { |
54 | schema => [ |
55 | qr/\nuse namespace::autoclean;\n/, |
56 | ], |
57 | Foo => [ |
58 | qr/\nuse namespace::autoclean;\n/, |
59 | ], |
60 | }, |
7d265d7f |
61 | ); |
62 | |
63 | $t->cleanup; |
64 | |
71130750 |
65 | # now upgrade a fresh non-moose schema to use_moose=1 |
66 | $t->dump_test( |
494e0205 |
67 | classname => 'DBICTest::DumpMore::1', |
68 | options => { |
69 | use_moose => 0, |
70 | result_base_class => 'My::ResultBaseClass', |
71 | schema_base_class => 'My::SchemaBaseClass', |
72 | }, |
73 | regexes => { |
74 | schema => [ |
75 | qr/\nuse base 'My::SchemaBaseClass';\n/, |
76 | ], |
77 | Foo => [ |
78 | qr/\nuse base 'My::ResultBaseClass';\n/, |
79 | ], |
80 | Bar => [ |
81 | qr/\nuse base 'My::ResultBaseClass';\n/, |
82 | ], |
83 | }, |
71130750 |
84 | ); |
85 | |
86 | # check that changed custom content is upgraded for Moose bits |
87 | $t->append_to_class('DBICTest::DumpMore::1::Foo', q{# XXX This is my custom content XXX}); |
88 | |
89 | $t->dump_test( |
494e0205 |
90 | classname => 'DBICTest::DumpMore::1', |
91 | options => { |
92 | use_moose => 1, |
93 | result_base_class => 'My::ResultBaseClass', |
94 | schema_base_class => 'My::SchemaBaseClass', |
95 | }, |
96 | regexes => { |
97 | schema => [ |
98 | qr/\nuse Moose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::SchemaBaseClass';\n\n/, |
99 | qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/, |
100 | ], |
101 | Foo => [ |
102 | qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/, |
103 | qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, |
104 | qr/# XXX This is my custom content XXX/, |
105 | ], |
106 | Bar => [ |
107 | qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/, |
108 | qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, |
109 | ], |
110 | }, |
71130750 |
111 | ); |
112 | |
113 | $t->cleanup; |
114 | |
1a8fd949 |
115 | # check with a fresh non-moose schema that Moose custom content added to a use_moose=0 schema is not repeated |
71130750 |
116 | $t->dump_test( |
494e0205 |
117 | classname => 'DBICTest::DumpMore::1', |
118 | options => { |
119 | result_base_class => 'My::ResultBaseClass', |
120 | schema_base_class => 'My::SchemaBaseClass', |
121 | }, |
122 | regexes => { |
123 | schema => [ |
124 | qr/\nuse base 'My::SchemaBaseClass';\n/, |
125 | ], |
126 | Foo => [ |
127 | qr/\nuse base 'My::ResultBaseClass';\n/, |
128 | ], |
129 | Bar => [ |
130 | qr/\nuse base 'My::ResultBaseClass';\n/, |
131 | ], |
132 | }, |
71130750 |
133 | ); |
134 | |
135 | # add Moose custom content then check it is not repeated |
8de81918 |
136 | # after that regen again *without* the use_moose flag, make |
137 | # sure moose isn't stripped away |
1a8fd949 |
138 | $t->append_to_class('DBICTest::DumpMore::1::Foo', qq{use Moose;\n__PACKAGE__->meta->make_immutable;\n1;\n}); |
71130750 |
139 | |
8de81918 |
140 | for my $supply_use_moose (1, 0) { |
494e0205 |
141 | $t->dump_test( |
142 | classname => 'DBICTest::DumpMore::1', |
143 | options => { |
144 | $supply_use_moose ? (use_moose => 1) : (), |
145 | result_base_class => 'My::ResultBaseClass', |
146 | schema_base_class => 'My::SchemaBaseClass', |
147 | }, |
148 | regexes => { |
149 | schema => [ |
150 | qr/\nuse Moose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::SchemaBaseClass';\n\n/, |
151 | qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/, |
152 | ], |
153 | Foo => [ |
154 | qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/, |
155 | qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, |
156 | ], |
157 | Bar => [ |
158 | qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/, |
159 | qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, |
160 | ], |
161 | }, |
162 | neg_regexes => { |
163 | Foo => [ |
164 | # qr/\nuse Moose;\n.*\nuse Moose;/s, # TODO |
165 | qr/\n__PACKAGE__->meta->make_immutable;\n.*\n__PACKAGE__->meta->make_immutable;/s, |
166 | ], |
167 | }, |
168 | ); |
8de81918 |
169 | } |
71130750 |
170 | |
22edddda |
171 | # check that a moose schema can *not* be downgraded |
172 | |
173 | $t->dump_test ( |
494e0205 |
174 | classname => 'DBICTest::DumpMore::1', |
175 | options => { |
176 | use_moose => 0, |
177 | result_base_class => 'My::ResultBaseClass', |
178 | schema_base_class => 'My::SchemaBaseClass', |
179 | }, |
180 | error => qr/\QIt is not possible to "downgrade" a schema that was loaded with use_moose => 1\E/, |
22edddda |
181 | ); |
182 | |
71130750 |
183 | done_testing; |