Skip to content

Commit 155186e

Browse files
authored
Merge pull request #14439 from transcom/B-21336-main
B 21336 main Add bulk assignment button and modal creation
2 parents 1a3775d + 88e9559 commit 155186e

23 files changed

+276
-60
lines changed

.circleci/config.yml

+2
Original file line numberDiff line numberDiff line change
@@ -900,6 +900,7 @@ commands:
900900
export FEATURE_FLAG_UNACCOMPANIED_BAGGAGE=false
901901
export FEATURE_FLAG_ENABLE_ALASKA=false
902902
export FEATURE_FLAG_ENABLE_HAWAII=false
903+
export FEATURE_FLAG_BULK_ASSIGNMENT=false
903904
904905
# disable for speed, playwright tests can fail otherwise
905906
export DB_DEBUG=false
@@ -943,6 +944,7 @@ commands:
943944
FEATURE_FLAG_QUEUE_MANAGEMENT: 'false'
944945
FEATURE_FLAG_UNACCOMPANIED_BAGGAGE: 'false'
945946
FEATURE_FLAG_ENABLE_ALASKA: 'false'
947+
FEATURE_FLAG_BULK_ASSIGNMENT: 'false'
946948
command: |
947949
SHARD=$((${CIRCLE_NODE_INDEX}+1))
948950
PLAYWRIGHT_JUNIT_OUTPUT_NAME=playwright-results.xml \

.envrc

+3
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,9 @@ export FEATURE_FLAG_BOAT=true
156156
export FEATURE_FLAG_MOBILE_HOME=true
157157
export FEATURE_FLAG_UNACCOMPANIED_BAGGAGE=false
158158

159+
# Feature flag to allow Bulk Assigment options to be displayed
160+
export FEATURE_FLAG_BULK_ASSIGNMENT=true
161+
159162
# Feature flag to allow AK to be entered as a state
160163
export FEATURE_FLAG_ENABLE_ALASKA=true
161164

config/env/demo.app-client-tls.env

+2-1
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,5 @@ FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=false
4949
FEATURE_FLAG_QUEUE_MANAGEMENT=false
5050
FEATURE_FLAG_DODID_UNIQUE=false
5151
FEATURE_FLAG_ENABLE_ALASKA=false
52-
FEATURE_FLAG_ENABLE_HAWAII=false
52+
FEATURE_FLAG_ENABLE_HAWAII=false
53+
FEATURE_FLAG_BULK_ASSIGNMENT=false

config/env/demo.app.env

+2-1
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,5 @@ FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=false
5454
FEATURE_FLAG_QUEUE_MANAGEMENT=false
5555
FEATURE_FLAG_DODID_UNIQUE=false
5656
FEATURE_FLAG_ENABLE_ALASKA=false
57-
FEATURE_FLAG_ENABLE_HAWAII=false
57+
FEATURE_FLAG_ENABLE_HAWAII=false
58+
FEATURE_FLAG_BULK_ASSIGNMENT=false

config/env/exp.app-client-tls.env

+2-1
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,5 @@ FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=false
4949
FEATURE_FLAG_QUEUE_MANAGEMENT=false
5050
FEATURE_FLAG_DODID_UNIQUE=false
5151
FEATURE_FLAG_ENABLE_ALASKA=false
52-
FEATURE_FLAG_ENABLE_HAWAII=false
52+
FEATURE_FLAG_ENABLE_HAWAII=false
53+
FEATURE_FLAG_BULK_ASSIGNMENT=false

config/env/exp.app.env

+2-1
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,5 @@ FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=false
5454
FEATURE_FLAG_QUEUE_MANAGEMENT=false
5555
FEATURE_FLAG_DODID_UNIQUE=false
5656
FEATURE_FLAG_ENABLE_ALASKA=false
57-
FEATURE_FLAG_ENABLE_HAWAII=false
57+
FEATURE_FLAG_ENABLE_HAWAII=false
58+
FEATURE_FLAG_BULK_ASSIGNMENT=false

