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:
                       `<xtratelecom-sms-response>
                            <sms>
                                <codigo>
                                    ${code}
                                </codigo>
                                <descripcion>
                                    Envio en procesamiento
                                </descripcion>
                                <messageId>
                                    1
                                </messageId>
                            </sms>
                            <procesoId>
                                444328681
                            </procesoId>
                        </xtratelecom-sms-response>`
            }
        }]);
        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('Fake response');
    });
});