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