Add use_moo option
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 28dump_use_moo.t
1 use DBIx::Class::Schema::Loader::Optional::Dependencies
2     -skip_all_without => 'use_moo';
3
4 use strict;
5 use warnings;
6
7 use Test::More;
8
9 use lib qw(t/lib);
10 use dbixcsl_dumper_tests;
11 my $t = 'dbixcsl_dumper_tests';
12
13 $t->cleanup;
14
15 # first dump a fresh use_moo=1 schema
16 $t->dump_test(
17     classname => 'DBICTest::DumpMore::1',
18     options => {
19         use_moo => 1,
20         result_base_class => 'My::ResultBaseClass',
21         schema_base_class => 'My::SchemaBaseClass',
22         result_roles => ['TestRole', 'TestRole2'],
23     },
24     regexes => {
25         schema => [
26             qr/\nuse Moo;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/,
27         ],
28         Foo => [
29             qr/\nuse Moo;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
30             qr/=head1 L<Moo> ROLES APPLIED\n\n=over 4\n\n=item \* L<TestRole>\n\n=item \* L<TestRole2>\n\n=back\n\n=cut\n\n/,
31             qr/\nwith 'TestRole', 'TestRole2';\n\n/,
32         ],
33         Bar => [
34             qr/\nuse Moo;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
35             qr/=head1 L<Moo> ROLES APPLIED\n\n=over 4\n\n=item \* L<TestRole>\n\n=item \* L<TestRole2>\n\n=back\n\n=cut\n\n/,
36             qr/\nwith 'TestRole', 'TestRole2';\n\n/,
37         ],
38     },
39 );
40
41 $t->cleanup;
42
43 # now upgrade a fresh non-moo schema to use_moo=1
44 $t->dump_test(
45     classname => 'DBICTest::DumpMore::1',
46     options => {
47         use_moo => 0,
48         result_base_class => 'My::ResultBaseClass',
49         schema_base_class => 'My::SchemaBaseClass',
50     },
51     regexes => {
52         schema => [
53             qr/\nuse base 'My::SchemaBaseClass';\n/,
54         ],
55         Foo => [
56             qr/\nuse base 'My::ResultBaseClass';\n/,
57         ],
58         Bar => [
59             qr/\nuse base 'My::ResultBaseClass';\n/,
60         ],
61     },
62 );
63
64 # check that changed custom content is upgraded for Moo bits
65 $t->append_to_class('DBICTest::DumpMore::1::Foo', q{# XXX This is my custom content XXX});
66
67 $t->dump_test(
68     classname => 'DBICTest::DumpMore::1',
69     options => {
70         use_moo => 1,
71         result_base_class => 'My::ResultBaseClass',
72         schema_base_class => 'My::SchemaBaseClass',
73     },
74     regexes => {
75         schema => [
76             qr/\nuse Moo;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/,
77         ],
78         Foo => [
79             qr/\nuse Moo;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
80             qr/# XXX This is my custom content XXX/,
81         ],
82         Bar => [
83             qr/\nuse Moo;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/,
84         ],
85     },
86 );
87
88 done_testing();
89