diff --git a/code/widgets/BlogArchiveWidget.php b/code/widgets/BlogArchiveWidget.php index 6fc4695..a971fca 100644 --- a/code/widgets/BlogArchiveWidget.php +++ b/code/widgets/BlogArchiveWidget.php @@ -96,7 +96,7 @@ class BlogArchiveWidget extends Widget ); $stage = Versioned::current_stage(); - $suffix = ($stage == 'Stage') ? '' : "_{$stage}"; + $suffix = ($stage === 'Live') ? '_Live' : ''; $query = SQLSelect::create($fields, "BlogPost{$suffix}") ->addGroupBy($publishDate) ->addOrderBy('PublishDate Desc') @@ -125,6 +125,7 @@ class BlogArchiveWidget extends Widget } $this->extend('updateGetArchive', $result); + return $result; } } diff --git a/tests/Widgets/BlogArchiveWidgetTest.php b/tests/Widgets/BlogArchiveWidgetTest.php new file mode 100644 index 0000000..7f93de4 --- /dev/null +++ b/tests/Widgets/BlogArchiveWidgetTest.php @@ -0,0 +1,71 @@ +markTestSkipped('Test requires silverstripe/widgets to be installed.'); + } + + SS_Datetime::set_mock_now('2017-09-20 00:00:00'); + + parent::setUp(); + } + + public function tearDown() + { + parent::tearDown(); + + SS_Datetime::clear_mock_now(); + } + + public function testArchiveMonthlyFromStage() + { + $widget = $this->objFromFixture('BlogArchiveWidget', 'archive-monthly'); + $archive = $widget->getArchive(); + + $this->assertInstanceOf('SS_List', $archive); + $this->assertCount(3, $archive); + $this->assertDOSContains(array( + array('Title' => 'August 2017'), + array('Title' => 'September 2017'), + array('Title' => 'May 2015'), + ), $archive); + } + + public function testArchiveMonthlyFromLive() + { + $original = Versioned::current_stage(); + + $this->objFromFixture('BlogPost', 'post-b')->doPublish(); + Versioned::reading_stage('Live'); + + $widget = $this->objFromFixture('BlogArchiveWidget', 'archive-monthly'); + $archive = $widget->getArchive(); + + $this->assertCount(1, $archive); + $this->assertDOSContains(array( + array('Title' => 'August 2017'), + ), $archive); + + Versioned::reading_stage($original); + } + + public function testArchiveYearly() + { + $widget = $this->objFromFixture('BlogArchiveWidget', 'archive-yearly'); + $archive = $widget->getArchive(); + + $this->assertInstanceOf('SS_List', $archive); + $this->assertCount(2, $archive); + $this->assertDOSContains(array( + array('Title' => '2017'), + array('Title' => '2015'), + ), $archive); + } +} diff --git a/tests/Widgets/BlogArchiveWidgetTest.yml b/tests/Widgets/BlogArchiveWidgetTest.yml new file mode 100644 index 0000000..4126956 --- /dev/null +++ b/tests/Widgets/BlogArchiveWidgetTest.yml @@ -0,0 +1,27 @@ +Blog: + my-blog: + Title: My Blog + +BlogPost: + post-a: + Title: September Digest + PublishDate: 2017-09-01 00:00:00 + ParentID: =>Blog.my-blog + post-b: + Title: August is Awesome + PublishDate: 2017-08-01 00:00:00 + ParentID: =>Blog.my-blog + post-c: + Title: 2015 is so two years ago + PublishDate: 2015-05-02 00:01:02 + ParentID: =>Blog.my-blog + +BlogArchiveWidget: + archive-monthly: + NumberToDisplay: 5 + ArchiveType: Monthly + BlogID: =>Blog.my-blog + archive-yearly: + NumberToDisplay: 5 + ArchiveType: Yearly + BlogID: =>Blog.my-blog