ldc-boutique-cnc-sable/tests/Unit/App/Policies/Frontend/OrderPolicyTest.php
2026-10-27 09:58:12 +01:00

120 lines
3.7 KiB
PHP

<?php
declare(strict_types=1);
use App\Models\Customer;
use App\Models\Order;
use App\Models\User;
use App\Policies\Frontend\OrderPolicy;
use App\Services\OrderService;
covers(OrderPolicy::class);
describe('OrderPolicy', function () {
describe('viewAnyOwn', function () {
it('returns false when user is a User instance', function () {
// GIVEN
$orderService = \Mockery::mock(OrderService::class);
$policy = new OrderPolicy($orderService);
$user = \Mockery::mock(User::class);
// WHEN
$result = $policy->viewAnyOwn($user);
// THEN
expect($result)->toBeFalse();
});
it('returns true when user is a Customer instance', function () {
// GIVEN
$orderService = \Mockery::mock(OrderService::class);
$policy = new OrderPolicy($orderService);
$customer = \Mockery::mock(Customer::class);
// WHEN
$result = $policy->viewAnyOwn($customer);
// THEN
expect($result)->toBeTrue();
});
it('returns true when user is null', function () {
// GIVEN
$orderService = \Mockery::mock(OrderService::class);
$policy = new OrderPolicy($orderService);
// WHEN
$result = $policy->viewAnyOwn(null);
// THEN
expect($result)->toBeTrue();
});
});
describe('viewOwn', function () {
it('returns false when user is null', function () {
// GIVEN
$orderService = \Mockery::mock(OrderService::class);
$policy = new OrderPolicy($orderService);
$order = \Mockery::mock(Order::class);
// WHEN
$result = $policy->viewOwn(null, $order);
// THEN
expect($result)->toBeFalse();
});
it('returns false when user is a User instance', function () {
// GIVEN
$orderService = \Mockery::mock(OrderService::class);
$policy = new OrderPolicy($orderService);
$user = \Mockery::mock(User::class);
$order = \Mockery::mock(Order::class);
// WHEN
$result = $policy->viewOwn($user, $order);
// THEN
expect($result)->toBeFalse();
});
it('returns true when user is a Customer and owns the order', function () {
// GIVEN
$orderService = \Mockery::mock(OrderService::class);
$policy = new OrderPolicy($orderService);
$customer = \Mockery::mock(Customer::class);
$order = \Mockery::mock(Order::class);
$orderService->shouldReceive('isOrderOwnedBy')
->once()
->with($order, $customer)
->andReturn(true);
// WHEN
$result = $policy->viewOwn($customer, $order);
// THEN
expect($result)->toBeTrue();
});
it('returns false when user is a Customer and does not own the order', function () {
// GIVEN
$orderService = \Mockery::mock(OrderService::class);
$policy = new OrderPolicy($orderService);
$customer = \Mockery::mock(Customer::class);
$order = \Mockery::mock(Order::class);
$orderService->shouldReceive('isOrderOwnedBy')
->once()
->with($order, $customer)
->andReturn(false);
// WHEN
$result = $policy->viewOwn($customer, $order);
// THEN
expect($result)->toBeFalse();
});
});
});