diff --git a/src/tests/unit/tests/DetailsView/components/__snapshots__/transfer-to-assessment-button.test.tsx.snap b/src/tests/unit/tests/DetailsView/components/__snapshots__/transfer-to-assessment-button.test.tsx.snap
index 4e596b16b5b..314bcb4fda3 100644
--- a/src/tests/unit/tests/DetailsView/components/__snapshots__/transfer-to-assessment-button.test.tsx.snap
+++ b/src/tests/unit/tests/DetailsView/components/__snapshots__/transfer-to-assessment-button.test.tsx.snap
@@ -24,6 +24,7 @@ exports[`TransferToAssessmentButton render 1`] = `
exports[`TransferToAssessmentButton render: InsightsCommandButton props 1`] = `
{
"children": "Move to assessment",
+ "componentRef": undefined,
"data-automation-id": "transfer-to-assessment-button",
"iconProps": {
"iconName": "fabricMoveToFolder",
diff --git a/src/tests/unit/tests/DetailsView/components/details-view-command-bar.test.tsx b/src/tests/unit/tests/DetailsView/components/details-view-command-bar.test.tsx
index 03c5a2caa3e..12c0da8aabb 100644
--- a/src/tests/unit/tests/DetailsView/components/details-view-command-bar.test.tsx
+++ b/src/tests/unit/tests/DetailsView/components/details-view-command-bar.test.tsx
@@ -44,6 +44,7 @@ import { InvalidLoadAssessmentDialog } from 'DetailsView/components/invalid-load
import { LoadAssessmentDataValidator } from 'DetailsView/components/load-assessment-data-validator';
import { LoadAssessmentDialog } from 'DetailsView/components/load-assessment-dialog';
import { LoadAssessmentHelper } from 'DetailsView/components/load-assessment-helper';
+import { QuickAssessToAssessmentDialog } from 'DetailsView/components/quick-assess-to-assessment-dialog';
import { ReportExportButton } from 'DetailsView/components/report-export-button';
import { ReportExportDialogFactoryProps } from 'DetailsView/components/report-export-dialog-factory';
import {
@@ -55,7 +56,10 @@ import {
getStartOverComponentForAssessment,
} from 'DetailsView/components/start-over-component-factory';
import { StartOverDialog } from 'DetailsView/components/start-over-dialog';
-import { TransferToAssessmentButtonProps } from 'DetailsView/components/transfer-to-assessment-button';
+import {
+ TransferToAssessmentButtonProps,
+ getTransferToAssessmentButton,
+} from 'DetailsView/components/transfer-to-assessment-button';
import { DataTransferViewController } from 'DetailsView/data-transfer-view-controller';
import { isNil } from 'lodash';
import * as React from 'react';
@@ -78,6 +82,7 @@ jest.mock('DetailsView/components/export-dialog');
jest.mock('DetailsView/components/command-bar-buttons-menu');
jest.mock('DetailsView/components/invalid-load-assessment-dialog');
jest.mock('common/components/new-tab-link-with-tooltip');
+jest.mock('DetailsView/components/quick-assess-to-assessment-dialog');
describe('DetailsViewCommandBar', () => {
mockReactComponents([
ReportExportButton,
@@ -86,7 +91,9 @@ describe('DetailsViewCommandBar', () => {
CommandBarButtonsMenu,
InvalidLoadAssessmentDialog,
NewTabLinkWithTooltip,
+ ReportExportButton,
ExportDialog,
+ QuickAssessToAssessmentDialog,
]);
const thePageTitle = 'command-bar-test-tab-title';
const thePageUrl = 'command-bar-test-url';
@@ -205,9 +212,12 @@ describe('DetailsViewCommandBar', () => {
_ => null,
);
- const actualSwitcherNavConfiguration = GetDetailsSwitcherNavConfiguration({
- selectedDetailsViewPivot: DetailsViewPivotType.assessment,
- });
+ const actualSwitcherNavConfiguration = {
+ ...GetDetailsSwitcherNavConfiguration({
+ selectedDetailsViewPivot: DetailsViewPivotType.assessment,
+ }),
+ TransferToAssessmentButton: getTransferToAssessmentButton,
+ };
const switcherNavConfiguration: DetailsViewSwitcherNavConfiguration = {
CommandBar: switcherNavButtonOverrides?.includes('CommandBar')
@@ -267,6 +277,7 @@ describe('DetailsViewCommandBar', () => {
isCommandBarCollapsed,
},
rightPanelConfiguration,
+ dataTransferViewStoreData: { showQuickAssessToAssessmentConfirmDialog: false },
} as DetailsViewCommandBarProps;
}
@@ -374,6 +385,23 @@ describe('DetailsViewCommandBar', () => {
expect(renderResult.asFragment()).toMatchSnapshot('start assessment over dialog open');
});
+ test('renders transfer to assessment dialog', async () => {
+ const props = getProps();
+ setupTransferToAssessmentButtonFactory(props);
+ const renderResult = render();
+ expect(getMockComponentClassPropsForCall(QuickAssessToAssessmentDialog, 1).isShown).toBe(
+ false,
+ );
+ expect(renderResult.asFragment()).toMatchSnapshot('transfer to assessment dialog hidden');
+ props.dataTransferViewStoreData.showQuickAssessToAssessmentConfirmDialog = true;
+ setupTransferToAssessmentButtonFactory(props);
+ renderResult.rerender();
+ expect(getMockComponentClassPropsForCall(QuickAssessToAssessmentDialog, 2).isShown).toBe(
+ true,
+ );
+ expect(renderResult.asFragment()).toMatchSnapshot('transfer to assessment dialog open');
+ });
+
describe('Button focus', () => {
beforeEach(() => {
useOriginalReactElements('DetailsView/components/command-bar-buttons-menu', [
@@ -409,6 +437,48 @@ describe('DetailsViewCommandBar', () => {
expect(exportButton).toHaveFocus();
});
+ test('do not change focus to transfer assessment button when focus ref is not set', async () => {
+ useOriginalReactElements('DetailsView/components/quick-assess-to-assessment-dialog', [
+ 'QuickAssessToAssessmentDialog',
+ ]);
+ useOriginalReactElements;
+ const props = getProps(['CommandBar']);
+ let setRef;
+ transferToAssessmentButtonFactoryMock
+ .setup(m => m(It.isAny()))
+ .callback(props => {
+ setRef = props.buttonRef;
+ });
+ const renderResult = render();
+ expect(setRef).toBeDefined();
+ expect(renderResult.baseElement).toHaveFocus();
+ setRef(undefined);
+ getMockComponentCall(QuickAssessToAssessmentDialog)[0].afterDialogDismissed();
+ expect(renderResult.baseElement).toHaveFocus();
+ });
+
+ test('focus transfer assessment button when focus ref is set', async () => {
+ useOriginalReactElements('DetailsView/components/quick-assess-to-assessment-dialog', [
+ 'QuickAssessToAssessmentDialog',
+ ]);
+ const props = getProps(['TransferToAssessmentButton', 'CommandBar']);
+ const renderResult = render();
+ const transferButton = renderResult.getByRole('button', {
+ name: 'Move to assessment',
+ });
+ expect(transferButton).not.toHaveFocus();
+ getMockComponentCall(QuickAssessToAssessmentDialog)[0].afterDialogDismissed();
+ expect(transferButton).toHaveFocus();
+ props.dataTransferViewStoreData.showQuickAssessToAssessmentConfirmDialog = true;
+ renderResult.rerender(); //open the dialog
+ const continueButton = renderResult.getByRole('button', {
+ name: 'Continue to Assessment',
+ });
+ expect(continueButton).toHaveFocus();
+ getMockComponentCall(QuickAssessToAssessmentDialog, 1)[0].afterDialogDismissed();
+ expect(transferButton).toHaveFocus();
+ });
+
test('do not change focus to start over button when focus ref is not set', async () => {
useOriginalReactElements('DetailsView/components/start-over-dialog', [
'StartOverDialog',
diff --git a/src/tests/unit/tests/DetailsView/components/quick-assess-to-assessment-dialog.test.tsx b/src/tests/unit/tests/DetailsView/components/quick-assess-to-assessment-dialog.test.tsx
index 8ddffc68806..f4289661efe 100644
--- a/src/tests/unit/tests/DetailsView/components/quick-assess-to-assessment-dialog.test.tsx
+++ b/src/tests/unit/tests/DetailsView/components/quick-assess-to-assessment-dialog.test.tsx
@@ -24,15 +24,19 @@ describe('QuickAssessToAssessmentDialog', () => {
let dataTransferViewControllerMock: IMock;
let detailsViewActionMessageCreatorMock: IMock;
let props: QuickAssessToAssessmentDialogProps;
+ let afterDialogDismissedMock: IMock<() => void>;
beforeEach(() => {
dataTransferViewControllerMock = Mock.ofType(DataTransferViewController);
detailsViewActionMessageCreatorMock = Mock.ofType();
+ afterDialogDismissedMock = Mock.ofInstance(() => null);
+
props = {
deps: {
detailsViewActionMessageCreator: detailsViewActionMessageCreatorMock.object,
dataTransferViewController: dataTransferViewControllerMock.object,
},
+ afterDialogDismissed: afterDialogDismissedMock.object,
} as QuickAssessToAssessmentDialogProps;
});
@@ -84,4 +88,10 @@ describe('QuickAssessToAssessmentDialog', () => {
Times.once(),
);
});
+
+ test('on dialog dismissed: call afterDialogDismissed', () => {
+ render();
+ getMockComponentClassPropsForCall(Dialog).modalProps.onDismissed();
+ afterDialogDismissedMock.verify(m => m(), Times.once());
+ });
});
diff --git a/src/tests/unit/tests/DetailsView/components/should-show-report-export-button.test.ts b/src/tests/unit/tests/DetailsView/components/should-show-report-export-button.test.ts
index fbffee16362..fe4bce99a07 100644
--- a/src/tests/unit/tests/DetailsView/components/should-show-report-export-button.test.ts
+++ b/src/tests/unit/tests/DetailsView/components/should-show-report-export-button.test.ts
@@ -53,6 +53,7 @@ describe('ShouldShowReportExportButton', () => {
tabStopRequirementData: null,
userConfigurationStoreData,
featureFlagStoreData: null,
+ dataTransferViewStoreData: null,
} as DetailsViewCommandBarProps;
}
diff --git a/src/tests/unit/tests/DetailsView/details-view-body.test.tsx b/src/tests/unit/tests/DetailsView/details-view-body.test.tsx
index c3d53b9cb22..9af0fdef8bc 100644
--- a/src/tests/unit/tests/DetailsView/details-view-body.test.tsx
+++ b/src/tests/unit/tests/DetailsView/details-view-body.test.tsx
@@ -146,7 +146,6 @@ describe('DetailsViewBody', () => {
expect(renderResult.asFragment()).toMatchSnapshot();
expectMockedComponentPropsToMatchSnapshots([
FluentSideNav,
- QuickAssessToAssessmentDialog,
QuickAssessCommandBar,
TargetPageHiddenBar,
]);