File: 006_augment_inner.t

package info (click to toggle)
libmoose-perl 0.54-1
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 1,496 kB
  • ctags: 448
  • sloc: perl: 15,125; makefile: 10
file content (76 lines) | stat: -rw-r--r-- 1,444 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 3;
use Test::Exception;

BEGIN {
    use_ok('Moose');           
}

## Augment/Inner

{
    package Document::Page;
    use Moose;

    has 'body' => (is => 'rw', isa => 'Str', default => sub {''});

    sub create {
        my $self = shift;
        $self->open_page;
        inner();
        $self->close_page;
    }

    sub append_body { 
        my ($self, $appendage) = @_;
        $self->body($self->body . $appendage);
    }

    sub open_page  { (shift)->append_body('<page>') }
    sub close_page { (shift)->append_body('</page>') }  

    package Document::PageWithHeadersAndFooters;
    use Moose;

    extends 'Document::Page';

    augment 'create' => sub {
        my $self = shift;
        $self->create_header;
        inner();
        $self->create_footer;
    };

    sub create_header { (shift)->append_body('<header/>') }
    sub create_footer { (shift)->append_body('<footer/>') }  

    package TPSReport;
    use Moose;

    extends 'Document::PageWithHeadersAndFooters';

    augment 'create' => sub {
        my $self = shift;
        $self->create_tps_report;
    };

    sub create_tps_report {
       (shift)->append_body('<report type="tps"/>') 
    }    
}

my $tps_report = TPSReport->new;
isa_ok($tps_report, 'TPSReport');

is(
$tps_report->create, 
q{<page><header/><report type="tps"/><footer/></page>},
'... got the right TPS report');