From f3b7b1bf8e23f4ff885c251279405d6014267d60 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 9 Nov 2007 21:23:00 +0000 Subject: [PATCH] Start adding coverage to the getBackToSiteURL method. Remove the old commented out MockObject request code. It's PseudoRequest or bust. WGBP indent some of the Session/Url methods. --- lib/WebGUI/Session/Url.pm | 55 +++++++++++++++++++-------------------- t/Session/Url.t | 47 ++++++++++++++++++++++++--------- 2 files changed, 62 insertions(+), 40 deletions(-) diff --git a/lib/WebGUI/Session/Url.pm b/lib/WebGUI/Session/Url.pm index c16f4c753..8b2fa9a52 100644 --- a/lib/WebGUI/Session/Url.pm +++ b/lib/WebGUI/Session/Url.pm @@ -264,25 +264,25 @@ Returns a constructed site url. The returned value can be overridden using the s =cut sub getSiteURL { - my $self = shift; - unless ($self->{_siteUrl}) { - my $site = ""; - my $sitenames = $self->session->config->get("sitename"); - my ($http_host,$currentPort) = split(':', $self->session->env->get("HTTP_HOST")); - if ($self->session->setting->get("hostToUse") eq "HTTP_HOST" and isIn($http_host,@{$sitenames})) { - $site = $http_host; - } else { - $site = $sitenames->[0]; - } - my $proto = "http://"; - if ($self->session->env->get("HTTPS") eq "on") { - $proto = "https://"; - } + my $self = shift; + unless ($self->{_siteUrl}) { + my $site = ""; + my $sitenames = $self->session->config->get("sitename"); + my ($http_host,$currentPort) = split(':', $self->session->env->get("HTTP_HOST")); + if ($self->session->setting->get("hostToUse") eq "HTTP_HOST" and isIn($http_host,@{$sitenames})) { + $site = $http_host; + } else { + $site = $sitenames->[0]; + } + my $proto = "http://"; + if ($self->session->env->get("HTTPS") eq "on") { + $proto = "https://"; + } my $port = ""; - $port = ":".$self->session->config->get("webServerPort") if ($self->session->config->get("webServerPort")); - $self->{_siteUrl} = $proto.$site.$port; - } - return $self->{_siteUrl}; + $port = ":".$self->session->config->get("webServerPort") if ($self->session->config->get("webServerPort")); + $self->{_siteUrl} = $proto.$site.$port; + } + return $self->{_siteUrl}; } @@ -373,18 +373,17 @@ then you'll understand the rest of wG just fine. =cut sub page { - my $self = shift; - my $pairs = shift; - my $useFullUrl = shift; - my $skipPreventProxyCache = shift; - my $url; - if ($useFullUrl) { - $url = $self->getSiteURL(); - } + my $self = shift; + my $pairs = shift; + my $useFullUrl = shift; + my $skipPreventProxyCache = shift; + my $url; + if ($useFullUrl) { + $url = $self->getSiteURL(); + } my $path = $self->session->asset ? $self->session->asset->get("url") : $self->getRequestedUrl; $url .= $self->gateway($path, $pairs, $skipPreventProxyCache); - - return $url; + return $url; } #------------------------------------------------------------------- diff --git a/t/Session/Url.t b/t/Session/Url.t index c7625b8ce..371ba4d38 100644 --- a/t/Session/Url.t +++ b/t/Session/Url.t @@ -51,9 +51,7 @@ my @getRefererUrlTests = ( ); use Test::More; -use Test::MockObject::Extends; -use Test::MockObject; -plan tests => 46 + scalar(@getRefererUrlTests); +plan tests => 51 + scalar(@getRefererUrlTests); my $session = WebGUI::Test->session; @@ -194,15 +192,10 @@ is( $session->url->makeCompliant($url), $url2, 'language specific URL compliance ####################################### my $originalRequest = $session->request; ##Save the original request object +$session->{_request} = undef; is($session->url->getRequestedUrl, undef, 'getRequestedUrl returns undef unless it has a request object'); - -#my $newRequest = Test::MockObject->new; -#my $requestedUrl = 'empty'; -#$newRequest->set_bound('uri', \$requestedUrl); -#$session->{_request} = $newRequest; - -##Validate new MockObject +$session->{_request} = $originalRequest; $pseudoRequest->uri('empty'); is($session->request->uri, 'empty', 'Validate Mock Object operation'); @@ -262,7 +255,7 @@ $session->asset($sessionAsset); $mockEnv{'HTTP_REFERER'} = 'test'; -is($session->env->get('HTTP_REFERER'), 'test', 'testing MockObject'); +is($session->env->get('HTTP_REFERER'), 'test', 'testing overridden ENV'); foreach my $test (@getRefererUrlTests) { $mockEnv{HTTP_REFERER} = $test->{input}; @@ -323,13 +316,43 @@ is($session->url->urlize('home is where the heart is'), 'home-is-where-the-heart # ####################################### $sessionAsset = $session->asset; -$session->asset(undef); +$session->{_asset} = undef; $session->url->{_requestedUrl} = undef; ##Manually clear cached value +$pseudoRequest->uri('/goBackToTheSite'); + +is($session->url->getBackToSiteURL, '/goBackToTheSite', 'getBackToSiteURL: when session asset is undefined, the method falls back to using page'); $session->asset($sessionAsset); +is($session->url->getBackToSiteURL, $session->asset->getUrl, q!getBackToSiteURL: for most regular old assets, it takes you back to the asset's container!); + +my $versionTag = WebGUI::VersionTag->getWorking($session); + +my $defaultAssetUrl = WebGUI::Asset->getDefault($session)->getUrl; + +$session->asset( WebGUI::Asset->getImportNode($session) ); +is( + $session->url->getBackToSiteURL, + $defaultAssetUrl, + q!getBackToSiteURL: importNode asset returns you to the default Asset! +); + +$session->asset( WebGUI::Asset->getMedia($session) ); +is( + $session->url->getBackToSiteURL, + $defaultAssetUrl, + q!getBackToSiteURL: Media Folder asset returns you to the default Asset! +); + +$session->asset( WebGUI::Asset->getRoot($session) ); +is( + $session->url->getBackToSiteURL, + $defaultAssetUrl, + q!getBackToSiteURL: Root returns you to the default Asset! +); END { ##Always clean-up $session->asset($sessionAsset); + $versionTag->rollback; $session->config->set('sitename', \@config_sitename); $session->setting->set('hostToUse', $setting_hostToUse); $session->setting->set('preventProxyCache', $preventProxyCache);