import { vi, describe, expect, it, beforeAll, afterEach, beforeEach } from 'vitest'; import { axios, flushPromises } from 'app/test/vitest/helper'; import { useAcl } from 'src/composables/useAcl'; describe('useAcl', () => { const acl = useAcl(); const mockAcls = [ { model: 'Address', property: '*', accessType: '*', permission: 'ALLOW', principalType: 'ROLE', principalId: 'employee', id: 3, }, { model: 'Worker', property: 'holidays', accessType: 'READ', permission: 'ALLOW', principalType: 'ROLE', principalId: 'employee', id: 13, }, ]; const expectedAcls = { Address: { '*': { '*': true } }, Worker: { holidays: { READ: true } }, }; beforeAll(() => { vi.spyOn(axios, 'get').mockResolvedValue({ data: mockAcls }); vi.spyOn(acl.state, 'setAcls'); }); beforeEach(async () => await acl.fetch()); afterEach(async () => { await flushPromises(); acl.state.setAcls([]); }); describe('fetch', () => { it('should call setUser and setRoles of the state with the expected data', async () => { expect(acl.state.setAcls).toHaveBeenCalledWith(expectedAcls); }); }); describe('hasAny', () => { it('should return true if a role matched', async () => expect(acl.hasAny('Address', '*', 'WRITE')).toBeTruthy()); it('should return false if no roles matched', async () => { expect(acl.hasAny('Worker', '*', 'WRITE')).toBeFalsy(); }); }); });