mirror of
https://github.com/lingble/chatwoot.git
synced 2025-12-08 13:55:25 +00:00
This PR introduces a new channel type for voice conversations. ref: #11481 ## Changes - Add database migration for channel_voice table with phone_number and provider_config - Create Channel::Voice model with E.164 phone number validation and Twilio config validation - Add voice channel association to Account model - Extend inbox helpers and types to support voice channels - Add voice channel setup UI with Twilio configuration form - Include voice channel in channel factory and list components - Add API routes and store actions for voice channel creation - Add comprehensive translations for voice channel management --------- Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> Co-authored-by: iamsivin <iamsivin@gmail.com>
66 lines
2.1 KiB
JavaScript
66 lines
2.1 KiB
JavaScript
import { useChannelIcon } from '../provider';
|
|
|
|
describe('useChannelIcon', () => {
|
|
it('returns correct icon for API channel', () => {
|
|
const inbox = { channel_type: 'Channel::Api' };
|
|
const { value: icon } = useChannelIcon(inbox);
|
|
expect(icon).toBe('i-ri-cloudy-fill');
|
|
});
|
|
|
|
it('returns correct icon for Facebook channel', () => {
|
|
const inbox = { channel_type: 'Channel::FacebookPage' };
|
|
const { value: icon } = useChannelIcon(inbox);
|
|
expect(icon).toBe('i-ri-messenger-fill');
|
|
});
|
|
|
|
it('returns correct icon for WhatsApp channel', () => {
|
|
const inbox = { channel_type: 'Channel::Whatsapp' };
|
|
const { value: icon } = useChannelIcon(inbox);
|
|
expect(icon).toBe('i-ri-whatsapp-fill');
|
|
});
|
|
|
|
it('returns correct icon for Voice channel', () => {
|
|
const inbox = { channel_type: 'Channel::Voice' };
|
|
const { value: icon } = useChannelIcon(inbox);
|
|
expect(icon).toBe('i-ri-phone-fill');
|
|
});
|
|
|
|
describe('Email channel', () => {
|
|
it('returns mail icon for generic email channel', () => {
|
|
const inbox = { channel_type: 'Channel::Email' };
|
|
const { value: icon } = useChannelIcon(inbox);
|
|
expect(icon).toBe('i-ri-mail-fill');
|
|
});
|
|
|
|
it('returns Microsoft icon for Microsoft email provider', () => {
|
|
const inbox = {
|
|
channel_type: 'Channel::Email',
|
|
provider: 'microsoft',
|
|
};
|
|
const { value: icon } = useChannelIcon(inbox);
|
|
expect(icon).toBe('i-ri-microsoft-fill');
|
|
});
|
|
|
|
it('returns Google icon for Google email provider', () => {
|
|
const inbox = {
|
|
channel_type: 'Channel::Email',
|
|
provider: 'google',
|
|
};
|
|
const { value: icon } = useChannelIcon(inbox);
|
|
expect(icon).toBe('i-ri-google-fill');
|
|
});
|
|
});
|
|
|
|
it('returns default icon for unknown channel type', () => {
|
|
const inbox = { channel_type: 'Channel::Unknown' };
|
|
const { value: icon } = useChannelIcon(inbox);
|
|
expect(icon).toBe('i-ri-global-fill');
|
|
});
|
|
|
|
it('returns default icon when channel type is undefined', () => {
|
|
const inbox = {};
|
|
const { value: icon } = useChannelIcon(inbox);
|
|
expect(icon).toBe('i-ri-global-fill');
|
|
});
|
|
});
|