Simplify test code a bit
[gitmo/MooseX-Compiler.git] / t / remove-use-moose.t
1 use strict;
2 use warnings;
3
4 use lib 't/lib';
5
6 use Test::Requires {
7     'MooseX::StrictConstructor' => '0.01',
8 };
9
10 use Test::MooseX::Compiler qw( save_class );
11 use Test::More 0.88;
12
13 use MooseX::Compiler;
14
15 {
16     my $code = <<'EOF';
17 use Moose;
18
19 sub foo { 42 }
20 EOF
21
22     my $class = 'Test::Class1';
23     save_class( $class, $code );
24
25     my $compiler = MooseX::Compiler->new(
26         class => $class,
27     );
28
29     my $compiled = $compiler->compile_class();
30
31     like(
32         $compiled,
33         qr/^\#\s*use Moose;\n/m,
34         'use Moose declaration is commented out in compiled code'
35     );
36
37     unlike(
38         $compiled,
39         qr/^use Moose;\n/m,
40         'original use Moose declaration is removed from compiled code'
41     );
42 }
43
44 {
45     my $code = <<'EOF';
46 use Moose 0.1;
47
48 sub foo { 42 }
49
50 1;
51 EOF
52
53     my $class = 'Test::Class2';
54     save_class( $class, $code );
55
56     my $compiler = MooseX::Compiler->new(
57         class => $class,
58     );
59
60     my $compiled = $compiler->compile_class();
61
62     unlike(
63         $compiled,
64         qr/^\#\s*use Moose;\n/m,
65         'use Moose declaration is not commented out in compiled code'
66     );
67
68     like(
69         $compiled,
70         qr/^use\s+Moose\s+0\.1\s+\(\)\s*;\n/m,
71         'original use Moose declaration is preserved, but () is added to prevent importing'
72     );
73 }
74
75 {
76     my $code = <<'EOF';
77 use Moose;
78 use MooseX::StrictConstructor;
79
80 sub foo { 42 }
81 EOF
82
83     my $class = 'Test::Class3';
84     save_class( $class, $code );
85
86     my $compiler = MooseX::Compiler->new(
87         class => $class,
88     );
89
90     my $compiled = $compiler->compile_class();
91
92     like(
93         $compiled,
94         qr/^\#\s*use Moose;\n/m,
95         'use Moose declaration is commented out in compiled code'
96     );
97
98     like(
99         $compiled,
100         qr/^\#\s*use MooseX::StrictConstructor;\n/m,
101         'use MooseX::StrictConstructor declaration is commented out in compiled code'
102     );
103
104     unlike(
105         $compiled,
106         qr/^use Moose;\n/m,
107         'original use Moose declaration is removed from compiled code'
108     );
109
110     unlike(
111         $compiled,
112         qr/^use MooseX::StrictConstructor;\n/m,
113         'original use MooseX::StrictConstructor declaration is removed from compiled code'
114     );
115 }
116
117 {
118     my $code = <<'EOF';
119 use Moose;
120 use MooseX::StrictConstructor 0.01;
121
122 sub foo { 42 }
123 EOF
124
125     my $class = 'Test::Class4';
126     save_class( $class, $code );
127
128     my $compiler = MooseX::Compiler->new(
129         class => $class,
130     );
131
132     my $compiled = $compiler->compile_class();
133
134     like(
135         $compiled,
136         qr/^\#\s*use Moose;\n/m,
137         'use Moose declaration is commented out in compiled code'
138     );
139
140     unlike(
141         $compiled,
142         qr/^use Moose;\n/m,
143         'original use Moose declaration is removed from compiled code'
144     );
145
146     unlike(
147         $compiled,
148         qr/^\#\s*use MooseX::StrictConstructor;\n/m,
149         'use MooseX::StrictConstructor declaration is not commented out in compiled code'
150     );
151
152     like(
153         $compiled,
154         qr/^use\s+MooseX::StrictConstructor\s+0\.01\s+\(\)\s*;\n/m,
155         'original use MooseX::StrictConstructor declaration is preserved, but () is added to prevent importing'
156     );
157 }
158
159 done_testing();