ARGH! use_moose => 1, reload without any option, BOOM
[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 => {
52 result_base_class => 'My::ResultBaseClass',
53 schema_base_class => 'My::SchemaBaseClass',
54 },
55 warnings => [
56 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
57 qr/Schema dump completed/,
58 ],
59 regexes => {
60 schema => [
61 qr/\nuse base 'My::SchemaBaseClass';\n/,
62 ],
63 Foo => [
64 qr/\nuse base 'My::ResultBaseClass';\n/,
65 ],
66 Bar => [
67 qr/\nuse base 'My::ResultBaseClass';\n/,
68 ],
69 },
70);
71
72# check that changed custom content is upgraded for Moose bits
73$t->append_to_class('DBICTest::DumpMore::1::Foo', q{# XXX This is my custom content XXX});
74
75$t->dump_test(
76 classname => 'DBICTest::DumpMore::1',
77 options => {
78 use_moose => 1,
79 result_base_class => 'My::ResultBaseClass',
80 schema_base_class => 'My::SchemaBaseClass',
81 },
82 warnings => [
83 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
84 qr/Schema dump completed/,
85 ],
86 regexes => {
87 schema => [
88 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/,
89 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
90 ],
91 Foo => [
92 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
93 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
94 ],
95 Bar => [
96 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
97 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
98 ],
99 },
100);
101
102$t->cleanup;
103
104# now add the Moose custom content to unapgraded schema, and make sure it is not repeated
105$t->dump_test(
106 classname => 'DBICTest::DumpMore::1',
107 options => {
108 result_base_class => 'My::ResultBaseClass',
109 schema_base_class => 'My::SchemaBaseClass',
110 },
111 warnings => [
112 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
113 qr/Schema dump completed/,
114 ],
115 regexes => {
116 schema => [
117 qr/\nuse base 'My::SchemaBaseClass';\n/,
118 ],
119 Foo => [
120 qr/\nuse base 'My::ResultBaseClass';\n/,
121 ],
122 Bar => [
123 qr/\nuse base 'My::ResultBaseClass';\n/,
124 ],
125 },
126);
127
128# add Moose custom content then check it is not repeated
8de81918 129# after that regen again *without* the use_moose flag, make
130# sure moose isn't stripped away
71130750 131$t->append_to_class('DBICTest::DumpMore::1::Foo', qq{__PACKAGE__->meta->make_immutable;\n1;\n});
132
8de81918 133for my $supply_use_moose (1, 0) {
134 $t->dump_test(
135 classname => 'DBICTest::DumpMore::1',
136 options => {
137 $supply_use_moose ? (use_moose => 1) : (),
138 result_base_class => 'My::ResultBaseClass',
139 schema_base_class => 'My::SchemaBaseClass',
140 },
141 warnings => [
142 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
143 qr/Schema dump completed/,
144 ],
145 regexes => {
146 schema => [
147 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/,
148 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
149 ],
150 Foo => [
151 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
152 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
153 ],
154 Bar => [
155 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
156 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
157 ],
158 },
159 neg_regexes => {
160 Foo => [
161 qr/\n__PACKAGE__->meta->make_immutable;\n.*\n__PACKAGE__->meta->make_immutable;/s,
162 ],
163 },
164 );
165}
71130750 166
167done_testing;