my
$recipe
= App::vaporcalc::Recipe->new(
target_quantity
=> 30,
base_nic_per_ml
=> 36,
target_nic_per_ml
=> 12,
target_pg
=> 65,
target_vg
=> 35,
flavor_percentage
=> 20,
);
my
$cmd
= App::vaporcalc::Cmd::Subject::Recipe->new(
recipe
=>
$recipe
);
ok
$cmd
->does(
'App::vaporcalc::Role::UI::Cmd'
),
'does Role::UI::Cmd'
;
ok
$cmd
->verb eq
'show'
,
'default verb ok'
;
my
$res
=
$cmd
->execute;
ok
$res
->action eq
'display'
,
'default verb action ok'
;
isa_ok
$res
->resultset,
'App::vaporcalc::RecipeResultSet'
,
'show returns RecipeResultSet'
;
subtest
'storage'
=>
sub
{
if
($^O eq
'MSWin32'
) {
plan
skip_all
=>
'Temp files fail on some Windows platforms'
}
my
$fh
= File::Temp->new(
UNLINK
=> 1);
my
$fname
=
$fh
->filename;
$cmd
= App::vaporcalc::Cmd::Subject::Recipe->new(
recipe
=>
$recipe
,
verb
=>
'save'
,
params
=> [
$fname
],
);
like
$cmd
->execute->string,
qr/$fname/
,
'save ok'
;
$cmd
= App::vaporcalc::Cmd::Subject::Recipe->new(
recipe
=>
$recipe
,
verb
=>
'load'
,
params
=> [
$fname
],
);
my
$new
=
$cmd
->execute->recipe;
isa_ok
$new
,
'App::vaporcalc::Recipe'
;
ok
$new
->target_pg == 65,
'loaded recipe looks ok'
;
};
done_testing