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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
package t::App::PRT::Command::AddMethod;
use t::test;
sub _require : Test(startup => 1) {
my ($self) = @_;
use_ok 'App::PRT::Command::AddMethod';
}
sub instantiate : Tests {
isa_ok App::PRT::Command::AddMethod->new, 'App::PRT::Command::AddMethod';
}
sub register : Tests {
my $command = App::PRT::Command::AddMethod->new;
$command->register('sub one { 1 }');
is $command->code, 'sub one { 1 }';
}
sub execute : Tests {
my $directory = t::test::prepare_test_code('dinner');
my $command = App::PRT::Command::AddMethod->new;
$command->register(<<SUB);
sub one {
return 1;
}
SUB
my $human_file = "$directory/lib/My/Human.pm";
subtest 'target file' => sub {
$command->execute($human_file);
is file($human_file)->slurp, <<'CODE', 'sub one added to last';
package My::Human;
use strict;
use warnings;
sub new {
my ($class, $name) = @_;
bless {
name => $name,
}, $class;
}
sub name {
my ($self) = @_;
$self->{name};
}
sub eat {
my ($self, $food) = @_;
print "@{[ $self->name ]} is eating @{[ $food->name ]}.\n";
}
sub one {
return 1;
}
1;
CODE
};
}
sub execute_with_comment : Tests {
my $directory = t::test::prepare_test_code('dinner');
my $command = App::PRT::Command::AddMethod->new;
$command->register(<<SUB);
# returns 1
# You can use when you want one
sub one {
return 1;
}
SUB
my $human_file = "$directory/lib/My/Human.pm";
subtest 'target file' => sub {
$command->execute($human_file);
is file($human_file)->slurp, <<'CODE', 'sub one added to last';
package My::Human;
use strict;
use warnings;
sub new {
my ($class, $name) = @_;
bless {
name => $name,
}, $class;
}
sub name {
my ($self) = @_;
$self->{name};
}
sub eat {
my ($self, $food) = @_;
print "@{[ $self->name ]} is eating @{[ $food->name ]}.\n";
}
# returns 1
# You can use when you want one
sub one {
return 1;
}
1;
CODE
};
}
|