2023-11-23 03:22:47 -08:00
|
|
|
import RBAC from '@/components/RBAC.vue';
|
|
|
|
import { createComponentRenderer } from '@/__tests__/render';
|
|
|
|
import { useRBACStore } from '@/stores/rbac.store';
|
|
|
|
|
|
|
|
const renderComponent = createComponentRenderer(RBAC);
|
|
|
|
|
|
|
|
vi.mock('vue-router', () => ({
|
|
|
|
useRoute: vi.fn(() => ({
|
|
|
|
path: '/workflows',
|
|
|
|
params: {},
|
|
|
|
})),
|
2024-01-19 02:52:39 -08:00
|
|
|
RouterLink: vi.fn(),
|
2023-11-23 03:22:47 -08:00
|
|
|
}));
|
|
|
|
|
|
|
|
vi.mock('@/stores/rbac.store', () => ({
|
|
|
|
useRBACStore: vi.fn(),
|
|
|
|
}));
|
|
|
|
|
|
|
|
describe('RBAC', () => {
|
|
|
|
it('renders default slot when hasScope is true', async () => {
|
2024-05-31 03:02:21 -07:00
|
|
|
vi.mocked(useRBACStore).mockImplementation(
|
|
|
|
() =>
|
|
|
|
({
|
|
|
|
hasScope: () => true,
|
|
|
|
}) as unknown as ReturnType<typeof useRBACStore>,
|
|
|
|
);
|
2023-11-23 03:22:47 -08:00
|
|
|
|
|
|
|
const wrapper = renderComponent({
|
|
|
|
props: { scope: 'worfklow:list' },
|
|
|
|
slots: {
|
|
|
|
default: 'Default Content',
|
|
|
|
fallback: 'Fallback Content',
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(wrapper.getByText('Default Content')).toBeInTheDocument();
|
|
|
|
});
|
|
|
|
|
|
|
|
it('renders fallback slot when hasScope is false', async () => {
|
2024-05-31 03:02:21 -07:00
|
|
|
vi.mocked(useRBACStore).mockImplementation(
|
|
|
|
() =>
|
|
|
|
({
|
|
|
|
hasScope: () => false,
|
|
|
|
}) as unknown as ReturnType<typeof useRBACStore>,
|
|
|
|
);
|
2023-11-23 03:22:47 -08:00
|
|
|
|
|
|
|
const wrapper = renderComponent({
|
|
|
|
props: { scope: 'worfklow:list' },
|
|
|
|
slots: {
|
|
|
|
default: 'Default Content',
|
|
|
|
fallback: 'Fallback Content',
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
expect(wrapper.getByText('Fallback Content')).toBeInTheDocument();
|
|
|
|
});
|
|
|
|
});
|