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',
25 result_roles => ['TestRole', 'TestRole2'],
29 qr/\nuse Moose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::SchemaBaseClass';\n\n/,
30 qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/,
33 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/,
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/,
35 qr/\nwith 'TestRole', 'TestRole2';\n\n/,
36 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
39 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/,
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/,
41 qr/\nwith 'TestRole', 'TestRole2';\n\n/,
42 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
49 # check protect_overloads works as expected
51 classname => 'DBICTest::DumpMore::1',
58 qr/\nuse namespace::autoclean;\n/,
61 qr/\nuse namespace::autoclean;\n/,
68 # now upgrade a fresh non-moose schema to use_moose=1
70 classname => 'DBICTest::DumpMore::1',
73 result_base_class => 'My::ResultBaseClass',
74 schema_base_class => 'My::SchemaBaseClass',
78 qr/\nuse base 'My::SchemaBaseClass';\n/,
81 qr/\nuse base 'My::ResultBaseClass';\n/,
84 qr/\nuse base 'My::ResultBaseClass';\n/,
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});
93 classname => 'DBICTest::DumpMore::1',
96 result_base_class => 'My::ResultBaseClass',
97 schema_base_class => 'My::SchemaBaseClass',
101 qr/\nuse Moose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::SchemaBaseClass';\n\n/,
102 qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/,
105 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/,
106 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
107 qr/# XXX This is my custom content XXX/,
110 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/,
111 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
118 # check with a fresh non-moose schema that Moose custom content added to a use_moose=0 schema is not repeated
120 classname => 'DBICTest::DumpMore::1',
122 result_base_class => 'My::ResultBaseClass',
123 schema_base_class => 'My::SchemaBaseClass',
127 qr/\nuse base 'My::SchemaBaseClass';\n/,
130 qr/\nuse base 'My::ResultBaseClass';\n/,
133 qr/\nuse base 'My::ResultBaseClass';\n/,
138 # add Moose custom content then check it is not repeated
139 # after that regen again *without* the use_moose flag, make
140 # sure moose isn't stripped away
141 $t->append_to_class('DBICTest::DumpMore::1::Foo', qq{use Moose;\n__PACKAGE__->meta->make_immutable;\n1;\n});
143 for my $supply_use_moose (1, 0) {
145 classname => 'DBICTest::DumpMore::1',
147 $supply_use_moose ? (use_moose => 1) : (),
148 result_base_class => 'My::ResultBaseClass',
149 schema_base_class => 'My::SchemaBaseClass',
153 qr/\nuse Moose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::SchemaBaseClass';\n\n/,
154 qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/,
157 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/,
158 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
161 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/,
162 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
167 # qr/\nuse Moose;\n.*\nuse Moose;/s, # TODO
168 qr/\n__PACKAGE__->meta->make_immutable;\n.*\n__PACKAGE__->meta->make_immutable;/s,
174 # check that a moose schema can *not* be downgraded
177 classname => 'DBICTest::DumpMore::1',
180 result_base_class => 'My::ResultBaseClass',
181 schema_base_class => 'My::SchemaBaseClass',
183 error => qr/\QIt is not possible to "downgrade" a schema that was loaded with use_moose => 1\E/,