Skip to content

Commit

Permalink
feat(transports): ignore queue for pull transport
Browse files Browse the repository at this point in the history
  • Loading branch information
lykmapipo committed Feb 24, 2020
1 parent 6983d6f commit 8da8d2d
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 4 deletions.
3 changes: 2 additions & 1 deletion lib/message.model.js
Original file line number Diff line number Diff line change
Expand Up @@ -882,6 +882,7 @@ MessageSchema.methods.queue = function queue(done) {
//for actul send
else if (message.mode === SEND_MODE_PULL) {
worker.queue.emit('job queued', message);
return;
}

//queue message for later send
Expand All @@ -900,7 +901,7 @@ MessageSchema.methods.queue = function queue(done) {
const job = message.runInBackground(jobDetails);

//ensure message has been queued
job.save(function(error) {
return job.save(function(error) {
if (error) {
worker.queue.emit('job error', error);
return cb(error);
Expand Down
7 changes: 4 additions & 3 deletions lib/transports/smssync.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ const _ = require('lodash');
const { getString, getBoolean } = require('@lykmapipo/env');
const { smssync } = require('smssync');

const { TYPE_SMS, SEND_MODE_PULL, STATE_SENT } = require('../common');
const { TYPE_SMS, SEND_MODE_PULL } = require('../common');

/**
* @name defaults
Expand Down Expand Up @@ -151,9 +151,10 @@ exports._send = function(message, done) {
exports.send = function(message, done) {
// ensure message sender
message.sender = message.sender || exports.name;
message.tyoe = TYPE_SMS;
message.type = TYPE_SMS;
message.mode = SEND_MODE_PULL;
message.state = STATE_SENT;
// message.state = STATE_SENT;
// message.sentAt = new Date();
message.queuedAt = new Date();

// perform actual smssync sending
Expand Down
57 changes: 57 additions & 0 deletions test/integration/message.queue.smssync.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
'use strict';

/* dependencies */
const { expect, clear } = require('@lykmapipo/mongoose-test-helpers');
const { Message, worker } = require('../..');

describe('smssync transport queue', () => {
before(() => {
delete process.env.DEBUG;
});

before(done => clear(done));
before(done => worker.clear(done));
before(done => worker.reset(done));
before(() => worker.start({ types: Message.TYPES }));

it('should be able to queue message', done => {
const message = Message.fakeExcept(
'sentAt',
'failedAt',
'queuedAt',
'deliveredAt',
'result'
);
message.transport = 'smssync';

// listen to queue events
worker.queue
.on('job queued', queued => {
expect(queued).to.exist;
expect(queued._id).to.be.eql(message._id);
expect(queued.to).to.exist;
expect(queued.to).to.be.eql(message.to);
expect(queued._id).to.exist;
// expect(queued.sentAt).to.exist;
expect(queued.deliveredAt).to.not.exist;
expect(queued.failedAt).to.not.exist;
// expect(queued.result).to.exist;
// expect(queued.result.success).to.exist;
// expect(queued.result.success).to.be.true;
done(null, queued);
})
.on('error', error => {
done(error);
});

message.queue();
});

after(done => worker.clear(done));
after(done => worker.stop(done));
after(done => clear(done));

after(() => {
delete process.env.DEBUG;
});
});

0 comments on commit 8da8d2d

Please sign in to comment.