merge trunk to pluggable errors
[gitmo/Moose.git] / t / 000_recipes / basics / 006_augment_inner.t
CommitLineData
a909a4df 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
e606ae5f 6use Test::More tests => 2;
a909a4df 7use Test::Exception;
8
e606ae5f 9
a909a4df 10
11## Augment/Inner
12
13{
14 package Document::Page;
15 use Moose;
16
17 has 'body' => (is => 'rw', isa => 'Str', default => sub {''});
18
19 sub create {
20 my $self = shift;
21 $self->open_page;
22 inner();
23 $self->close_page;
24 }
25
26 sub append_body {
27 my ($self, $appendage) = @_;
28 $self->body($self->body . $appendage);
29 }
30
31 sub open_page { (shift)->append_body('<page>') }
32 sub close_page { (shift)->append_body('</page>') }
33
34 package Document::PageWithHeadersAndFooters;
35 use Moose;
36
37 extends 'Document::Page';
38
39 augment 'create' => sub {
40 my $self = shift;
41 $self->create_header;
42 inner();
43 $self->create_footer;
44 };
45
46 sub create_header { (shift)->append_body('<header/>') }
47 sub create_footer { (shift)->append_body('<footer/>') }
48
49 package TPSReport;
50 use Moose;
51
52 extends 'Document::PageWithHeadersAndFooters';
53
54 augment 'create' => sub {
55 my $self = shift;
56 $self->create_tps_report;
57 };
58
59 sub create_tps_report {
60 (shift)->append_body('<report type="tps"/>')
61 }
62}
63
64my $tps_report = TPSReport->new;
65isa_ok($tps_report, 'TPSReport');
66
67is(
68$tps_report->create,
69q{<page><header/><report type="tps"/><footer/></page>},
70'... got the right TPS report');
71
72
73
74