mirror of
https://github.com/silverstripe/silverstripe-blog
synced 2024-10-22 11:05:58 +02:00
eabf8cf87e
API Enable authors to be specified and displayed on post info BUG Fix blogfilter bug Update documentation
162 lines
6.4 KiB
PHP
Executable File
162 lines
6.4 KiB
PHP
Executable File
<?php
|
|
|
|
class BlogTest extends SapphireTest {
|
|
|
|
static $fixture_file = "blog.yml";
|
|
|
|
public function setUp() {
|
|
parent::setUp();
|
|
Config::nest();
|
|
SS_Datetime::set_mock_now("2013-10-10 20:00:00");
|
|
$this->objFromFixture("Blog", "firstblog")->publish("Stage", "Live");
|
|
}
|
|
|
|
public function tearDown() {
|
|
SS_Datetime::clear_mock_now();
|
|
Config::unnest();
|
|
parent::tearDown();
|
|
}
|
|
|
|
public function testGetExcludedSiteTreeClassNames() {
|
|
$member = Member::currentUser();
|
|
if($member) $member->logout();
|
|
|
|
$blog = $this->objFromFixture("Blog", 'firstblog');
|
|
|
|
Config::inst()->update("BlogPost", "show_in_sitetree", true);
|
|
$classes = $blog->getExcludedSiteTreeClassNames();
|
|
$this->assertNotContains('BlogPost', $classes, "BlogPost class should be hidden.");
|
|
|
|
Config::inst()->update("BlogPost", "show_in_sitetree", false);
|
|
$classes = $blog->getExcludedSiteTreeClassNames();
|
|
$this->assertContains('BlogPost', $classes, "BlogPost class should be hidden.");
|
|
}
|
|
|
|
|
|
|
|
public function testGetArchivedBlogPosts() {
|
|
$member = Member::currentUser();
|
|
if($member) $member->logout();
|
|
|
|
$blog = $this->objFromFixture("Blog", "firstblog");
|
|
|
|
// Test yearly
|
|
$archive = $blog->getArchivedBlogPosts(2013);
|
|
$this->assertEquals(2, $archive->count(), "Incorrect Yearly Archive count for 2013");
|
|
$this->assertEquals("First post", $archive->first()->Title, "Incorrect First Blog post");
|
|
$this->assertEquals("Second post", $archive->last()->Title, "Incorrect Last Blog post");
|
|
|
|
// Test monthly
|
|
$archive = $blog->getArchivedBlogPosts(2013, 10);
|
|
$this->assertEquals(1, $archive->count(), "Incorrect monthly acrhive count.");
|
|
|
|
// Test daily
|
|
$archive = $blog->getArchivedBlogPosts(2013, 10, 01);
|
|
$this->assertEquals(1, $archive->count(), "Incorrect daily archive count.");
|
|
}
|
|
|
|
|
|
public function testArchiveLinks() {
|
|
$blog = $this->objFromFixture("Blog", "firstblog");
|
|
|
|
// Test valid links
|
|
$archiveLink = Controller::join_links($blog->Link("archive"), 2013, 10, 01);
|
|
$response = Director::test($archiveLink);
|
|
$this->assertEquals(200, $response->getStatusCode(), "HTTP Status should be 200");
|
|
|
|
$archiveLink = Controller::join_links($blog->Link("archive"), 2013, 10);
|
|
$response = Director::test($archiveLink);
|
|
$this->assertEquals(200, $response->getStatusCode(), "HTTP Status should be 200");
|
|
|
|
$archiveLink = Controller::join_links($blog->Link("archive"), 2013);
|
|
$response = Director::test($archiveLink);
|
|
$this->assertEquals(200, $response->getStatusCode(), "HTTP Status should be 200");
|
|
|
|
$archiveLink = Controller::join_links($blog->Link("archive"), 2011, 10, 01);
|
|
$response = Director::test($archiveLink); // No posts on this date, but a valid entry.
|
|
$this->assertEquals(200, $response->getStatusCode(), "HTTP Status should be 200");
|
|
|
|
|
|
// Test invalid links & dates
|
|
$response = Director::test($blog->Link("archive")); // 404 when no date is set
|
|
$this->assertEquals(404, $response->getStatusCode(), "HTTP Status should be 404");
|
|
|
|
// Invalid year
|
|
$archiveLink = Controller::join_links($blog->Link("archive"), "invalid-year");
|
|
$response = Director::test($archiveLink); // 404 when an invalid yer is set
|
|
$this->assertEquals(404, $response->getStatusCode(), "HTTP Status should be 404");
|
|
|
|
// Invalid month
|
|
$archiveLink = Controller::join_links($blog->Link("archive"), "2013", "99");
|
|
$response = Director::test($archiveLink); // 404 when an invalid month is set
|
|
$this->assertEquals(404, $response->getStatusCode(), "HTTP Status should be 404");
|
|
|
|
// Invalid day
|
|
$archiveLink = Controller::join_links($blog->Link("archive"), "2013", "10", "99");
|
|
$response = Director::test($archiveLink); // 404 when an invalid day is set
|
|
$this->assertEquals(404, $response->getStatusCode(), "HTTP Status should be 404");
|
|
|
|
}
|
|
|
|
public function testRoles() {
|
|
$blog = $this->objFromFixture('Blog', 'fourthblog');
|
|
$blog2 = $this->objFromFixture('Blog', 'firstblog');
|
|
$postA = $this->objFromFixture('BlogPost', 'post-a');
|
|
$postB = $this->objFromFixture('BlogPost', 'post-b');
|
|
$postC = $this->objFromFixture('BlogPost', 'post-c');
|
|
$editor = $this->objFromFixture('Member', 'blogeditor');
|
|
$writer = $this->objFromFixture('Member', 'writer');
|
|
$contributor = $this->objFromFixture('Member', 'contributor');
|
|
$visitor = $this->objFromFixture('Member', 'visitor');
|
|
|
|
// Check that editors have all permissions on their own blog
|
|
$this->assertTrue($blog->canEdit($editor));
|
|
Debug::dump($blog2->Editors()->count());
|
|
$this->assertFalse($blog2->canEdit($editor));
|
|
$this->assertTrue($blog->canAddChildren($editor));
|
|
$this->assertFalse($blog2->canAddChildren($editor));
|
|
$this->assertTrue($postA->canEdit($editor));
|
|
$this->assertTrue($postB->canEdit($editor));
|
|
$this->assertTrue($postC->canEdit($editor));
|
|
$this->assertTrue($postA->canPublish($editor));
|
|
$this->assertTrue($postB->canPublish($editor));
|
|
$this->assertTrue($postC->canPublish($editor));
|
|
|
|
// check rights of writers
|
|
$this->assertFalse($blog->canEdit($writer));
|
|
$this->assertFalse($blog2->canEdit($writer));
|
|
$this->assertTrue($blog->canAddChildren($writer));
|
|
$this->assertFalse($blog2->canAddChildren($writer));
|
|
$this->assertTrue($postA->canEdit($writer));
|
|
$this->assertFalse($postB->canEdit($writer));
|
|
$this->assertTrue($postC->canEdit($writer));
|
|
$this->assertTrue($postA->canPublish($writer));
|
|
$this->assertFalse($postB->canPublish($writer));
|
|
$this->assertTrue($postC->canPublish($writer));
|
|
|
|
// Check rights of contributors
|
|
$this->assertFalse($blog->canEdit($contributor));
|
|
$this->assertFalse($blog2->canEdit($contributor));
|
|
$this->assertTrue($blog->canAddChildren($contributor));
|
|
$this->assertFalse($blog2->canAddChildren($contributor));
|
|
$this->assertTrue($postA->canEdit($contributor));
|
|
$this->assertFalse($postB->canEdit($contributor));
|
|
$this->assertTrue($postC->canEdit($contributor));
|
|
$this->assertFalse($postA->canPublish($contributor));
|
|
$this->assertFalse($postB->canPublish($contributor));
|
|
$this->assertFalse($postC->canPublish($contributor));
|
|
|
|
// Check rights of non-cms user
|
|
$this->assertFalse($blog->canEdit($visitor));
|
|
$this->assertFalse($blog2->canEdit($visitor));
|
|
$this->assertFalse($blog->canAddChildren($visitor));
|
|
$this->assertFalse($blog2->canAddChildren($visitor));
|
|
$this->assertFalse($postA->canEdit($visitor));
|
|
$this->assertFalse($postB->canEdit($visitor));
|
|
$this->assertFalse($postC->canEdit($visitor));
|
|
$this->assertFalse($postA->canPublish($visitor));
|
|
$this->assertFalse($postB->canPublish($visitor));
|
|
$this->assertFalse($postC->canPublish($visitor));
|
|
}
|
|
|
|
} |