Skip to content

Commit 5183734

Browse files
authored
fix(automated-checks): needs review data missing in details view (#6548)
#### Details Needs review card view data was not being calculated correctly, this fixes that. Also improves tests to catch this issue if it were to happen again. ##### Motivation Feature work. ##### Context n/a #### Pull request checklist <!-- If a checklist item is not applicable to this change, write "n/a" in the checkbox --> - [ ] Addresses an existing issue: #0000 - [x] Ran `yarn fastpass` - [x] Added/updated relevant unit test(s) (and ran `yarn test`) - [x] Verified code coverage for the changes made. Check coverage report at: `<rootDir>/test-results/unit/coverage` - [x] PR title *AND* final merge commit title both start with a semantic tag (`fix:`, `chore:`, `feat(feature-name):`, `refactor:`). See `CONTRIBUTING.md`. - [ ] (UI changes only) Added screenshots/GIFs to description above - [ ] (UI changes only) Verified usability with NVDA/JAWS
1 parent 1e3ebf9 commit 5183734

File tree

4 files changed

+63
-15
lines changed

4 files changed

+63
-15
lines changed

src/DetailsView/components/details-view-content.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { NamedFC } from 'common/react/named-fc';
1010
import { GetCardViewData } from 'common/rule-based-view-model-provider';
1111
import {
1212
ConvertAssessmentStoreDataToScanNodeResultsCallback,
13-
convertUnifiedStoreDataToScanNodeResults,
13+
ConvertUnifiedStoreDataToScanNodeResultsCallback,
1414
} from 'common/store-data-to-scan-node-result-converter';
1515
import { ScanMetadata } from 'common/types/store-data/unified-data-interface';
1616
import {
@@ -52,6 +52,7 @@ export type DetailsViewContentDeps = {
5252
testViewContainerProvider: TestViewContainerProvider;
5353
defaultRulesMap: ScannerRuleInfoMap;
5454
convertAssessmentStoreDataToScanNodeResults: ConvertAssessmentStoreDataToScanNodeResultsCallback;
55+
convertUnifiedStoreDataToScanNodeResults: ConvertUnifiedStoreDataToScanNodeResultsCallback;
5556
} & InteractiveHeaderDeps &
5657
DetailsViewOverlayDeps &
5758
DetailsViewBodyDeps;
@@ -118,7 +119,7 @@ export const DetailsViewContent = NamedFC<DetailsViewContentProps>('DetailsViewC
118119
const selectedTest =
119120
selectedDetailsViewSwitcherNavConfiguration.getSelectedDetailsView(storeState);
120121

121-
const unifiedScanNodeResults = convertUnifiedStoreDataToScanNodeResults(
122+
const unifiedScanNodeResults = deps.convertUnifiedStoreDataToScanNodeResults(
122123
props.storeState.unifiedScanResultStoreData,
123124
);
124125
const automatedChecksCardsViewData = props.deps.getCardViewData(
@@ -134,8 +135,12 @@ export const DetailsViewContent = NamedFC<DetailsViewContentProps>('DetailsViewC
134135
const tabStopRequirementData =
135136
props.storeState.visualizationScanResultStoreData.tabStops.requirements;
136137

138+
const needsReviewScanNodeResults = deps.convertUnifiedStoreDataToScanNodeResults(
139+
props.storeState.needsReviewScanResultStoreData,
140+
);
141+
137142
const needsReviewCardsViewData = props.deps.getCardViewData(
138-
unifiedScanNodeResults,
143+
needsReviewScanNodeResults,
139144
props.deps.getCardSelectionViewData(
140145
props.storeState.needsReviewCardSelectionStoreData,
141146
props.storeState.needsReviewScanResultStoreData.results,

src/DetailsView/details-view-initializer.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ import { AutomatedChecksCardSelectionMessageCreator } from 'common/message-creat
3939
import { NeedsReviewCardSelectionMessageCreator } from 'common/message-creators/needs-review-card-selection-message-creator';
4040
import { Messages } from 'common/messages';
4141
import { getNarrowModeThresholdsForWeb } from 'common/narrow-mode-thresholds';
42-
import { convertAssessmentStoreDataToScanNodeResults } from 'common/store-data-to-scan-node-result-converter';
42+
import {
43+
convertAssessmentStoreDataToScanNodeResults,
44+
convertUnifiedStoreDataToScanNodeResults,
45+
} from 'common/store-data-to-scan-node-result-converter';
4346
import { ClientStoresHub } from 'common/stores/client-stores-hub';
4447
import { ExceptionTelemetryListener } from 'common/telemetry/exception-telemetry-listener';
4548
import { ExceptionTelemetrySanitizer } from 'common/telemetry/exception-telemetry-sanitizer';
@@ -735,6 +738,7 @@ if (tabId != null) {
735738
testViewContainerProvider,
736739
defaultRulesMap: getDefaultRulesMap(),
737740
convertAssessmentStoreDataToScanNodeResults,
741+
convertUnifiedStoreDataToScanNodeResults,
738742
};
739743

740744
const renderer = new DetailsViewRenderer(

src/tests/unit/tests/DetailsView/__snapshots__/details-view-content.test.tsx.snap

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ exports[`DetailsViewContent render renders normally 1`] = `
66
deps={
77
{
88
"convertAssessmentStoreDataToScanNodeResults": [Function],
9+
"convertUnifiedStoreDataToScanNodeResults": [Function],
910
"defaultRulesMap": {
1011
"some-rule": {
1112
"a11yCriteria": null,
@@ -75,6 +76,7 @@ exports[`DetailsViewContent render renders normally 1`] = `
7576
deps={
7677
{
7778
"convertAssessmentStoreDataToScanNodeResults": [Function],
79+
"convertUnifiedStoreDataToScanNodeResults": [Function],
7880
"defaultRulesMap": {
7981
"some-rule": {
8082
"a11yCriteria": null,
@@ -125,7 +127,8 @@ exports[`DetailsViewContent render renders normally 1`] = `
125127
}
126128
needsReviewCardsViewData={
127129
{
128-
"allCardsCollapsed": false,
130+
"allCardsCollapsed": true,
131+
"visualHelperEnabled": true,
129132
}
130133
}
131134
pathSnippetStoreData={
@@ -477,6 +480,7 @@ exports[`DetailsViewContent render renders normally 1`] = `
477480
deps={
478481
{
479482
"convertAssessmentStoreDataToScanNodeResults": [Function],
483+
"convertUnifiedStoreDataToScanNodeResults": [Function],
480484
"defaultRulesMap": {
481485
"some-rule": {
482486
"a11yCriteria": null,

src/tests/unit/tests/DetailsView/details-view-content.test.tsx

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import { GetCardViewData } from 'common/rule-based-view-model-provider';
1313
import {
1414
convertAssessmentStoreDataToScanNodeResults,
1515
ConvertAssessmentStoreDataToScanNodeResultsCallback,
16+
convertUnifiedStoreDataToScanNodeResults,
17+
ConvertUnifiedStoreDataToScanNodeResultsCallback,
1618
ScanNodeResult,
1719
} from 'common/store-data-to-scan-node-result-converter';
1820
import { ClientStoresHub } from 'common/stores/client-stores-hub';
@@ -67,6 +69,7 @@ describe(DetailsViewContent.displayName, () => {
6769
let getDetailsSwitcherNavConfiguration: IMock<GetDetailsSwitcherNavConfiguration>;
6870
let visualizationConfigurationFactoryMock: IMock<VisualizationConfigurationFactory>;
6971
let getCardViewDataMock: IMock<GetCardViewData>;
72+
let convertUnifiedStoreDataToScanNodeResultsMock: IMock<ConvertUnifiedStoreDataToScanNodeResultsCallback>;
7073
let convertAssessmentStoreDataToScanNodeResultsMock: IMock<ConvertAssessmentStoreDataToScanNodeResultsCallback>;
7174
let getCardSelectionViewDataMock: IMock<GetCardSelectionViewData>;
7275
let targetAppInfo: TargetAppData;
@@ -96,6 +99,10 @@ describe(DetailsViewContent.displayName, () => {
9699
convertAssessmentStoreDataToScanNodeResults,
97100
MockBehavior.Strict,
98101
);
102+
convertUnifiedStoreDataToScanNodeResultsMock = Mock.ofInstance(
103+
convertUnifiedStoreDataToScanNodeResults,
104+
MockBehavior.Strict,
105+
);
99106
getCardSelectionViewDataMock = Mock.ofInstance(
100107
(storeData: CardSelectionStoreData) => null,
101108
MockBehavior.Strict,
@@ -136,6 +143,8 @@ describe(DetailsViewContent.displayName, () => {
136143
getDateFromTimestamp: getDateFromTimestampMock.object,
137144
getAssessmentInstanceTableHandler: () => assessmentInstanceTableHandlerMock.object,
138145
visualizationConfigurationFactory: visualizationConfigurationFactoryMock.object,
146+
convertUnifiedStoreDataToScanNodeResults:
147+
convertUnifiedStoreDataToScanNodeResultsMock.object,
139148
convertAssessmentStoreDataToScanNodeResults:
140149
convertAssessmentStoreDataToScanNodeResultsMock.object,
141150
defaultRulesMap: defaultRulesMapStub,
@@ -293,22 +302,48 @@ describe(DetailsViewContent.displayName, () => {
293302
.setup(vcfm => vcfm.getConfiguration(viewType))
294303
.returns(() => configStub);
295304

296-
const cardsViewDataStub: CardsViewModel = {
305+
const unifiedCardsViewDataStub: CardsViewModel = {
297306
allCardsCollapsed: false,
298307
} as CardsViewModel;
308+
const needsReviewCardsViewDataStub: CardsViewModel = {
309+
allCardsCollapsed: true,
310+
visualHelperEnabled: true,
311+
} as CardsViewModel;
299312
const assessmentCardsViewDataStub: CardsViewModel = {
300313
allCardsCollapsed: true,
301314
} as CardsViewModel;
302315

303-
const scanNodeResultsStub = [
316+
const assessmentScanNodeResultsStub = [
317+
{
318+
ruleId: 'some-assessment-rule-id',
319+
},
320+
] as ScanNodeResult[];
321+
const unifiedScanNodeResultsStub = [
304322
{
305-
ruleId: 'some-rule-id',
323+
ruleId: 'some-unified-scan-rule-id',
306324
},
307325
] as ScanNodeResult[];
326+
const needsReviewScanNodeResultsStub = [
327+
{
328+
ruleId: 'some-needs-review-rule-id',
329+
},
330+
] as ScanNodeResult[];
331+
332+
convertUnifiedStoreDataToScanNodeResultsMock
333+
.setup(m => m(state.unifiedScanResultStoreData))
334+
.returns(() => unifiedScanNodeResultsStub);
335+
convertUnifiedStoreDataToScanNodeResultsMock
336+
.setup(m => m(state.needsReviewScanResultStoreData))
337+
.returns(() => needsReviewScanNodeResultsStub);
308338

309339
getCardSelectionViewDataMock
310340
.setup(g =>
311-
g(undefined, scanNodeResultsStub, null, isResultHighlightUnavailableStub),
341+
g(
342+
undefined,
343+
assessmentScanNodeResultsStub,
344+
null,
345+
isResultHighlightUnavailableStub,
346+
),
312347
)
313348
.returns(() => cardSelectionViewData)
314349
.verifiable(Times.exactly(1));
@@ -322,19 +357,19 @@ describe(DetailsViewContent.displayName, () => {
322357
defaultRulesMapStub,
323358
),
324359
)
325-
.returns(() => scanNodeResultsStub);
360+
.returns(() => assessmentScanNodeResultsStub);
326361

327362
getCardViewDataMock
328-
.setup(m => m(scanNodeResultsStub, cardSelectionViewData))
363+
.setup(m => m(assessmentScanNodeResultsStub, cardSelectionViewData))
329364
.returns(() => assessmentCardsViewDataStub);
330365

331366
getCardViewDataMock
332-
.setup(m => m([], cardSelectionViewData))
333-
.returns(() => cardsViewDataStub);
367+
.setup(m => m(unifiedScanNodeResultsStub, cardSelectionViewData))
368+
.returns(() => unifiedCardsViewDataStub);
334369

335370
getCardViewDataMock
336-
.setup(m => m(null, cardSelectionViewData))
337-
.returns(() => cardsViewDataStub);
371+
.setup(m => m(needsReviewScanNodeResultsStub, cardSelectionViewData))
372+
.returns(() => needsReviewCardsViewDataStub);
338373

339374
const rendered = shallow(
340375
<DetailsViewContent

0 commit comments

Comments
 (0)