paid-services
Version:
Lightning Paid Services library
89 lines (80 loc) • 2.32 kB
JavaScript
const {deepStrictEqual, rejects} = require('node:assert/strict');
const {test} = require('node:test');
const method = require('./../../actions/send_twilio_sms');
const makeArgs = overrides => {
const args = {
account: 'account',
fetch: () => new Promise(resolve => resolve({status: 200})),
from: 'from',
key: 'key',
text: 'text',
to: 'to',
};
Object.keys(overrides).forEach(k => args[k] = overrides[k]);
return args;
};
const tests = [
{
args: makeArgs({account: undefined}),
description: 'An account id is required',
error: [400, 'ExpectedAccountIdToSendTwilioSmsMessage'],
},
{
args: makeArgs({fetch: undefined}),
description: 'A fetch method is required',
error: [400, 'ExpectedFetchMethodToSendTwilioSmsMessage'],
},
{
args: makeArgs({from: undefined}),
description: 'A from email is required',
error: [400, 'ExpectedFromSmsNumberToSendTwilioSmsMessage'],
},
{
args: makeArgs({key: undefined}),
description: 'An auth key is required',
error: [400, 'ExpectedAuthApiKeyToSendTwilioSmsMessage'],
},
{
args: makeArgs({text: undefined}),
description: 'A message is required',
error: [400, 'ExpectedTextToSendInTwilioSmsMessage'],
},
{
args: makeArgs({to: undefined}),
description: 'A destination is required',
error: [400, 'ExpectedToNumberToSendTwilioSmsMessage'],
},
{
args: makeArgs({fetch: () => new Promise((n, reject) => reject('err'))}),
description: 'An SMS is not sent',
error: [500, 'UnexpectedErrorSendingSmsViaTwilio', {err: 'err'}],
},
{
args: makeArgs({
fetch: () => new Promise(resolve => resolve({status: 500}))
}),
description: 'An SMS is not sent due to unexpected status code',
error: [503, 'UnexpectedTwilioSmsStatus', {code: 500}],
},
{
args: makeArgs({}),
description: 'An SMS is sent',
},
];
tests.forEach(({args, description, error, expected}) => {
test(description, async () => {
if (!!error) {
await rejects(
method(args),
err => {
deepStrictEqual(err, error, 'Got error');
return true;
},
'Got error'
);
} else {
const res = await method(args);
deepStrictEqual(res, expected, 'Got expected result');
}
});
});