From 4d16939b4a96001440be34542efc6f1df2e58890 Mon Sep 17 00:00:00 2001 From: Jon Winton Date: Wed, 12 Jul 2017 09:50:58 -0400 Subject: [PATCH] Unpublish Plugin Hook (#419) * Adding in an unpublish plugin hook * Adding test --- lib/services/uris.js | 14 +++++++++++--- lib/services/uris.test.js | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/services/uris.js b/lib/services/uris.js index 47cfc66d..0aaa63e3 100644 --- a/lib/services/uris.js +++ b/lib/services/uris.js @@ -5,7 +5,8 @@ const _ = require('lodash'), db = require('./db'), references = require('./references'), notifications = require('./notifications'), - siteService = require('./sites'); + siteService = require('./sites'), + plugins = require('../plugins'); /** * @param {string} uri @@ -50,9 +51,16 @@ function del(uri, locals) { return get(uri, locals).then(function (oldData) { return db.del(uri).then(function () { const prefix = references.getUriPrefix(uri), - site = siteService.getSiteFromPrefix(prefix); + site = siteService.getSiteFromPrefix(prefix), + pageUrl = buf.decode(uri.split('/').pop()); - notifications.notify(site, 'unpublished', { url: buf.decode(uri.split('/').pop())}); + // Call the unpublish hook for plugins + plugins.executeHook('unpublish', { + url: pageUrl, + uri: oldData + }); + + notifications.notify(site, 'unpublished', { url: pageUrl }); }).return(oldData); }); } diff --git a/lib/services/uris.test.js b/lib/services/uris.test.js index 21bdf577..2a269872 100644 --- a/lib/services/uris.test.js +++ b/lib/services/uris.test.js @@ -7,6 +7,7 @@ const _ = require('lodash'), sinon = require('sinon'), siteService = require('./sites'), notifications = require('./notifications'), + plugins = require('../plugins'), lib = require('./' + filename); describe(_.startCase(filename), function () { @@ -17,6 +18,7 @@ describe(_.startCase(filename), function () { sandbox.stub(db, 'get'); sandbox.stub(db, 'del'); sandbox.stub(notifications, 'notify'); + sandbox.stub(plugins, 'executeHook'); sandbox.stub(siteService, 'getSiteFromPrefix'); }); @@ -41,6 +43,20 @@ describe(_.startCase(filename), function () { }); }); + it('plugin unpublish hook', function () { + const uri = 'something/uris/bmljZXVybA==', + site = {a: 'b'}, + oldData = {url: 'niceurl'}; + + db.del.returns(bluebird.resolve()); + db.get.returns(bluebird.resolve(oldData)); + siteService.getSiteFromPrefix.returns(site); + + return fn(uri).then(function () { + sinon.assert.calledWith(plugins.executeHook, 'unpublish'); + }); + }); + it('deletes', function () { const uri = 'something/uris/some-uri', site = {a: 'b'},