-
Notifications
You must be signed in to change notification settings - Fork 145
/
details-view-left-nav.test.tsx
103 lines (94 loc) · 4.4 KB
/
details-view-left-nav.test.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
import { AssessmentsProvider } from 'assessments/types/assessments-provider';
import { generateAssessmentTestKey } from 'DetailsView/components/left-nav/left-nav-link-builder';
import { shallow } from 'enzyme';
import * as React from 'react';
import { It, Mock, MockBehavior } from 'typemoq';
import { NamedFC, ReactFCWithDisplayName } from '../../../../../../common/react/named-fc';
import {
AssessmentData,
AssessmentNavState,
AssessmentStoreData,
} from '../../../../../../common/types/store-data/assessment-result-data';
import { FeatureFlagStoreData } from '../../../../../../common/types/store-data/feature-flag-store-data';
import { VisualizationType } from '../../../../../../common/types/visualization-type';
import { DetailsRightPanelConfiguration } from '../../../../../../DetailsView/components/details-view-right-panel';
import {
DetailsViewSwitcherNavConfiguration,
LeftNavProps,
} from '../../../../../../DetailsView/components/details-view-switcher-nav';
import {
DetailsViewLeftNav,
DetailsViewLeftNavDeps,
DetailsViewLeftNavProps,
} from '../../../../../../DetailsView/components/left-nav/details-view-left-nav';
import { GetLeftNavSelectedKeyProps } from '../../../../../../DetailsView/components/left-nav/get-left-nav-selected-key';
describe(DetailsViewLeftNav.displayName, () => {
it('should render from switcher nav', () => {
const selectedTestStub: VisualizationType = -1;
const selectedKeyStub: string = 'some key';
const featureFlagDataStub: FeatureFlagStoreData = {};
const assessmentsProviderWithFeaturesEnabledMock = Mock.ofInstance(
(provider, featureFlagData) => null,
MockBehavior.Strict,
);
const assessmentProviderStub = {} as AssessmentsProvider;
const filteredProviderStub = {} as AssessmentsProvider;
const GetLeftNavSelectedKeyMock = Mock.ofInstance(
(theProps: GetLeftNavSelectedKeyProps) => null,
MockBehavior.Strict,
);
const LeftNavStub: Readonly<ReactFCWithDisplayName<LeftNavProps>> = NamedFC<LeftNavProps>(
'test',
_ => null,
);
const assessmentDataStub: { [key: string]: AssessmentData } = {
x: { testStepStatus: {} } as AssessmentData,
};
const selectedTestSubview = 'selected-subview';
const assessmentNavStateStub = {
selectedTestSubview,
} as AssessmentNavState;
const assessmentStoreDataStub = {
assessments: assessmentDataStub,
assessmentNavState: assessmentNavStateStub,
} as AssessmentStoreData;
const rightPanelConfig: DetailsRightPanelConfiguration = {
GetLeftNavSelectedKey: GetLeftNavSelectedKeyMock.object,
} as DetailsRightPanelConfiguration;
const switcherNavConfig: DetailsViewSwitcherNavConfiguration = {
LeftNav: LeftNavStub,
} as DetailsViewSwitcherNavConfiguration;
const deps = {
assessmentsProvider: assessmentProviderStub,
assessmentsProviderWithFeaturesEnabled:
assessmentsProviderWithFeaturesEnabledMock.object,
} as DetailsViewLeftNavDeps;
const props = {
deps,
featureFlagStoreData: featureFlagDataStub,
selectedTest: selectedTestStub,
switcherNavConfiguration: switcherNavConfig,
rightPanelConfiguration: rightPanelConfig,
assessmentStoreData: assessmentStoreDataStub,
setNavComponentRef: nav => {},
} as DetailsViewLeftNavProps;
GetLeftNavSelectedKeyMock.setup(getter =>
getter(
It.isValue({
visualizationType: selectedTestStub,
featureFlagStoreData: featureFlagDataStub,
selectedSubview: selectedTestSubview,
deps: { generateAssessmentTestKey },
assessmentsProvider: assessmentProviderStub,
}),
),
).returns(() => selectedKeyStub);
assessmentsProviderWithFeaturesEnabledMock
.setup(ap => ap(assessmentProviderStub, featureFlagDataStub))
.returns(() => filteredProviderStub);
const actual = shallow(<DetailsViewLeftNav {...props} />);
expect(actual.getElement()).toMatchSnapshot();
});
});