[Catalyst] C::P::Email and testing
Daniel McBrearty
danielmcbrearty at gmail.com
Mon Dec 18 21:00:56 GMT 2006
I'm not completely following the action class thing, but the way that
seems most logical to me is to write a plugin C::P::EmailTestable that
subclasses C::P::Email
sub email {
if (my $location = $c->config->{test_email}) {
# write a temporary file into $location, and put the filename on the stash
# so the view can link to it
.
.
} else {
# just defer to C::P::Email
$self->super(@_);
}
}
... but I'm thinking, how can one plugin inherit from another? $self
isn't passed ...
not that it's a problem. There are bunch of other ways to do it. Maybe
just a simple helper method somewhere that does the same.
D
On 12/16/06, Jonathan Rockway <jon at jrock.us> wrote:
> On Saturday 16 December 2006 03:08, Sébastien Wagener wrote:
> > On Sat, 2006-12-16 at 07:45 +0100, Daniel McBrearty wrote:
> > > if you have an action that sends an email, how do you write tests for it?
> > >
> > > perhaps print the email to a temp file in test mode? what do you guys do?
> >
> > I am currently considering writing tests for my e-mails too.
> > You could set __PACKAGE__->config->{email} to "Test" if some env
> > variable is set, and dump Email::Send::Test->emails to a file in an end
> > action. Or you could provide a testing action to display (and clear) the
> > sent e-mails.
> > I have a similar problem with the values of my captchas.
> > Btw.: Are there any best practices to hide an action unless in testing
> > mode? Protect it by an ACL rule if an environment variable is set?
>
> I'm not aware of anything that does this now (but I don't look at the ACL
> stuff very often), but you could implement this as an ActionClass:
>
> package MyApp::Action::Testing;
> use base 'Catalyst::Action';
> sub execute {
> my $self = shift;
> die "You can't use this action!" unless $ENV{MYAPP_TESTING};
> return $self->NEXT::execute( @_ );
> }
> 1;
>
> then
>
> package MyApp::Controller::Whatever;
> # ...
> sub foo : Local : ActionClass('Testing') {
> $c->response->body('All tests successful.');
> }
>
> Completely untested, but it should work. Assuming this is useful, I'll CPAN
> it.
>
> --
> package JAPH;use Catalyst qw/-Debug/;($;=JAPH)->config(name => do {
> $,.=reverse qw[Jonathan tsu rehton lre rekca Rockway][$_].[split //,
> ";$;"]->[$_].q; ;for 1..4;$,=~s;^.;;;$,});$;->setup;
>
>
> _______________________________________________
> List: Catalyst at lists.rawmode.org
> Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/
> Dev site: http://dev.catalyst.perl.org/
>
>
>
>
--
Daniel McBrearty
email : danielmcbrearty at gmail.com
www.engoi.com : the multi - language vocab trainer
BTW : 0873928131
More information about the Catalyst
mailing list