File Coverage

blib/lib/MojoX/CustomTemplateFileParser/Plugin/To/Test.pm
Criterion Covered Total %
statement 40 41 97.5
branch 9 12 75.0
condition n/a
subroutine 5 5 100.0
pod 1 1 100.0
total 55 59 93.2


line stmt bran cond sub pod time code
1             package MojoX::CustomTemplateFileParser::Plugin::To::Test;
2              
3 1     1   11052 use strict;
  1         3  
  1         44  
4 1     1   6 use warnings;
  1         1  
  1         34  
5 1     1   16 use 5.10.1;
  1         4  
  1         80  
6             our $VERSION = '0.10';
7              
8 1     1   6 use Moose::Role;
  1         3  
  1         12  
9              
10             sub to_test {
11 1     1 1 11913 my $self = shift;
12 1         15 my $baseurl = $self->_get_baseurl;
13 1         6 my $filename = $self->_get_filename;
14              
15 1 50       47 if(!scalar keys %{ $self->structure }) {
  1         57  
16 0         0 $self->parse;
17             }
18 1         51 my $info = $self->structure;
19              
20 1         26 my @parsed = join "\n" => @{ $info->{'head_lines'} };
  1         10  
21              
22 1         5 TEST:
23 1         2 foreach my $test (@{ $info->{'tests'} }) {
24 3 50       5 next TEST if !scalar @{ $test->{'lines_template'} };
  3         15  
25              
26 3 100       26 my $expected_var = sprintf '$expected_%s%s' => $test->{'test_name'}, ($test->{'loop_variable'} ? "_$test->{'loop_variable'}" : '');
27              
28 3 100       21 push @parsed => "\n#** test from $filename, line $test->{'test_start_line'}" . ($test->{'loop_variable'} ? ", loop: $test->{'loop_variable'}" : '');
29 3         7 push @parsed => sprintf 'my %s = qq{%s};' => $expected_var, join "\n" => @{ $test->{'lines_expected'} };
  3         16  
30              
31 3         13 push @parsed => sprintf q{get '/%s' => '%s';} => $test->{'test_name'}, $test->{'test_name'};
32 3 100       35 push @parsed => sprintf q{$test->get_ok('/%s')->status_is(200)->trimmed_content_is(%s, '%s');}
33             => $test->{'test_name'}, $expected_var, sprintf qq{Matched trimmed content in $filename, line $test->{'test_start_line'}%s}
34             => $test->{'loop_variable'} ? ", loop: $test->{'loop_variable'}" : '';
35             }
36              
37 1         4 push @parsed => 'done_testing();';
38 1         3 push @parsed => '__DATA__';
39              
40              
41 1         2 foreach my $test (@{ $info->{'tests'} }) {
  1         5  
42 3 50       5 next TEST if !scalar @{ $test->{'lines_template'} };
  3         12  
43              
44 3         11 push @parsed => sprintf '@@ %s.html.ep' => $test->{'test_name'};
45 3         5 push @parsed => join "\n" => @{ $test->{'lines_template'} };
  3         10  
46             }
47              
48 1         27 return join ("\n\n" => @parsed) . "\n";
49             }
50              
51             1;
52              
53             =encoding utf-8
54              
55             =head1 NAME
56              
57             MojoX::CustomTemplateFileParser::Plugin::To::Test - Create tests
58              
59             =head1 SYNOPSIS
60              
61             use MojoX::CustomTemplateFileParser;
62              
63             my $parser = MojoX::CustomTemplateFileParser->new(path => '/path/to/file.mojo', output => ['Test']);
64              
65             print $parser->to_test;
66              
67             =head1 DESCRIPTION
68              
69             MojoX::CustomTemplateFileParser::Plugin::To::Test is an output plugin to L<MojoX::CustomTemplateFileParser>.
70              
71             =head2 to_test()
72              
73             This method is added to L<MojoX::CustomTemplateFileParser> objects created with C<output =E<gt> ['Test']>.
74              
75             It returns a string ready to be put in a L<Test::More> file.
76              
77             =head1 SEE ALSO
78              
79             =over 4
80              
81             =item * L<Dist::Zilla::Plugin::Test::CreateFromMojoTemplates>
82              
83             =item * L<MojoX::CustomTemplateFileParser::Plugin::To::Html>
84              
85             =item * L<MojoX::CustomTemplateFileParser::Plugin::To::Pod>
86              
87             =back
88              
89             =head1 AUTHOR
90              
91             Erik Carlsson E<lt>info@code301.comE<gt>
92              
93             =head1 COPYRIGHT
94              
95             Copyright 2014- Erik Carlsson
96              
97             =head1 LICENSE
98              
99             This library is free software; you can redistribute it and/or modify
100             it under the same terms as Perl itself.
101              
102             =cut