assert(communication.db.verificationComplete.called);
});
+ it('unsubscription from deleted topic deletes topic', async function () {
+ communication.db.verificationGetById.restore();
+ verification.mode = 'unsubscribe';
+ sinon.stub(communication.db, 'verificationGetById').resolves(verification);
+ communication.db.topicGetById.restore();
+ sinon.stub(communication.db, 'topicGetById').resolves({
+ ...topic,
+ isDeleted: true,
+ });
+
+ await communication.verificationProcess(dbCtx, callback, topicId, requestId);
+
+ assert(communication.db.subscriptionDelete.called);
+ assert(communication.db.verificationComplete.called);
+ assert(communication.db.topicPendingDelete.called);
+ });
+
it('unsubscription denial succeeds', async function () {
communication.db.verificationGetById.restore();
verification.mode = 'unsubscribe';
}); // verificationClaimAndProcessById
describe('workFeed', function () {
- let wanted;
+ let stubCtx, wanted;
beforeEach(function () {
+ stubCtx = {};
sinon.stub(communication, 'topicFetchProcess');
sinon.stub(communication, 'verificationProcess');
sinon.stub(communication, 'subscriptionDeliveryProcess');
const expectedLength = [topicIds, verificationIds, subscriptionIds].map((x) => x.length).reduce((a, b) => a + b, 0);
wanted = 10;
- const result = await communication.workFeed(wanted);
+ const result = await communication.workFeed(stubCtx, wanted);
assert.strictEqual(result.length, expectedLength);
});
it('covers no wanted work', async function () {
- const result = await communication.workFeed(0);
+ wanted = 0;
+ const result = await communication.workFeed(stubCtx, wanted);
assert.strictEqual(result.length, 0);
assert(!communication.db.topicFetchClaim.called);
assert(!communication.db.verificationClaim.called);
const expectedLength = topicIds.length;
wanted = 10;
- const result = await communication.workFeed(wanted);
+ const result = await communication.workFeed(stubCtx, wanted);
assert.strictEqual(result.length, expectedLength);
});