diff --git a/src/image-alt-text/opportunityHandler.js b/src/image-alt-text/opportunityHandler.js index 63ec4e75..d296dba2 100644 --- a/src/image-alt-text/opportunityHandler.js +++ b/src/image-alt-text/opportunityHandler.js @@ -29,8 +29,14 @@ export async function syncAltTextSuggestions({ opportunity, newSuggestions, log const existingSuggestions = await opportunity.getSuggestions(); // eslint-disable-next-line max-len - const ignoredSuggestions = existingSuggestions.filter((s) => s.getStatus() === SuggestionModel.STATUSES.SKIPPED); + const ignoredSuggestions = existingSuggestions.filter((s) => { + log.info(`suggestion data: ${JSON.stringify(s.getData())}`); + log.info(`suggestion status: ${s.getStatus()}`); + return s.getStatus() === SuggestionModel.STATUSES.SKIPPED; + }); + log.info(`ignored suggestions: ${JSON.stringify(ignoredSuggestions)}`); const ignoredSuggestionIds = ignoredSuggestions.map((s) => s.getData().recommendations[0].id); + log.info(`ignored suggestion ids: ${JSON.stringify(ignoredSuggestionIds)}`); // Remove existing suggestions that were not ignored await Promise.all(existingSuggestions diff --git a/test/audits/image-alt-text/opportunity-handler.test.js b/test/audits/image-alt-text/opportunity-handler.test.js index 5f1cbb3f..9a6d7082 100644 --- a/test/audits/image-alt-text/opportunity-handler.test.js +++ b/test/audits/image-alt-text/opportunity-handler.test.js @@ -35,6 +35,7 @@ describe('Image Alt Text Opportunity Handler', () => { id: 'suggestion-1', getStatus: () => 'NEW', status: 'NEW', + getData: () => ({ recommendations: [{ id: 'suggestion-1' }] }), remove: sinon.stub().resolves(), }]), addSuggestions: sinon @@ -161,6 +162,15 @@ describe('Image Alt Text Opportunity Handler', () => { it('should handle errors when adding suggestions', async () => { dataAccessStub.Opportunity.allBySiteIdAndStatus.resolves([altTextOppty]); + // Update mock suggestion to include getData + altTextOppty.getSuggestions.returns([{ + id: 'suggestion-1', + getStatus: () => 'NEW', + status: 'NEW', + getData: () => ({ recommendations: [{ id: 'suggestion-1' }] }), + remove: sinon.stub().resolves(), + }]); + // Mock error response from addSuggestions altTextOppty.addSuggestions.returns({ errorItems: [ @@ -185,6 +195,15 @@ describe('Image Alt Text Opportunity Handler', () => { it('should throw error when all suggestions fail to create', async () => { dataAccessStub.Opportunity.allBySiteIdAndStatus.resolves([altTextOppty]); + // Update mock suggestion to include getData + altTextOppty.getSuggestions.returns([{ + id: 'suggestion-1', + getStatus: () => 'NEW', + status: 'NEW', + getData: () => ({ recommendations: [{ id: 'suggestion-1' }] }), + remove: sinon.stub().resolves(), + }]); + // Mock error response from addSuggestions with no successful creations altTextOppty.addSuggestions.returns({ errorItems: [