const app = require('vn-loopback/server/server'); const soap = require('soap'); describe('sms send()', () => { it('should return the expected message and status code', async() => { const code = 200; const smsConfig = await app.models.SmsConfig.findOne(); const soapClient = await soap.createClientAsync(smsConfig.uri); spyOn(soap, 'createClientAsync').and.returnValue(soapClient); spyOn(soapClient, 'sendSMSAsync').and.returnValue([{ result: { $value: ` ${code} Envio en procesamiento 1 444328681 ` } }]); let ctx = {req: {accessToken: {userId: 1}}}; let result = await app.models.Sms.send(ctx, 105, 'destination', 'My SMS Body'); expect(result.statusCode).toEqual(200); expect(result.status).toContain('Envio en procesamiento'); }); it(`should throw if the response code isn't 200`, async() => { let error; const code = 400; const smsConfig = await app.models.SmsConfig.findOne(); const soapClient = await soap.createClientAsync(smsConfig.uri); spyOn(soap, 'createClientAsync').and.returnValue(soapClient); spyOn(soapClient, 'sendSMSAsync').and.returnValue([{ result: { $value: ` ${code} Envio en procesamiento 1 444328681 ` } }]); let ctx = {req: {accessToken: {userId: 1}}}; try { await app.models.Sms.send(ctx, 105, 'destination', 'My SMS Body'); } catch (err) { error = err; } expect(error.message).toEqual(`We weren't able to send this SMS`); }); });