Added tests to cover userStyle.

fixed a bug in userStyle where it would not process data that was false.
process will do this, so I made userStyle do it as well by adding
in a definedness check on $output.
This commit is contained in:
Colin Kuskie 2006-10-12 04:53:43 +00:00
parent 01a09cbea9
commit 514c2263fc
2 changed files with 60 additions and 6 deletions

View file

@ -423,7 +423,7 @@ sub userStyle {
my $self = shift;
my $output = shift;
$self->session->http->setCacheControl("none");
if ($output) {
if (defined $output) {
return $self->process($output,$self->session->setting->get("userFunctionStyleId"));
} else {
return undef;

View file

@ -19,7 +19,7 @@ use WebGUI::Asset;
use WebGUI::VersionTag;
use WebGUI;
use Test::More tests => 53; # increment this value for each test you create
use Test::More tests => 58; # increment this value for each test you create
use Test::Deep;
my $session = WebGUI::Test->session;
@ -157,10 +157,11 @@ is($macroOutput, 1, 'generateAdditionalHeadTags: process a macro');
####################################################
#
# process
# useEmptyStyle
#
####################################################
my ($versionTag, $templates, $article, $snippet) = setup_assets($session);
$style->sent(0);
is($style->sent, 0, 'process: setup sent to 0');
@ -170,12 +171,41 @@ is($style->process('body.content', 'notATemplateId'),
is($style->sent, 1, 'process: sets sent to 1');
####################################################
#
# userStyle
#
####################################################
my $origUserStyle = $session->setting->get('userFunctionStyleId');
$session->setting->set('userFunctionStyleId', $templates->{user}->getId);
is($style->userStyle('userStyle'), 'USER PRINTABLE STYLE TEMPLATE:userStyle',
'userStyle returns templated output according to userFunctionStyleId in settings');
is($session->http->{_http}{cacheControl}, 'none', 'userStyle(via process): HTTP cacheControl set to none to prevent proxying');
is($style->userStyle('userStyle'), 'USER PRINTABLE STYLE TEMPLATE:userStyle',
'userStyle returns templated output according to userFunctionStyleId in settings');
is($style->userStyle(0), 'USER PRINTABLE STYLE TEMPLATE:0',
'userStyle returns templated output even 0 which is false');
is($style->userStyle(undef), undef,
'userStyle returns undef if no output is sent');
$session->setting->set('userFunctionStyleId', $origUserStyle);
$session->http->setCacheControl(undef); ##return to default setting for downstream testing
####################################################
#
# process
# useEmptyStyle
#
####################################################
$style->useEmptyStyle(1);
is($style->process('body.content'), "body.content", 'process, useEmptyStyle: valid data returned');
my ($versionTag, $templates, $article, $snippet) = setup_assets($session);
$session->scratch->set('personalStyleId', $templates->{personal}->getId);
my $styled = $style->process('body.content', 'notATemplateId');
@ -276,6 +306,7 @@ $session->asset($snippet);
is($style->process('test output'),
"WebGUI was unable to instantiate your style template.test output",
'process: no valid printableStyleTemplateFound in asset branch returns error');
####################################################
#
# Utility routines for printing
@ -354,6 +385,17 @@ sub setup_assets {
# '1234567890123456789012'
};
$templates->{asset} = $importNode->addChild($properties, $properties->{id});
$properties = {
title => 'user template for printing',
className => 'WebGUI::Asset::Template',
url => 'user_style_printable',
namespace => 'Style',
##Note, at this point
template => "USER PRINTABLE STYLE TEMPLATE:<tmpl_var body.content>",
id => 'printableUser0Template',
# '1234567890123456789012'
};
$templates->{user} = $importNode->addChild($properties, $properties->{id});
$properties = {
title => 'asset for printing',
className => 'WebGUI::Asset::Wobject::Article',
@ -364,6 +406,17 @@ sub setup_assets {
# '1234567890123456789012'
};
my $asset = $importNode->addChild($properties, $properties->{id});
##We have to have nested assets without printable style ids
##for code coverage
$properties = {
title => 'Daddy Snippet',
className => 'WebGUI::Asset::Snippet',
url => 'daddy_snippet',
id => 'printableSnippet0Daddy',
# '1234567890123456789012'
snippet => 'I am a snippet',
};
my $daddySnippet = WebGUI::Asset->getRoot($session)->addChild($properties, $properties->{id});
$properties = {
title => 'My Snippet',
className => 'WebGUI::Asset::Snippet',
@ -372,13 +425,14 @@ sub setup_assets {
# '1234567890123456789012'
snippet => 'I am a snippet',
};
my $snippet = WebGUI::Asset->getRoot($session)->addChild($properties, $properties->{id});
my $snippet = $daddySnippet->addChild($properties, $properties->{id});
$versionTag->commit;
return ($versionTag, $templates, $asset, $snippet);
}
END {
$session->setting->set('preventProxyCache', $origPreventProxyCache);
$session->setting->set('userFunctionStyleId', $origUserStyle);
if (defined $versionTag and ref $versionTag eq 'WebGUI::VersionTag') {
$versionTag->rollback;
}