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