Chatwoot/app/javascript/dashboard/store/modules/specs/agents/mutations.spec.js
Sojan Jose c98907db49
Feature: Availability Statuses (#874)
Co-authored-by: Pranav Raj S <pranav@thoughtwoot.com>
2020-07-04 11:42:47 +05:30

99 lines
2.6 KiB
JavaScript

import * as types from '../../../mutation-types';
import { mutations } from '../../agents';
describe('#mutations', () => {
describe('#SET_AGENTS', () => {
it('set agent records', () => {
const state = { records: [] };
mutations[types.default.SET_AGENTS](state, [
{ id: 1, name: 'Agent1', email: 'agent1@chatwoot.com' },
]);
expect(state.records).toEqual([
{
id: 1,
name: 'Agent1',
email: 'agent1@chatwoot.com',
},
]);
});
});
describe('#ADD_AGENT', () => {
it('push newly created agent data to the store', () => {
const state = {
records: [{ id: 1, name: 'Agent1', email: 'agent1@chatwoot.com' }],
};
mutations[types.default.ADD_AGENT](state, {
id: 2,
name: 'Agent2',
email: 'agent2@chatwoot.com',
});
expect(state.records).toEqual([
{ id: 1, name: 'Agent1', email: 'agent1@chatwoot.com' },
{ id: 2, name: 'Agent2', email: 'agent2@chatwoot.com' },
]);
});
});
describe('#EDIT_AGENT', () => {
it('update agent record', () => {
const state = {
records: [{ id: 1, name: 'Agent1', email: 'agent1@chatwoot.com' }],
};
mutations[types.default.EDIT_AGENT](state, {
id: 1,
name: 'Agent2',
email: 'agent2@chatwoot.com',
});
expect(state.records).toEqual([
{ id: 1, name: 'Agent2', email: 'agent2@chatwoot.com' },
]);
});
});
describe('#DELETE_AGENT', () => {
it('delete agent record', () => {
const state = {
records: [{ id: 1, name: 'Agent1', email: 'agent1@chatwoot.com' }],
};
mutations[types.default.DELETE_AGENT](state, 1);
expect(state.records).toEqual([]);
});
});
describe('#UPDATE_AGENTS_PRESENCE', () => {
it('updates agent presence', () => {
const state = {
records: [
{
id: 1,
name: 'Agent1',
email: 'agent1@chatwoot.com',
availability_status: 'offline',
},
{
id: 2,
name: 'Agent1',
email: 'agent1@chatwoot.com',
availability_status: 'online',
},
],
};
mutations[types.default.UPDATE_AGENTS_PRESENCE](state, { '1': 'busy' });
expect(state.records).toEqual([
{
id: 1,
name: 'Agent1',
email: 'agent1@chatwoot.com',
availability_status: 'busy',
},
{
id: 2,
name: 'Agent1',
email: 'agent1@chatwoot.com',
},
]);
});
});
});