Don't assume a loader run will die right away, it may very well
[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
129
130$t->append_to_class('DBICTest::DumpMore::1::Foo', qq{__PACKAGE__->meta->make_immutable;\n1;\n});
131
132$t->dump_test(
133 classname => 'DBICTest::DumpMore::1',
134 options => {
135 use_moose => 1,
136 result_base_class => 'My::ResultBaseClass',
137 schema_base_class => 'My::SchemaBaseClass',
138 },
139 warnings => [
140 qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /,
141 qr/Schema dump completed/,
142 ],
143 regexes => {
144 schema => [
145 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/,
146 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
147 ],
148 Foo => [
149 qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
150 qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/,
151 ],
152 Bar => [
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 },
157 neg_regexes => {
158 Foo => [
159 qr/\n__PACKAGE__->meta->make_immutable;\n.*\n__PACKAGE__->meta->make_immutable;/s,
160 ],
161 },
162);
163
164done_testing;