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