136 lines
4.5 KiB
JavaScript
136 lines
4.5 KiB
JavaScript
import {
|
|
replaceVariablesInMessage,
|
|
getFirstName,
|
|
getLastName,
|
|
getMessageVariables,
|
|
getUndefinedVariablesInMessage,
|
|
} from '../messageHelper';
|
|
|
|
const variables = {
|
|
'contact.name': 'John Doe',
|
|
'contact.first_name': 'John',
|
|
'contact.last_name': 'Doe',
|
|
'contact.email': 'john.p@example.com',
|
|
'contact.phone': '1234567890',
|
|
'conversation.id': 1,
|
|
'agent.first_name': 'Samuel',
|
|
'agent.last_name': 'Smith',
|
|
'agent.email': 'samuel@gmail.com',
|
|
};
|
|
|
|
describe('#replaceVariablesInMessage', () => {
|
|
it('returns the message with variable name', () => {
|
|
const message =
|
|
'No issues. Hey {{contact.first_name}}, we will send the reset instructions to your email {{ contact.email}}. The {{ agent.first_name }} {{ agent.last_name }} will take care of everything. Your conversation id is {{ conversation.id }}.';
|
|
expect(replaceVariablesInMessage({ message, variables })).toBe(
|
|
'No issues. Hey John, we will send the reset instructions to your email john.p@example.com. The Samuel Smith will take care of everything. Your conversation id is 1.'
|
|
);
|
|
});
|
|
|
|
it('returns the message with variable name having white space', () => {
|
|
const message = 'hey {{contact.name}} how may I help you?';
|
|
expect(replaceVariablesInMessage({ message, variables })).toBe(
|
|
'hey John Doe how may I help you?'
|
|
);
|
|
});
|
|
|
|
it('returns the message with variable email', () => {
|
|
const message =
|
|
'No issues. We will send the reset instructions to your email at {{contact.email}}';
|
|
expect(replaceVariablesInMessage({ message, variables })).toBe(
|
|
'No issues. We will send the reset instructions to your email at john.p@example.com'
|
|
);
|
|
});
|
|
|
|
it('returns the message with multiple variables', () => {
|
|
const message =
|
|
'hey {{ contact.name }}, no issues. We will send the reset instructions to your email at {{contact.email}}';
|
|
expect(replaceVariablesInMessage({ message, variables })).toBe(
|
|
'hey John Doe, no issues. We will send the reset instructions to your email at john.p@example.com'
|
|
);
|
|
});
|
|
|
|
it('returns the message if the variable is not present in variables', () => {
|
|
const message = 'Please dm me at {{contact.twitter}}';
|
|
expect(replaceVariablesInMessage({ message, variables })).toBe(
|
|
'Please dm me at '
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('#getFirstName', () => {
|
|
it('returns the first name of the contact', () => {
|
|
const name = 'John Doe';
|
|
expect(getFirstName({ name })).toBe('John');
|
|
});
|
|
|
|
it('returns the first name of the contact with multiple names', () => {
|
|
const name = 'John Doe Smith';
|
|
expect(getFirstName({ name })).toBe('John');
|
|
});
|
|
});
|
|
|
|
describe('#getLastName', () => {
|
|
it('returns the last name of the contact', () => {
|
|
const name = 'John Doe';
|
|
expect(getLastName({ name })).toBe('Doe');
|
|
});
|
|
|
|
it('returns the last name of the contact with multiple names', () => {
|
|
const name = 'John Doe Smith';
|
|
expect(getLastName({ name })).toBe('Smith');
|
|
});
|
|
});
|
|
|
|
describe('#getMessageVariables', () => {
|
|
it('returns the variables', () => {
|
|
const conversation = {
|
|
meta: {
|
|
assignee: {
|
|
name: 'Samuel Smith',
|
|
email: 'samuel@example.com',
|
|
},
|
|
sender: {
|
|
name: 'John Doe',
|
|
email: 'john.doe@gmail.com',
|
|
phone_number: '1234567890',
|
|
},
|
|
},
|
|
id: 1,
|
|
};
|
|
expect(getMessageVariables({ conversation })).toEqual({
|
|
'contact.name': 'John Doe',
|
|
'contact.first_name': 'John',
|
|
'contact.last_name': 'Doe',
|
|
'contact.email': 'john.doe@gmail.com',
|
|
'contact.phone': '1234567890',
|
|
'conversation.id': 1,
|
|
'agent.name': 'Samuel Smith',
|
|
'agent.first_name': 'Samuel',
|
|
'agent.last_name': 'Smith',
|
|
'agent.email': 'samuel@example.com',
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('#getUndefinedVariablesInMessage', () => {
|
|
it('returns the undefined variables', () => {
|
|
const message = 'Please dm me at {{contact.twitter}}';
|
|
expect(
|
|
getUndefinedVariablesInMessage({ message, variables }).length
|
|
).toEqual(1);
|
|
expect(getUndefinedVariablesInMessage({ message, variables })).toEqual(
|
|
expect.arrayContaining(['{{contact.twitter}}'])
|
|
);
|
|
});
|
|
it('skip variables in string with code blocks', () => {
|
|
const message =
|
|
'hey {{contact_name}} how are you? ``` code: {{contact_name}} ```';
|
|
expect(
|
|
getUndefinedVariablesInMessage({ message, variables }).length
|
|
).toEqual(1);
|
|
expect(getUndefinedVariablesInMessage({ message, variables })).toEqual(
|
|
expect.arrayContaining(['{{contact_name}}'])
|
|
);
|
|
});
|
|
});
|