handle column accessor collisions with UNIVERSAL methods
[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',
25 },
26 warnings => [
27 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
28 qr/Schema dump completed/,
29 ],
30 regexes => {
31 schema => [
32 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/,
33 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
34 ],
35 Foo => [
36 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
37 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
38 ],
39 Bar => [
40 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
41 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
42 ],
43 },
44);
45
46$t->cleanup;
47
48# now upgrade a fresh non-moose schema to use_moose=1
49$t->dump_test(
50 classname => 'DBICTest::DumpMore::1',
51 options => {
22edddda 52 use_moose => 0,
71130750 53 result_base_class => 'My::ResultBaseClass',
54 schema_base_class => 'My::SchemaBaseClass',
55 },
56 warnings => [
57 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
58 qr/Schema dump completed/,
59 ],
60 regexes => {
61 schema => [
62 qr/\nuse base 'My::SchemaBaseClass';\n/,
63 ],
64 Foo => [
65 qr/\nuse base 'My::ResultBaseClass';\n/,
66 ],
67 Bar => [
68 qr/\nuse base 'My::ResultBaseClass';\n/,
69 ],
70 },
71);
72
73# check that changed custom content is upgraded for Moose bits
74$t->append_to_class('DBICTest::DumpMore::1::Foo', q{# XXX This is my custom content XXX});
75
76$t->dump_test(
77 classname => 'DBICTest::DumpMore::1',
78 options => {
79 use_moose => 1,
80 result_base_class => 'My::ResultBaseClass',
81 schema_base_class => 'My::SchemaBaseClass',
82 },
83 warnings => [
84 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
85 qr/Schema dump completed/,
86 ],
87 regexes => {
88 schema => [
89 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/,
90 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
91 ],
92 Foo => [
93 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
94 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
95 ],
96 Bar => [
97 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
98 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
99 ],
100 },
101);
102
103$t->cleanup;
104
22edddda 105# check with a fresh non-moose schema that Moose custom content added to unapgraded schema, and make sure it is not repeated
71130750 106$t->dump_test(
107 classname => 'DBICTest::DumpMore::1',
108 options => {
109 result_base_class => 'My::ResultBaseClass',
110 schema_base_class => 'My::SchemaBaseClass',
111 },
112 warnings => [
113 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
114 qr/Schema dump completed/,
115 ],
116 regexes => {
117 schema => [
118 qr/\nuse base 'My::SchemaBaseClass';\n/,
119 ],
120 Foo => [
121 qr/\nuse base 'My::ResultBaseClass';\n/,
122 ],
123 Bar => [
124 qr/\nuse base 'My::ResultBaseClass';\n/,
125 ],
126 },
127);
128
129# add Moose custom content then check it is not repeated
8de81918 130# after that regen again *without* the use_moose flag, make
131# sure moose isn't stripped away
71130750 132$t->append_to_class('DBICTest::DumpMore::1::Foo', qq{__PACKAGE__->meta->make_immutable;\n1;\n});
133
8de81918 134for my $supply_use_moose (1, 0) {
135 $t->dump_test(
136 classname => 'DBICTest::DumpMore::1',
137 options => {
138 $supply_use_moose ? (use_moose => 1) : (),
139 result_base_class => 'My::ResultBaseClass',
140 schema_base_class => 'My::SchemaBaseClass',
141 },
142 warnings => [
143 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
144 qr/Schema dump completed/,
145 ],
146 regexes => {
147 schema => [
148 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/,
149 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
150 ],
151 Foo => [
152 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
153 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
154 ],
155 Bar => [
156 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
157 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
158 ],
159 },
160 neg_regexes => {
161 Foo => [
162 qr/\n__PACKAGE__->meta->make_immutable;\n.*\n__PACKAGE__->meta->make_immutable;/s,
163 ],
164 },
165 );
166}
71130750 167
22edddda 168# check that a moose schema can *not* be downgraded
169
170$t->dump_test (
171 classname => 'DBICTest::DumpMore::1',
172 options => {
173 use_moose => 0,
174 result_base_class => 'My::ResultBaseClass',
175 schema_base_class => 'My::SchemaBaseClass',
176 },
177 warnings => [
178 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
179 ],
180 error => qr/\QIt is not possible to "downgrade" a schema that was loaded with use_moose => 1\E/,
181);
182
71130750 183done_testing;