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