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));
}
}