diff --git a/src/background/actions/needs-review-card-selection-action-creator.ts b/src/background/actions/needs-review-card-selection-action-creator.ts index c2aac81350b..6da3d6c945e 100644 --- a/src/background/actions/needs-review-card-selection-action-creator.ts +++ b/src/background/actions/needs-review-card-selection-action-creator.ts @@ -72,14 +72,16 @@ export class NeedsReviewCardSelectionActionCreator { ); }; - private onToggleVisualHelper = async (payload: VisualizationTogglePayload): Promise => { + private onToggleVisualHelper = async (payload: VisualizationTogglePayload | null): Promise => { await this.needsReviewCardSelectionActions.toggleVisualHelper.invoke(null); - if (payload.enabled) { - await this.visualizationActions.disableVisualization.invoke(payload.test); - } else { - await this.visualizationActions.enableVisualization.invoke(payload); + if (payload && payload.enabled !== undefined && payload.test !== undefined) { + if (payload.enabled) { + await this.visualizationActions.disableVisualization.invoke(payload.test); + } else { + await this.visualizationActions.enableVisualization.invoke(payload); + } + this.telemetryEventHandler.publishTelemetry(TelemetryEvents.VISUAL_HELPER_TOGGLED, payload); } - this.telemetryEventHandler.publishTelemetry(TelemetryEvents.VISUAL_HELPER_TOGGLED, payload); }; private onCollapseAllRules = async (payload: BaseActionPayload): Promise => { diff --git a/src/tests/unit/tests/background/actions/needs-review-card-selection-action-creator.test.ts b/src/tests/unit/tests/background/actions/needs-review-card-selection-action-creator.test.ts index 9cb4b206606..006cfcf236c 100644 --- a/src/tests/unit/tests/background/actions/needs-review-card-selection-action-creator.test.ts +++ b/src/tests/unit/tests/background/actions/needs-review-card-selection-action-creator.test.ts @@ -14,7 +14,7 @@ import * as TelemetryEvents from 'common/extension-telemetry-events'; import { Messages } from 'common/messages'; import { VisualizationType } from 'common/types/visualization-type'; import { MockInterpreter } from 'tests/unit/tests/background/global-action-creators/mock-interpreter'; -import { IMock, Mock, Times } from 'typemoq'; +import { IMock, It, Mock, Times } from 'typemoq'; import { createAsyncActionMock } from '../global-action-creators/action-creator-test-helpers'; @@ -141,6 +141,37 @@ describe('NeedsReviewCardSelectionActionCreator', () => { visualizationActionsMock.verify(actions => actions['disableVisualization'], Times.once()); }); + test('onToggleVisualHelper with null payload only toggles visual helper', async () => { + const toggleVisualHelperMock = createAsyncActionMock(null); + const actionsMock = createNeedsReviewActionsMock( + 'toggleVisualHelper', + toggleVisualHelperMock.object, + ); + + const testSubject = new NeedsReviewCardSelectionActionCreator( + interpreterMock.object, + actionsMock.object, + visualizationActionsMock.object, + telemetryEventHandlerMock.object, + ); + + testSubject.registerCallbacks(); + + await interpreterMock.simulateMessage( + Messages.NeedsReviewCardSelection.ToggleVisualHelper, + null, + tabId, + ); + + toggleVisualHelperMock.verifyAll(); + visualizationActionsMock.verify(actions => actions['enableVisualization'], Times.never()); + visualizationActionsMock.verify(actions => actions['disableVisualization'], Times.never()); + telemetryEventHandlerMock.verify( + handler => handler.publishTelemetry(It.isAny(), It.isAny()), + Times.never(), + ); + }); + test('onCollapseAllRules', async () => { const payloadStub: BaseActionPayload = {}; const collapseAllRulesActionMock = createAsyncActionMock(null);