import { phone, random } from 'faker' import { PhoneUtils } from '../../utils/phone.utils' import { ComteleService } from './comtele.service' jest.mock('comtele-sdk', () => ({ TextMessageService: function() { this.send = jest.fn() }, })) describe('ComteleService', () => { let subject: ComteleService beforeAll(() => { subject = new ComteleService() subject.onModuleInit() }) describe('#sendSMS()', () => { const message = random.word() const controlId = random.word() let phoneNumber: string let result: any beforeEach(() => { subject['_textMessageService'].send = jest.fn((_id, _message, _phoneNumber, callback) => callback(result)) }) describe('when send SMS with country code', () => { beforeAll(() => { phoneNumber = `+55${phone.phoneNumber()}` result = { Success: true } }) it('remove country code', async () => { await subject.sendSMS({ message, phoneNumber, controlId }) expect(subject['_textMessageService'].send).toBeCalledWith( controlId, message, [PhoneUtils.toE164(phoneNumber).replace('+55', '')], expect.anything(), ) }) }) describe('when comtele success result is true', () => { beforeAll(() => { phoneNumber = phone.phoneNumber() result = { Success: true } }) it('function is resolved', async () => { await expect(subject.sendSMS({ message, phoneNumber, controlId })).resolves.toEqual(undefined) }) }) describe('when comtele success result is false', () => { beforeAll(() => { phoneNumber = phone.phoneNumber() result = { Success: false, Message: random.words() } }) it('function is reject with message error', async () => { await expect(subject.sendSMS({ message, phoneNumber, controlId })).rejects.toThrowError(result.Message) }) }) }) })