update(CommentsExtension::class, 'comments', array( 'enabled' => true, 'enabled_cms' => false, 'require_login' => false, 'require_login_cms' => false, 'required_permission' => false, 'require_moderation_nonmembers' => false, 'require_moderation' => false, 'require_moderation_cms' => false, 'frontend_moderation' => false, 'Member' => false, )); $this->requiredExtensions = array( 'CommentableItem' => CommentsExtension::class ); // Configure this dataobject Config::inst()->update(CommentableItem::class, 'comments', array( 'enabled_cms' => true )); } public function tearDown() { Config::unnest(); parent::tearDown(); } public function testPopulateDefaults() { $this->markTestSkipped('TODO'); } public function testUpdateSettingsFields() { $this->markTestSkipped('This needs SiteTree installed'); } public function testGetModerationRequired() { // the 3 options take precedence in this order, executed if true Config::inst()->update(CommentableItem::class, 'comments', array( 'require_moderation_cms' => true, 'require_moderation' => true, 'require_moderation_nonmembers' => true )); // With require moderation CMS set to true, the value of the field // 'ModerationRequired' is returned $item = $this->objFromFixture(CommentableItem::class, 'first'); $item->ModerationRequired = 'None'; $this->assertEquals('None', $item->getModerationRequired()); $item->ModerationRequired = 'Required'; $this->assertEquals('Required', $item->getModerationRequired()); $item->ModerationRequired = 'NonMembersOnly'; $this->assertEquals('NonMembersOnly', $item->getModerationRequired()); Config::inst()->update(CommentableItem::class, 'comments', array( 'require_moderation_cms' => false, 'require_moderation' => true, 'require_moderation_nonmembers' => true )); $this->assertEquals('Required', $item->getModerationRequired()); Config::inst()->update(CommentableItem::class, 'comments', array( 'require_moderation_cms' => false, 'require_moderation' => false, 'require_moderation_nonmembers' => true )); $this->assertEquals('NonMembersOnly', $item->getModerationRequired()); Config::inst()->update(CommentableItem::class, 'comments', array( 'require_moderation_cms' => false, 'require_moderation' => false, 'require_moderation_nonmembers' => false )); $this->assertEquals('None', $item->getModerationRequired()); } public function testGetCommentsRequireLogin() { Config::inst()->update(CommentableItem::class, 'comments', array( 'require_login_cms' => true )); // With require moderation CMS set to true, the value of the field // 'ModerationRequired' is returned $item = $this->objFromFixture(CommentableItem::class, 'first'); $item->CommentsRequireLogin = true; $this->assertTrue($item->getCommentsRequireLogin()); $item->CommentsRequireLogin = false; $this->assertFalse($item->getCommentsRequireLogin()); Config::inst()->update(CommentableItem::class, 'comments', array( 'require_login_cms' => false, 'require_login' => false )); $this->assertFalse($item->getCommentsRequireLogin()); Config::inst()->update(CommentableItem::class, 'comments', array( 'require_login_cms' => false, 'require_login' => true )); $this->assertTrue($item->getCommentsRequireLogin()); } public function testAllComments() { $this->markTestSkipped('TODO'); } public function testAllVisibleComments() { $this->markTestSkipped('TODO'); } public function testComments() { $this->markTestSkipped('TODO'); } public function testGetCommentsEnabled() { $this->markTestSkipped('TODO'); } public function testGetCommentHolderID() { $item = $this->objFromFixture(CommentableItem::class, 'first'); Config::inst()->update(CommentableItem::class, 'comments', array( 'comments_holder_id' => 'commentid_test1', )); $this->assertEquals('commentid_test1', $item->getCommentHolderID()); Config::inst()->update(CommentableItem::class, 'comments', array( 'comments_holder_id' => 'commtentid_test_another', )); $this->assertEquals('commtentid_test_another', $item->getCommentHolderID()); } public function testGetPostingRequiredPermission() { $this->markTestSkipped('TODO'); } public function testCanModerateComments() { // ensure nobody logged in if (Member::currentUser()) { Member::currentUser()->logOut(); } $item = $this->objFromFixture(CommentableItem::class, 'first'); $this->assertFalse($item->canModerateComments()); $this->logInWithPermission('CMS_ACCESS_CommentAdmin'); $this->assertTrue($item->canModerateComments()); } public function testGetCommentRSSLink() { Config::inst()->update('SilverStripe\\Control\\Director', 'alternate_base_url', 'http://unittesting.local'); $item = $this->objFromFixture(CommentableItem::class, 'first'); $link = $item->getCommentRSSLink(); $this->assertEquals('http://unittesting.local/comments/rss', $link); } public function testGetCommentRSSLinkPage() { Config::inst()->update('SilverStripe\\Control\\Director', 'alternate_base_url', 'http://unittesting.local'); $item = $this->objFromFixture(CommentableItem::class, 'first'); $page = $item->getCommentRSSLinkPage(); $this->assertEquals( 'http://unittesting.local/comments/rss/SilverStripe-Comments-Tests-Stubs-CommentableItem/' . $item->ID, $page ); } public function testCommentsForm() { Config::inst()->update( CommentableItem::class, 'comments', array( 'include_js' => false ) ); $item = $this->objFromFixture(CommentableItem::class, 'first'); // The comments form is HTML to do assertions by contains $cf = $item->CommentsForm(); $expected = '