mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-04 04:57:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			165 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import conversationAPI from '../../inbox/conversation';
 | 
						|
import ApiClient from '../../ApiClient';
 | 
						|
import describeWithAPIMock from '../apiSpecHelper';
 | 
						|
 | 
						|
describe('#ConversationAPI', () => {
 | 
						|
  it('creates correct instance', () => {
 | 
						|
    expect(conversationAPI).toBeInstanceOf(ApiClient);
 | 
						|
    expect(conversationAPI).toHaveProperty('get');
 | 
						|
    expect(conversationAPI).toHaveProperty('show');
 | 
						|
    expect(conversationAPI).toHaveProperty('create');
 | 
						|
    expect(conversationAPI).toHaveProperty('update');
 | 
						|
    expect(conversationAPI).toHaveProperty('delete');
 | 
						|
    expect(conversationAPI).toHaveProperty('toggleStatus');
 | 
						|
    expect(conversationAPI).toHaveProperty('assignAgent');
 | 
						|
    expect(conversationAPI).toHaveProperty('assignTeam');
 | 
						|
    expect(conversationAPI).toHaveProperty('markMessageRead');
 | 
						|
    expect(conversationAPI).toHaveProperty('toggleTyping');
 | 
						|
    expect(conversationAPI).toHaveProperty('mute');
 | 
						|
    expect(conversationAPI).toHaveProperty('unmute');
 | 
						|
    expect(conversationAPI).toHaveProperty('meta');
 | 
						|
    expect(conversationAPI).toHaveProperty('sendEmailTranscript');
 | 
						|
  });
 | 
						|
 | 
						|
  describeWithAPIMock('API calls', context => {
 | 
						|
    it('#get conversations', () => {
 | 
						|
      conversationAPI.get({
 | 
						|
        inboxId: 1,
 | 
						|
        status: 'open',
 | 
						|
        assigneeType: 'me',
 | 
						|
        page: 1,
 | 
						|
        labels: [],
 | 
						|
        teamId: 1,
 | 
						|
      });
 | 
						|
      expect(context.axiosMock.get).toHaveBeenCalledWith(
 | 
						|
        '/api/v1/conversations',
 | 
						|
        {
 | 
						|
          params: {
 | 
						|
            inbox_id: 1,
 | 
						|
            team_id: 1,
 | 
						|
            status: 'open',
 | 
						|
            assignee_type: 'me',
 | 
						|
            page: 1,
 | 
						|
            labels: [],
 | 
						|
          },
 | 
						|
        }
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it('#search', () => {
 | 
						|
      conversationAPI.search({
 | 
						|
        q: 'leads',
 | 
						|
        page: 1,
 | 
						|
      });
 | 
						|
 | 
						|
      expect(context.axiosMock.get).toHaveBeenCalledWith(
 | 
						|
        '/api/v1/conversations/search',
 | 
						|
        {
 | 
						|
          params: {
 | 
						|
            q: 'leads',
 | 
						|
            page: 1,
 | 
						|
          },
 | 
						|
        }
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it('#toggleStatus', () => {
 | 
						|
      conversationAPI.toggleStatus({ conversationId: 12, status: 'online' });
 | 
						|
      expect(context.axiosMock.post).toHaveBeenCalledWith(
 | 
						|
        `/api/v1/conversations/12/toggle_status`,
 | 
						|
        {
 | 
						|
          status: 'online',
 | 
						|
          snoozed_until: null,
 | 
						|
        }
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it('#assignAgent', () => {
 | 
						|
      conversationAPI.assignAgent({ conversationId: 12, agentId: 34 });
 | 
						|
      expect(context.axiosMock.post).toHaveBeenCalledWith(
 | 
						|
        `/api/v1/conversations/12/assignments?assignee_id=34`,
 | 
						|
        {}
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it('#assignTeam', () => {
 | 
						|
      conversationAPI.assignTeam({ conversationId: 12, teamId: 1 });
 | 
						|
      expect(context.axiosMock.post).toHaveBeenCalledWith(
 | 
						|
        `/api/v1/conversations/12/assignments`,
 | 
						|
        {
 | 
						|
          team_id: 1,
 | 
						|
        }
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it('#markMessageRead', () => {
 | 
						|
      conversationAPI.markMessageRead({ id: 12 });
 | 
						|
      expect(context.axiosMock.post).toHaveBeenCalledWith(
 | 
						|
        `/api/v1/conversations/12/update_last_seen`
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it('#toggleTyping', () => {
 | 
						|
      conversationAPI.toggleTyping({
 | 
						|
        conversationId: 12,
 | 
						|
        status: 'typing_on',
 | 
						|
      });
 | 
						|
      expect(context.axiosMock.post).toHaveBeenCalledWith(
 | 
						|
        `/api/v1/conversations/12/toggle_typing_status`,
 | 
						|
        {
 | 
						|
          typing_status: 'typing_on',
 | 
						|
        }
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it('#mute', () => {
 | 
						|
      conversationAPI.mute(45);
 | 
						|
      expect(context.axiosMock.post).toHaveBeenCalledWith(
 | 
						|
        '/api/v1/conversations/45/mute'
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it('#unmute', () => {
 | 
						|
      conversationAPI.unmute(45);
 | 
						|
      expect(context.axiosMock.post).toHaveBeenCalledWith(
 | 
						|
        '/api/v1/conversations/45/unmute'
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it('#meta', () => {
 | 
						|
      conversationAPI.meta({
 | 
						|
        inboxId: 1,
 | 
						|
        status: 'open',
 | 
						|
        assigneeType: 'me',
 | 
						|
        labels: [],
 | 
						|
        teamId: 1,
 | 
						|
      });
 | 
						|
      expect(context.axiosMock.get).toHaveBeenCalledWith(
 | 
						|
        '/api/v1/conversations/meta',
 | 
						|
        {
 | 
						|
          params: {
 | 
						|
            inbox_id: 1,
 | 
						|
            team_id: 1,
 | 
						|
            status: 'open',
 | 
						|
            assignee_type: 'me',
 | 
						|
            labels: [],
 | 
						|
          },
 | 
						|
        }
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it('#sendEmailTranscript', () => {
 | 
						|
      conversationAPI.sendEmailTranscript({
 | 
						|
        conversationId: 45,
 | 
						|
        email: 'john@acme.inc',
 | 
						|
      });
 | 
						|
      expect(context.axiosMock.post).toHaveBeenCalledWith(
 | 
						|
        '/api/v1/conversations/45/transcript',
 | 
						|
        {
 | 
						|
          email: 'john@acme.inc',
 | 
						|
        }
 | 
						|
      );
 | 
						|
    });
 | 
						|
  });
 | 
						|
});
 |