Skip to content

Commit

Permalink
Story Archive now plays nice with urlExtensions
Browse files Browse the repository at this point in the history
  • Loading branch information
frodwith committed Oct 26, 2010
1 parent 0f2622b commit ca383fe
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 9 deletions.
3 changes: 3 additions & 0 deletions docs/gotcha.txt
Expand Up @@ -9,6 +9,9 @@ save you many hours of grief.

7.9.17
--------------------------------------------------------------------
* WebGUI now depends on Monkey::Patch for doing sanely scoped
monkeypatches.

* In the Collaboration System, previously the Group to Post group
was also allowed to view the CS. This made it difficult to
make the CS not viewable to regular users, so the behavior was
Expand Down
11 changes: 8 additions & 3 deletions lib/WebGUI/Asset/Wobject/StoryArchive.pm
Expand Up @@ -367,9 +367,14 @@ Constructs a url for a subfolder with the given name.

sub getFolderUrl {
my ($self, $name) = @_;
my $base = $self->getUrl;
$base =~ s/(.*)\..*/$1/;
return "$base/$name";
my $session = $self->session;
my $base = $self->getUrl;
$base =~ s/(.*)\..*/$1/;
my $url = "$base/$name";
if (my $ext = $session->setting->get('urlExtension')) {
$url .= ".$ext";
}
return $session->url->urlize($url);
}

#-------------------------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions sbin/testEnvironment.pl
Expand Up @@ -148,6 +148,7 @@ BEGIN
checkModule('IO::Socket::SSL', );
checkModule('Net::Twitter', "3.13006" );
checkModule('PerlIO::eol', "0.14" );
checkModule('Monkey::Patch', '0.03' );

failAndExit("Required modules are missing, running no more checks.") if $missingModule;

Expand Down
24 changes: 18 additions & 6 deletions t/Asset/Wobject/StoryArchive.t
Expand Up @@ -63,7 +63,7 @@ $canPostMaker->prepare({
fail => [1, $reader ],
});

my $tests = 54
my $tests = 56
+ $canPostMaker->plan
;
plan tests => 1
Expand Down Expand Up @@ -133,22 +133,34 @@ my $folderName = $dt->strftime('%B_%d_%Y');
$folderName =~ s/^(\w+_)0/$1/;
is($todayFolder->getTitle, $folderName, '... folder has the right name');
my $folderUrl = $archive->getFolderUrl($folderName);
is($todayFolder->getUrl, $folderUrl, '... folder has the right URL');
is($todayFolder->get('url'), $folderUrl, '... folder has the right URL');
is($todayFolder->getParent->getId, $archive->getId, '... created folder has the right parent');
is($todayFolder->get('state'), 'published', '... created folder is published');
is($todayFolder->get('status'), 'approved', '... created folder is approved');
is($todayFolder->get('styleTemplateId'), $archive->get('styleTemplateId'), '... created folder has correct styleTemplateId');

{
my $undo = WebGUI::Test->overrideSetting(urlExtension => 'ext');
my $arch2 = $home->addChild({
className => $class,
url => 'home/extension-tester.ext',
title => 'Extension Tester',
});
addToCleanup($arch2);
ok defined $arch2->getFolder($now), 'getFolder with url extension';
is $arch2->getFolderUrl('blah'), '/home/extension-tester/blah',
'folder urls have extension properly stripped';

is $arch2->get('url'),
'home/extension-tester.ext',
'ext added';

is $arch2->getFolderUrl('blah'),
'home/extension-tester/blah.ext',
'folder url: strip extension from parent and add to child';

my $folder = $arch2->getFolder($now);
ok defined $folder, 'getFolder with url extension';

is $folder->get('url'),
$arch2->getFolderUrl($folder->getMenuTitle),
'getFolderUrl and folder getUrl match';
}

my $sameFolder = $archive->getFolder($now);
Expand Down
19 changes: 19 additions & 0 deletions t/lib/WebGUI/Test.pm
Expand Up @@ -39,6 +39,7 @@ use Scalar::Util qw( blessed );
use List::MoreUtils qw( any );
use Carp qw( carp croak );
use JSON qw( from_json to_json );
use Monkey::Patch qw( patch_object );
use Scope::Guard;

BEGIN {
Expand Down Expand Up @@ -687,6 +688,24 @@ sub getMailFromQueue {

#----------------------------------------------------------------------------

=head2 overrideSetting (name, val)
Overrides WebGUI::Test->session->setting->get($name) to return $val until the
handle this method returns goes out of scope.
=cut

sub overrideSetting {
my ($class, $name, $val) = @_;
patch_object $class->session->setting => get => sub {
my $get = shift;
return $val if $_[1] eq $name;
goto &$get;
};
}

#----------------------------------------------------------------------------

=head2 cleanupAdminInbox ( )
Push a list of Asset objects onto the stack of assets to be automatically purged
Expand Down

0 comments on commit ca383fe

Please sign in to comment.