From 3853e4dd022be6dd4610b01427316631becdbc8c Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Wed, 8 Apr 2009 22:28:59 +0000 Subject: [PATCH] Add a method to return RSS data for a Story, with tests. --- lib/WebGUI/Asset/Story.pm | 21 +++++++++++++++++++++ t/Asset/Story.t | 28 +++++++++++++++++++++++++--- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/lib/WebGUI/Asset/Story.pm b/lib/WebGUI/Asset/Story.pm index e3fbaa26a..e7e5c987c 100644 --- a/lib/WebGUI/Asset/Story.pm +++ b/lib/WebGUI/Asset/Story.pm @@ -454,6 +454,27 @@ sub getPhotoData { #------------------------------------------------------------------- +=head2 getRssData ( ) + +Returns RSS data for this Story. The date of the RSS item is the lastModified +property of the Asset. + +=cut + +sub getRssData { + my $self = shift; + my $data = { + title => $self->get('headline') || $self->getTitle, + description => $self->get('subtitle'), + 'link' => $self->getUrl, + author => $self->get('byline'), + date => $self->get('lastModified'), + }; + return $data; +} + +#------------------------------------------------------------------- + =head2 prepareView ( $templateId ) See WebGUI::Asset::prepareView() for details. diff --git a/t/Asset/Story.t b/t/Asset/Story.t index fd5d96891..41811d8dc 100644 --- a/t/Asset/Story.t +++ b/t/Asset/Story.t @@ -20,8 +20,8 @@ use Test::More; # increment this value for each test you create use Test::Deep; use Data::Dumper; -my $tests = 1; -plan tests => 32 +my $tests = 34; +plan tests => 1 + $tests ; @@ -80,6 +80,8 @@ ok( WebGUI::Asset::Story->validParent($session), 'validParent: StoryArchive is $story = $archive->addChild({ className => 'WebGUI::Asset::Story', title => 'Story 1', + subtitle => 'The story of a CMS', + byline => 'JT Smith', }); isa_ok($story, 'WebGUI::Asset::Story', 'Created a Story asset'); @@ -198,11 +200,31 @@ cmp_deeply( url => $story->getUrl, }, ], - 'getCrumbTrail: with no topic set' + 'getCrumbTrail: with topic set' ); $story->topic(''); +############################################################ +# +# getRssData +# +############################################################ + +can_ok($story, 'getRssData'); + +cmp_deeply( + $story->getRssData, + { + title => 'Story 1', + description => 'The story of a CMS', + 'link' => re('story-1$'), + author => 'JT Smith', + date => $story->get('lastModified'), + }, + 'getRssData: returns correct data' +); + ############################################################ # # viewTemplateVariables