Files
gochat/frontend/app/javascript/dashboard/api/captain/specs/skills.spec.js
T
Rogeeandrogee f50eacdc92 H-289: add Captain Skill management UI (#47)
* H-289: add Captain Skill management UI

* H-289: guard Captain Skill assistant switches

---------

Co-authored-by: Rogee <rogee@ipao.vip>
2026-08-18 15:34:26 +08:00

57 lines
1.6 KiB
JavaScript

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