Commit | Line | Data |
71130750 |
1 | use warnings; |
2 | use strict; |
3 | |
4 | use Test::More; |
5 | use DBIx::Class::Schema::Loader::Optional::Dependencies (); |
6 | BEGIN { |
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 | |
12 | use lib qw(t/lib); |
13 | use dbixcsl_dumper_tests; |
14 | my $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.*/, |
1a8fd949 |
95 | qr/# XXX This is my custom content XXX/, |
71130750 |
96 | ], |
97 | Bar => [ |
98 | qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/, |
99 | qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, |
100 | ], |
101 | }, |
102 | ); |
103 | |
104 | $t->cleanup; |
105 | |
1a8fd949 |
106 | # check with a fresh non-moose schema that Moose custom content added to a use_moose=0 schema is not repeated |
71130750 |
107 | $t->dump_test( |
108 | classname => 'DBICTest::DumpMore::1', |
109 | options => { |
110 | result_base_class => 'My::ResultBaseClass', |
111 | schema_base_class => 'My::SchemaBaseClass', |
112 | }, |
113 | warnings => [ |
114 | qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /, |
115 | qr/Schema dump completed/, |
116 | ], |
117 | regexes => { |
118 | schema => [ |
119 | qr/\nuse base 'My::SchemaBaseClass';\n/, |
120 | ], |
121 | Foo => [ |
122 | qr/\nuse base 'My::ResultBaseClass';\n/, |
123 | ], |
124 | Bar => [ |
125 | qr/\nuse base 'My::ResultBaseClass';\n/, |
126 | ], |
127 | }, |
128 | ); |
129 | |
130 | # add Moose custom content then check it is not repeated |
8de81918 |
131 | # after that regen again *without* the use_moose flag, make |
132 | # sure moose isn't stripped away |
1a8fd949 |
133 | $t->append_to_class('DBICTest::DumpMore::1::Foo', qq{use Moose;\n__PACKAGE__->meta->make_immutable;\n1;\n}); |
71130750 |
134 | |
8de81918 |
135 | for my $supply_use_moose (1, 0) { |
136 | $t->dump_test( |
137 | classname => 'DBICTest::DumpMore::1', |
138 | options => { |
139 | $supply_use_moose ? (use_moose => 1) : (), |
140 | result_base_class => 'My::ResultBaseClass', |
141 | schema_base_class => 'My::SchemaBaseClass', |
142 | }, |
143 | warnings => [ |
144 | qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /, |
145 | qr/Schema dump completed/, |
146 | ], |
147 | regexes => { |
148 | schema => [ |
149 | qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/, |
150 | qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, |
151 | ], |
152 | Foo => [ |
153 | qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/, |
154 | qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, |
155 | ], |
156 | Bar => [ |
157 | qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/, |
158 | qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, |
159 | ], |
160 | }, |
161 | neg_regexes => { |
162 | Foo => [ |
1a8fd949 |
163 | # qr/\nuse Moose;\n.*\nuse Moose;/s, # TODO |
8de81918 |
164 | qr/\n__PACKAGE__->meta->make_immutable;\n.*\n__PACKAGE__->meta->make_immutable;/s, |
165 | ], |
166 | }, |
167 | ); |
168 | } |
71130750 |
169 | |
22edddda |
170 | # check that a moose schema can *not* be downgraded |
171 | |
172 | $t->dump_test ( |
173 | classname => 'DBICTest::DumpMore::1', |
174 | options => { |
175 | use_moose => 0, |
176 | result_base_class => 'My::ResultBaseClass', |
177 | schema_base_class => 'My::SchemaBaseClass', |
178 | }, |
179 | warnings => [ |
180 | qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /, |
181 | ], |
182 | error => qr/\QIt is not possible to "downgrade" a schema that was loaded with use_moose => 1\E/, |
183 | ); |
184 | |
71130750 |
185 | done_testing; |