5 use DBIx::Class::Schema::Loader::Optional::Dependencies ();
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'));
13 use dbixcsl_dumper_tests;
14 my $t = 'dbixcsl_dumper_tests';
18 # first dump a fresh use_moose=1 schema
20 classname => 'DBICTest::DumpMore::1',
23 result_base_class => 'My::ResultBaseClass',
24 schema_base_class => 'My::SchemaBaseClass',
27 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
28 qr/Schema dump completed/,
32 qr/\nuse Moose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/,
33 qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/,
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.*/,
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.*/,
48 # now upgrade a fresh non-moose schema to use_moose=1
50 classname => 'DBICTest::DumpMore::1',
53 result_base_class => 'My::ResultBaseClass',
54 schema_base_class => 'My::SchemaBaseClass',
57 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
58 qr/Schema dump completed/,
62 qr/\nuse base 'My::SchemaBaseClass';\n/,
65 qr/\nuse base 'My::ResultBaseClass';\n/,
68 qr/\nuse base 'My::ResultBaseClass';\n/,
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});
77 classname => 'DBICTest::DumpMore::1',
80 result_base_class => 'My::ResultBaseClass',
81 schema_base_class => 'My::SchemaBaseClass',
84 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
85 qr/Schema dump completed/,
89 qr/\nuse Moose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/,
90 qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/,
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 qr/# XXX This is my custom content XXX/,
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.*/,
106 # check with a fresh non-moose schema that Moose custom content added to a use_moose=0 schema is not repeated
108 classname => 'DBICTest::DumpMore::1',
110 result_base_class => 'My::ResultBaseClass',
111 schema_base_class => 'My::SchemaBaseClass',
114 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
115 qr/Schema dump completed/,
119 qr/\nuse base 'My::SchemaBaseClass';\n/,
122 qr/\nuse base 'My::ResultBaseClass';\n/,
125 qr/\nuse base 'My::ResultBaseClass';\n/,
130 # add Moose custom content then check it is not repeated
131 # after that regen again *without* the use_moose flag, make
132 # sure moose isn't stripped away
133 $t->append_to_class('DBICTest::DumpMore::1::Foo', qq{use Moose;\n__PACKAGE__->meta->make_immutable;\n1;\n});
135 for my $supply_use_moose (1, 0) {
137 classname => 'DBICTest::DumpMore::1',
139 $supply_use_moose ? (use_moose => 1) : (),
140 result_base_class => 'My::ResultBaseClass',
141 schema_base_class => 'My::SchemaBaseClass',
144 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
145 qr/Schema dump completed/,
149 qr/\nuse Moose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/,
150 qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/,
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.*/,
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.*/,
163 # qr/\nuse Moose;\n.*\nuse Moose;/s, # TODO
164 qr/\n__PACKAGE__->meta->make_immutable;\n.*\n__PACKAGE__->meta->make_immutable;/s,
170 # check that a moose schema can *not* be downgraded
173 classname => 'DBICTest::DumpMore::1',
176 result_base_class => 'My::ResultBaseClass',
177 schema_base_class => 'My::SchemaBaseClass',
180 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
182 error => qr/\QIt is not possible to "downgrade" a schema that was loaded with use_moose => 1\E/,