ChangeApprovalPolicyTest.php 2.1 KB
<?php

namespace FootyRoom\Tests\Integration\Comment;

use FootyRoom\Core\Comment\ChangeApprovalPolicy;
use FootyRoom\User\User;
use FootyRoom\Tests\TestCase;

class ChangeApprovalPolicyTest extends TestCase
{
    public function setUp()
    {
        $this->changeApprovalPolicy = new ChangeApprovalPolicy();
    }

    public function testCheckModeratorCanApproveCommentsInAnyDiscussion()
    {
        $user = new User(['user_id' => 41301, 'user_role' => 20]);
        $discussionId = 'wall:1111';
        $throwException = true;

        $result = ChangeApprovalPolicy::check($user, $discussionId, $throwException);

        $this->assertTrue($result);
    }

    public function testCheckModeratorCanApproveCommentsInAnyOtherDiscussion()
    {
        $user = new User(['user_id' => 41301, 'user_role' => 20]);
        $discussionId = 'match:1111';
        $throwException = true;

        $result = ChangeApprovalPolicy::check($user, $discussionId, $throwException);

        $this->assertTrue($result);
    }

    public function testCheckUserCanApproveCommentsInHisWallDiscussion()
    {
        $user = new User(['user_id' => 41301, 'user_role' => 10]);
        $discussionId = 'wall:41301';
        $throwException = true;

        $result = ChangeApprovalPolicy::check($user, $discussionId, $throwException);

        $this->assertTrue($result);
    }

    /**
     * @expectedException        \FootyRoom\Core\AuthException
     */
    public function testCheckUserCanNotApproveCommentsInOtherDiscussionWithThrowException()
    {
        $user = new User(['user_id' => 41301, 'user_role' => 10]);
        $discussionId = 'match:41301';
        $throwException = true;

        $result = ChangeApprovalPolicy::check($user, $discussionId, $throwException);
    }

    public function testCheckUserCanNotApproveCommentsInOtherDiscussionWithOutThrowException()
    {
        $user = new User(['user_id' => 41301, 'user_role' => 10]);
        $discussionId = 'match:41301';
        $throwException = false;

        $result = ChangeApprovalPolicy::check($user, $discussionId, $throwException);

        $this->assertFalse($result);
    }
}