config/env/loadtest.app-client-tls.env

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,5 @@ FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=false
4747
FEATURE_FLAG_QUEUE_MANAGEMENT=false
4848
FEATURE_FLAG_DODID_UNIQUE=false
4949
FEATURE_FLAG_ENABLE_ALASKA=false
50-
FEATURE_FLAG_ENABLE_HAWAII=false
50+
FEATURE_FLAG_ENABLE_HAWAII=false
51+
FEATURE_FLAG_BULK_ASSIGNMENT=false

config/env/loadtest.app.env

+2-1
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,5 @@ FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=false
5252
FEATURE_FLAG_QUEUE_MANAGEMENT=false
5353
FEATURE_FLAG_DODID_UNIQUE=false
5454
FEATURE_FLAG_ENABLE_ALASKA=false
55-
FEATURE_FLAG_ENABLE_HAWAII=false
55+
FEATURE_FLAG_ENABLE_HAWAII=false
56+
FEATURE_FLAG_BULK_ASSIGNMENT=false

config/env/prd.app-client-tls.env

+2-1
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,5 @@ FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=false
4646
FEATURE_FLAG_QUEUE_MANAGEMENT=false
4747
FEATURE_FLAG_DODID_UNIQUE=false
4848
FEATURE_FLAG_ENABLE_ALASKA=false
49-
FEATURE_FLAG_ENABLE_HAWAII=false
49+
FEATURE_FLAG_ENABLE_HAWAII=false
50+
FEATURE_FLAG_BULK_ASSIGNMENT=false

config/env/prd.app.env

+2-1
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,5 @@ FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=false
5353
FEATURE_FLAG_QUEUE_MANAGEMENT=false
5454
FEATURE_FLAG_DODID_UNIQUE=false
5555
FEATURE_FLAG_ENABLE_ALASKA=false
56-
FEATURE_FLAG_ENABLE_HAWAII=false
56+
FEATURE_FLAG_ENABLE_HAWAII=false
57+
FEATURE_FLAG_BULK_ASSIGNMENT=false

config/env/stg.app-client-tls.env

+2-1
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,5 @@ FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=false
4848
FEATURE_FLAG_QUEUE_MANAGEMENT=false
4949
FEATURE_FLAG_DODID_UNIQUE=false
5050
FEATURE_FLAG_ENABLE_ALASKA=false
51-
FEATURE_FLAG_ENABLE_HAWAII=false
51+
FEATURE_FLAG_ENABLE_HAWAII=false
52+
FEATURE_FLAG_BULK_ASSIGNMENT=false

config/env/stg.app.env

+2-1
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,5 @@ FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=false
5454
FEATURE_FLAG_QUEUE_MANAGEMENT=false
5555
FEATURE_FLAG_DODID_UNIQUE=false
5656
FEATURE_FLAG_ENABLE_ALASKA=false
57-
FEATURE_FLAG_ENABLE_HAWAII=false
57+
FEATURE_FLAG_ENABLE_HAWAII=false
58+
FEATURE_FLAG_BULK_ASSIGNMENT=false

