Add author test for use strict/warnings
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 26dump_use_moose.t
CommitLineData
406a97c2 1use DBIx::Class::Schema::Loader::Optional::Dependencies
2 -skip_all_without => 'use_moose';
3
71130750 4use strict;
f8c2ca5e 5use warnings;
71130750 6
7use Test::More;
71130750 8
9use lib qw(t/lib);
10use dbixcsl_dumper_tests;
11my $t = 'dbixcsl_dumper_tests';
12
13$t->cleanup;
14
15# first dump a fresh use_moose=1 schema
16$t->dump_test(
17 classname => 'DBICTest::DumpMore::1',
18 options => {
19 use_moose => 1,
20 result_base_class => 'My::ResultBaseClass',
21 schema_base_class => 'My::SchemaBaseClass',
06e06245 22 result_roles => ['TestRole', 'TestRole2'],
71130750 23 },
71130750 24 regexes => {
25 schema => [
7d265d7f 26 qr/\nuse Moose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::SchemaBaseClass';\n\n/,
49643e1d 27 qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/,
71130750 28 ],
29 Foo => [
7d265d7f 30 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/,
017d9734 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/,
06e06245 32 qr/\nwith 'TestRole', 'TestRole2';\n\n/,
71130750 33 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
34 ],
35 Bar => [
7d265d7f 36 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/,
017d9734 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/,
06e06245 38 qr/\nwith 'TestRole', 'TestRole2';\n\n/,
71130750 39 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
40 ],
41 },
42);
43
44$t->cleanup;
45
7d265d7f 46# check protect_overloads works as expected
47$t->dump_test(
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 },
61);
62
63$t->cleanup;
64
71130750 65# now upgrade a fresh non-moose schema to use_moose=1
66$t->dump_test(
67 classname => 'DBICTest::DumpMore::1',
68 options => {
22edddda 69 use_moose => 0,
71130750 70 result_base_class => 'My::ResultBaseClass',
71 schema_base_class => 'My::SchemaBaseClass',
72 },
71130750 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 },
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(
90 classname => 'DBICTest::DumpMore::1',
91 options => {
92 use_moose => 1,
93 result_base_class => 'My::ResultBaseClass',
94 schema_base_class => 'My::SchemaBaseClass',
95 },
71130750 96 regexes => {
97 schema => [
7d265d7f 98 qr/\nuse Moose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::SchemaBaseClass';\n\n/,
49643e1d 99 qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/,
71130750 100 ],
101 Foo => [
7d265d7f 102 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/,
71130750 103 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
1a8fd949 104 qr/# XXX This is my custom content XXX/,
71130750 105 ],
106 Bar => [
7d265d7f 107 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/,
71130750 108 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
109 ],
110 },
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(
117 classname => 'DBICTest::DumpMore::1',
118 options => {
119 result_base_class => 'My::ResultBaseClass',
120 schema_base_class => 'My::SchemaBaseClass',
121 },
71130750 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 },
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 140for my $supply_use_moose (1, 0) {
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 },
8de81918 148 regexes => {
149 schema => [
7d265d7f 150 qr/\nuse Moose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::SchemaBaseClass';\n\n/,
49643e1d 151 qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/,
8de81918 152 ],
153 Foo => [
7d265d7f 154 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/,
8de81918 155 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
156 ],
157 Bar => [
7d265d7f 158 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/,
8de81918 159 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
160 ],
161 },
162 neg_regexes => {
163 Foo => [
1a8fd949 164# qr/\nuse Moose;\n.*\nuse Moose;/s, # TODO
8de81918 165 qr/\n__PACKAGE__->meta->make_immutable;\n.*\n__PACKAGE__->meta->make_immutable;/s,
166 ],
167 },
168 );
169}
71130750 170
22edddda 171# check that a moose schema can *not* be downgraded
172
173$t->dump_test (
174 classname => 'DBICTest::DumpMore::1',
175 options => {
176 use_moose => 0,
177 result_base_class => 'My::ResultBaseClass',
178 schema_base_class => 'My::SchemaBaseClass',
179 },
22edddda 180 error => qr/\QIt is not possible to "downgrade" a schema that was loaded with use_moose => 1\E/,
181);
182
71130750 183done_testing;