import { NotProvidedCredentialsError } from '../../errors'; import { AwsSMSSenderClient, AzureSMSSenderClient, TwilioSMSSenderClient, VonageSMSSenderClient, } from './index'; import { SMSSender } from '../../../__tests__/__mocks__/SMSSender.mock'; describe('Client tests.', () => { test('AwsSMSSender should be defined.', () => { expect(AwsSMSSenderClient.default).toBeDefined(); }); test('AzureSMSSender should be defined.', () => { expect(AzureSMSSenderClient.default).toBeDefined(); }); test('TwilioSMSSender should be defined.', () => { expect(TwilioSMSSenderClient.default).toBeDefined(); }); test('VonageSMSSender should be defined.', () => { expect(VonageSMSSenderClient.default).toBeDefined(); }); test('SMSSender must implement ISMSSender interface.', async () => { const smsSender = new SMSSender(); const results = await smsSender.send(['+1234567890'], 'Hello world'); expect('send' in smsSender).toBe(true); expect(smsSender.send).toBeInstanceOf(Function); expect(results.sent).toBeInstanceOf(Array); }); test('Should return NotProvidedCredentialsError.', () => { expect(() => new AwsSMSSenderClient.default()).toThrow( new NotProvidedCredentialsError(), ); expect(() => new TwilioSMSSenderClient.default()).toThrow( new NotProvidedCredentialsError(), ); expect(() => new VonageSMSSenderClient.default()).toThrow( new NotProvidedCredentialsError(), ); expect(() => new AzureSMSSenderClient.default()).toThrow( new NotProvidedCredentialsError(), ); }); });