File: 006_augment_inner.t

package info (click to toggle)
libmoosex-declare-perl 0.35-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 424 kB
  • sloc: perl: 1,437; makefile: 2
file content (59 lines) | stat: -rw-r--r-- 1,233 bytes parent folder | download | duplicates (2)
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
#!/usr/bin/perl

use strict;
use warnings;

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

use MooseX::Declare;

class Document::Page {
    has 'body' => (
        is      => 'rw',
        isa     => 'Str',
        default => '',
    );

    method create {
        $self->open_page;
        inner;
        $self->close_page;
    }

    method append_body ($appendage) {
        $self->body($self->body . $appendage);
    }

    method open_page  { $self->append_body('<page>') }
    method close_page { $self->append_body('</page>') }
}

class Document::PageWithHeadersAndFooters extends Document::Page {
    augment create {
        $self->create_header;
        inner;
        $self->create_footer;
    }

    method create_header { $self->append_body('<header/>') }
    method create_footer { $self->append_body('<footer/>') }
}

class TPSReport extends Document::PageWithHeadersAndFooters {
    augment create {
        $self->create_tps_report;
    }

    method create_tps_report {
       $self->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');