import { render, screen } from '@testing-library/react'; import { describe, it, expect, vi } from 'vitest'; import { Can } from '../Components/Can'; import React from 'react'; // Mock the Inertia usePage hook vi.mock('@inertiajs/react', () => ({ usePage: () => ({ props: { auth: { permissions: ['user.edit', 'role.view'], }, }, }), })); describe('', () => { it('renders children when permission is granted', () => { render( ); expect(screen.getByRole('button', { name: /edit button/i })).toBeDefined(); }); it('renders fallback when permission is denied', () => { render( No Access}> ); expect(screen.getByText('No Access')).toBeDefined(); expect(screen.queryByRole('button')).toBeNull(); }); it('handles array of abilities (OR logic)', () => { render(
Visible Content
); expect(screen.getByText('Visible Content')).toBeDefined(); }); });