diff --git a/lib/push/publishing.js b/lib/push/publishing.js index b8ea9ec8..0c08ca74 100644 --- a/lib/push/publishing.js +++ b/lib/push/publishing.js @@ -9,7 +9,11 @@ import errorBuffer from '../utils/error-buffer' * to an error buffer instead. */ export function publishEntities (entities) { - return Promise.map(entities, (entity) => { + return Promise.map(entities, (entity, index) => { + if (!entity) { + errorBuffer.push({'publishEntitiesError': 'undefined entity: at index ' + index}) + return Promise.resolve(entity) + } return entity.publish() .then((entity) => { log.info(`Published ${entity.sys.type} ${getEntityName(entity)}`) @@ -26,7 +30,12 @@ export function publishEntities (entities) { * Returns a reject promise if unpublishing fails. */ export function unpublishEntities (entities) { - return Promise.map(entities, (entity) => { + return Promise.map(entities, (entity, index) => { + if (!entity) { + errorBuffer.push({'publishEntitiesError': 'undefined entity: at index ' + index}) + return Promise.resolve(entity) + } + return entity.unpublish() .then((entity) => { log.info(`Unpublished ${entity.sys.type} ${getEntityName(entity)}`) diff --git a/test/push/publishing-test.js b/test/push/publishing-test.js index ba50357b..54c1974c 100644 --- a/test/push/publishing-test.js +++ b/test/push/publishing-test.js @@ -70,11 +70,12 @@ test('Fails to publish entities', (t) => { })) publishEntities([ { sys: {id: '123'}, publish: publishStub }, + undefined, { sys: {id: '456'}, publish: publishStub } ]) .then((errors) => { t.equals(publishStub.callCount, 2, 'tries to publish assets') - t.equals(errorBufferMock.push.callCount, 2, 'logs 2 errors') + t.equals(errorBufferMock.push.callCount, 3, 'logs 3 errors') teardown() t.end() }) @@ -113,7 +114,7 @@ test('Fails to unpublish entities because theyre already unpublished', (t) => { setup() const unpublishStub = sinon.stub().returns(Promise.reject({name: 'BadRequest'})) unpublishEntities([ - { sys: {id: '123', type: 'Asset'}, unpublish: unpublishStub } + { sys: {id: '123', type: 'Asset'}, undefined, unpublish: unpublishStub } ]) .then((entities) => { t.equals(unpublishStub.callCount, 1, 'tries to unpublish assets')