HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/ai.naniguide.com/tests/Unit/CampaignPolicyTest.php
<?php

namespace Tests\Unit;

use App\Model\Campaign;
use App\Model\Customer;
use App\Model\User;
use App\Policies\CampaignPolicy;
use Mockery;
use Tests\TestCase;

class CampaignPolicyTest extends TestCase
{
    protected function tearDown(): void
    {
        Mockery::close();

        parent::tearDown();
    }

    public function test_send_test_email_allows_owner_with_full_access_even_when_campaign_is_new()
    {
        $policy = new CampaignPolicy();

        $customer = new Customer();
        $customer->id = 1;

        $user = Mockery::mock(User::class)->makePartial();
        $user->setRelation('customer', $customer);
        $user->shouldReceive('hasPermission')->with('campaign.full_access')->andReturn(true);

        $campaign = new Campaign();
        $campaign->customer_id = 1;
        $campaign->status = Campaign::STATUS_NEW;

        $this->assertTrue($policy->send_test_email($user, $campaign));
    }

    public function test_send_test_email_denies_user_without_full_access()
    {
        $policy = new CampaignPolicy();

        $customer = new Customer();
        $customer->id = 1;

        $user = Mockery::mock(User::class)->makePartial();
        $user->setRelation('customer', $customer);
        $user->shouldReceive('hasPermission')->with('campaign.full_access')->andReturn(false);

        $campaign = new Campaign();
        $campaign->customer_id = 1;
        $campaign->status = Campaign::STATUS_NEW;

        $this->assertFalse($policy->send_test_email($user, $campaign));
    }
}