import CaptainSkillsAPI from '../skills'; import ApiClient from '../../ApiClient'; describe('#CaptainSkillsAPI', () => { beforeEach(() => { window.history.pushState({}, '', '/app/accounts/7/captain/2/skills'); global.axios = { get: vi.fn(), post: vi.fn(), put: vi.fn(), delete: vi.fn(), }; }); it('uses the account skill management endpoints', () => { CaptainSkillsAPI.get({ assistantId: 2 }); CaptainSkillsAPI.show(3); CaptainSkillsAPI.create({ name: 'Refunds' }); CaptainSkillsAPI.update(3, { expected_version: 1 }); CaptainSkillsAPI.delete(3); expect(axios.get).toHaveBeenNthCalledWith( 1, '/api/v1/accounts/7/captain/skills', { params: { assistant_id: 2 } } ); expect(axios.get).toHaveBeenNthCalledWith( 2, '/api/v1/accounts/7/captain/skills/3' ); expect(axios.post).toHaveBeenCalledWith( '/api/v1/accounts/7/captain/skills', { skill: { name: 'Refunds' } } ); expect(axios.put).toHaveBeenCalledWith( '/api/v1/accounts/7/captain/skills/3', { skill: { expected_version: 1 } } ); expect(axios.delete).toHaveBeenCalledWith( '/api/v1/accounts/7/captain/skills/3' ); }); it('binds and unbinds a skill for one assistant', () => { CaptainSkillsAPI.bind({ assistantId: 2, skillId: 3 }); CaptainSkillsAPI.unbind({ assistantId: 2, skillId: 3 }); const url = '/api/v1/accounts/7/captain/assistants/2/skills/3'; expect(axios.post).toHaveBeenCalledWith(url); expect(axios.delete).toHaveBeenCalledWith(url); }); it('is an account-scoped API client', () => { expect(CaptainSkillsAPI).toBeInstanceOf(ApiClient); }); });