config/flipt/storage/development.features.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,14 @@ flags:
137137
- segment:
138138
key: mil-app
139139
value: true
140+
- key: bulk_assignment
141+
name: bulk assignment feature flag
142+
type: BOOLEAN_FLAG_TYPE
143+
enabled: true
144+
rollouts:
145+
- segment:
146+
key: mil-app
147+
value: true
140148
- key: dodid_unique
141149
name: DODID validation feature flag that ensures unique DODIDs
142150
type: BOOLEAN_FLAG_TYPE
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import React from 'react';
2+
import PropTypes from 'prop-types';
3+
import { Button } from '@trussworks/react-uswds';
4+
5+
import Modal, { ModalTitle, ModalClose, ModalActions, connectModal } from 'components/Modal/Modal';
6+
7+
export const BulkAssignmentModal = ({ onClose, onSubmit, title, content, submitText, closeText }) => (
8+
<Modal>
9+
<ModalClose handleClick={() => onClose()} />
10+
<ModalTitle>
11+
<h3>{title}</h3>
12+
</ModalTitle>
13+
<p>{content}</p>
14+
<ModalActions autofocus="true">
15+
<Button
16+
data-focus="true"
17+
className="usa-button--destructive"
18+
type="submit"
19+
data-testid="modalSubmitButton"
20+
onClick={() => onSubmit()}
21+
>
22+
{submitText}
23+
</Button>
24+
<Button className="usa-button--secondary" type="button" onClick={() => onClose()} data-testid="modalBackButton">
25+
{closeText}
26+
</Button>
27+
</ModalActions>
28+
</Modal>
29+
);
30+
31+
BulkAssignmentModal.propTypes = {
32+
onClose: PropTypes.func.isRequired,
33+
onSubmit: PropTypes.func.isRequired,
34+
35+
title: PropTypes.string,
36+
content: PropTypes.string,
37+
submitText: PropTypes.string,
38+
closeText: PropTypes.string,
39+
};
40+
41+
BulkAssignmentModal.defaultProps = {
42+
title: 'Bulk Assignment',
43+
content: 'Here we will display moves to be assigned in bulk.',
44+
submitText: 'Save',
45+
closeText: 'Cancel',
46+
};
47+
48+
BulkAssignmentModal.displayName = 'BulkAssignmentModal';
49+
50+
export default connectModal(BulkAssignmentModal);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import React from 'react';
2+
3+
import BulkAssignmentModal from './BulkAssignmentModal';
4+
5+
export default {
6+
title: 'Components/BulkAssignmentModal',
7+
component: BulkAssignmentModal,
8+
argTypes: {
9+
onClose: { action: 'close button clicked' },
10+
onSubmit: { action: 'submit button clicked' },
11+
},
12+
};
13+
14+
const ConnectedTemplate = (args) => <BulkAssignmentModal {...args} />;
15+
export const ConnectedModal = ConnectedTemplate.bind({});
16+
ConnectedModal.args = {
17+
isOpen: true,
18+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import React from 'react';
2+
import { render, screen } from '@testing-library/react';
3+
import userEvent from '@testing-library/user-event';
4+
5+
import { BulkAssignmentModal } from 'components/BulkAssignment/BulkAssignmentModal';
6+
7+
let onClose;
8+
let onSubmit;
9+
beforeEach(() => {
10+
onClose = jest.fn();
11+
onSubmit = jest.fn();
12+
});
13+
14+
describe('BulkAssignmentModal', () => {
15+
it('renders the component', async () => {
16+
render(<BulkAssignmentModal onSubmit={onSubmit} onClose={onClose} />);
17+
18+
expect(await screen.findByRole('heading', { level: 3, name: 'Bulk Assignment' })).toBeInTheDocument();
19+
});
20+
21+
it('closes the modal when close icon is clicked', async () => {
22+
render(<BulkAssignmentModal onSubmit={onSubmit} onClose={onClose} />);
23+
24+
const closeButton = await screen.findByTestId('modalCloseButton');
25+
26+
await userEvent.click(closeButton);
27+
28+
expect(onClose).toHaveBeenCalledTimes(1);
29+
});
30+
31+
it('closes the modal when the Cancel button is clicked', async () => {
32+
render(<BulkAssignmentModal onSubmit={onSubmit} onClose={onClose} />);
33+
34+
const cancelButton = await screen.findByRole('button', { name: 'Cancel' });
35+
36+
await userEvent.click(cancelButton);
37+
38+
expect(onClose).toHaveBeenCalledTimes(1);
39+
});
40+
41+
it('calls the submit function when Save button is clicked', async () => {
42+
render(<BulkAssignmentModal onSubmit={onSubmit} onClose={onClose} />);
43+
44+
const saveButton = await screen.findByRole('button', { name: 'Save' });
45+
46+
await userEvent.click(saveButton);
47+
48+
expect(onSubmit).toHaveBeenCalledTimes(1);
49+
});
50+
});

0 commit comments

Comments
 (0)