Skip to content

Commit 52a3257

Browse files
authored
Merge pull request #2917 from flexion/9742-to-test
9742 Recent Messages: Update w/ Trial Session Info
2 parents 5d5ac84 + 2d86d11 commit 52a3257

File tree

5 files changed

+175
-4
lines changed

5 files changed

+175
-4
lines changed

web-client/integration-tests/messagesTableJourney.test.js

+29
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { CASE_STATUS_TYPES } from '../../shared/src/business/entities/EntityConstants';
2+
import { applicationContextForClient as applicationContext } from '../../shared/src/business/test/createTestApplicationContext';
23
import { createNewMessageOnCase } from './journey/createNewMessageOnCase';
34
import { formattedMessages as formattedMessagesComputed } from '../src/presenter/computeds/formattedMessages';
45
import { loginAs, refreshElasticsearchIndex, setupTest } from './helpers';
56
import { runCompute } from 'cerebral/test';
7+
import { userSendsMessage } from './journey/userSendsMessage';
68
import { withAppContextDecorator } from '../src/withAppContext';
79

810
const formattedMessages = withAppContextDecorator(formattedMessagesComputed);
@@ -16,6 +18,12 @@ describe('messages table journey', () => {
1618
trialDate: '2020-11-27T05:00:00.000Z',
1719
trialLocation: 'Houston, Texas',
1820
};
21+
const messageSubjectForJudge = 'Check your recent messages!';
22+
23+
const judgesChambers = applicationContext
24+
.getPersistenceGateway()
25+
.getJudgesChambers();
26+
const judgeCohenUserId = 'dabbad04-18d0-43ec-bafb-654e83405416';
1927

2028
beforeAll(() => {
2129
jest.setTimeout(40000);
@@ -131,4 +139,25 @@ describe('messages table journey', () => {
131139

132140
expect(orignalMessage).toBeDefined();
133141
});
142+
143+
userSendsMessage(
144+
cerebralTest,
145+
messageSubjectForJudge,
146+
judgesChambers.COHENS_CHAMBERS_SECTION.section,
147+
judgeCohenUserId,
148+
);
149+
150+
loginAs(cerebralTest, 'judgeCohen@example.com');
151+
it('judge views recent messages with trial information', async () => {
152+
await cerebralTest.runSequence('gotoDashboardSequence');
153+
expect(cerebralTest.getState('currentPage')).toEqual('DashboardJudge');
154+
155+
const messages = cerebralTest.getState('messages');
156+
157+
const expectedMessage = messages.find(
158+
m => m.subject === messageSubjectForJudge,
159+
);
160+
161+
expect(expectedMessage).toMatchObject(expectedMessageResult);
162+
});
134163
});

web-client/src/presenter/computeds/formattedMessages.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import {
66
import { state } from 'cerebral';
77

88
export const formattedMessages = (get, applicationContext) => {
9-
const { STATUS_TYPES } = applicationContext.getConstants();
10-
119
const tableSort = get(state.tableSort);
1210

1311
const { completedMessages, messages } = getFormattedMessages({
@@ -17,6 +15,8 @@ export const formattedMessages = (get, applicationContext) => {
1715
tableSort,
1816
});
1917

18+
const { STATUS_TYPES } = applicationContext.getConstants();
19+
2020
messages.forEach(message => {
2121
message.showTrialInformation =
2222
message.caseStatus === STATUS_TYPES.calendared;
@@ -71,7 +71,10 @@ export const formattedMessages = (get, applicationContext) => {
7171
return sharedComputedResult;
7272
};
7373

74-
const setTrialInformationOnMessage = ({ applicationContext, message }) => {
74+
export const setTrialInformationOnMessage = ({
75+
applicationContext,
76+
message,
77+
}) => {
7578
const { TRIAL_SESSION_SCOPE_TYPES } = applicationContext.getConstants();
7679

7780
if (message.trialLocation !== TRIAL_SESSION_SCOPE_TYPES.standaloneRemote) {

web-client/src/presenter/computeds/recentMessagesHelper.js

+15
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { getFormattedMessages } from '../utilities/processFormattedMessages';
2+
import { setTrialInformationOnMessage } from './formattedMessages';
23
import { state } from 'cerebral';
34

45
export const recentMessagesHelper = (get, applicationContext) => {
@@ -7,6 +8,20 @@ export const recentMessagesHelper = (get, applicationContext) => {
78
messages: get(state.messages) || [],
89
});
910

11+
const { STATUS_TYPES } = applicationContext.getConstants();
12+
13+
messages.forEach(message => {
14+
message.showTrialInformation =
15+
message.caseStatus === STATUS_TYPES.calendared;
16+
17+
if (message.showTrialInformation) {
18+
setTrialInformationOnMessage({
19+
applicationContext,
20+
message,
21+
});
22+
}
23+
});
24+
1025
const recentMessages = messages.reverse().splice(0, 5);
1126

1227
return {

web-client/src/presenter/computeds/recentMessagesHelper.test.js

+117
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { applicationContextForClient as applicationContext } from '../../../../shared/src/business/test/createTestApplicationContext';
12
import { recentMessagesHelper as recentMessagesHelperComputed } from './recentMessagesHelper';
23
import { runCompute } from 'cerebral/test';
34
import { withAppContextDecorator } from '../../withAppContext';
@@ -7,6 +8,9 @@ const recentMessagesHelper = withAppContextDecorator(
78
);
89

910
describe('recentMessagesHelper', () => {
11+
const { STATUS_TYPES, TRIAL_SESSION_SCOPE_TYPES } =
12+
applicationContext.getConstants();
13+
1014
it('returns 5 most recent messages', () => {
1115
const result = runCompute(recentMessagesHelper, {
1216
state: {
@@ -88,4 +92,117 @@ describe('recentMessagesHelper', () => {
8892
recentMessages: [],
8993
});
9094
});
95+
96+
it('should set showTrialInformation to true when caseStatus is calendared', () => {
97+
const mockCalendaredMessage = {
98+
caseStatus: STATUS_TYPES.calendared,
99+
completedAt: '2019-01-02T16:29:13.122Z',
100+
createdAt: '2019-01-01T16:29:13.122Z',
101+
docketNumber: '101-20',
102+
message: 'This is a test message',
103+
trialDate: '2025-01-01T16:29:13.122Z',
104+
trialLocation: 'Austin, TX',
105+
};
106+
const result = runCompute(recentMessagesHelper, {
107+
state: {
108+
messageBoxToDisplay: {
109+
box: 'outbox',
110+
},
111+
messages: [mockCalendaredMessage],
112+
screenMetadata: {},
113+
user: {
114+
role: 'adc',
115+
},
116+
},
117+
});
118+
119+
expect(result.recentMessages[0].showTrialInformation).toBe(true);
120+
});
121+
122+
it('should set showTrialInformation to false when caseStatus is NOT calendared', () => {
123+
const mockCalendaredMessage = {
124+
caseStatus: STATUS_TYPES.new,
125+
completedAt: '2019-01-02T16:29:13.122Z',
126+
createdAt: '2019-01-01T16:29:13.122Z',
127+
docketNumber: '101-20',
128+
message: 'This is a test message',
129+
};
130+
131+
const result = runCompute(recentMessagesHelper, {
132+
state: {
133+
messageBoxToDisplay: {
134+
box: 'outbox',
135+
},
136+
messages: [mockCalendaredMessage],
137+
screenMetadata: {},
138+
user: {
139+
role: 'adc',
140+
},
141+
},
142+
});
143+
144+
expect(result.recentMessages[0].showTrialInformation).toBe(false);
145+
});
146+
147+
it('should format the trialDate and trialLocation on the message when caseStatus is Calendared', () => {
148+
const mockCalendaredMessage = {
149+
caseStatus: STATUS_TYPES.calendared,
150+
completedAt: '2019-01-02T16:29:13.122Z',
151+
createdAt: '2019-01-01T16:29:13.122Z',
152+
docketNumber: '101-20',
153+
message: 'This is a test message',
154+
trialDate: '2019-01-01T16:29:13.122Z',
155+
trialLocation: 'Houston, Texas',
156+
};
157+
158+
const result = runCompute(recentMessagesHelper, {
159+
state: {
160+
messageBoxToDisplay: {
161+
box: 'outbox',
162+
},
163+
messages: [mockCalendaredMessage],
164+
screenMetadata: {},
165+
user: {
166+
role: 'adc',
167+
},
168+
},
169+
});
170+
171+
expect(result.recentMessages[0]).toMatchObject({
172+
formattedTrialDate: '01/01/19',
173+
formattedTrialLocation: 'Houston, TX',
174+
});
175+
});
176+
177+
it(`should not abbreviate trialLocation when it is ${TRIAL_SESSION_SCOPE_TYPES.standaloneRemote}`, () => {
178+
const mockCalendaredMessage = {
179+
caseStatus: STATUS_TYPES.calendared,
180+
completedAt: '2019-01-02T16:29:13.122Z',
181+
createdAt: '2019-01-01T16:29:13.122Z',
182+
docketNumber: '101-20',
183+
message: 'This is a test message',
184+
trialDate: '2019-01-01T16:29:13.122Z',
185+
trialLocation: TRIAL_SESSION_SCOPE_TYPES.standaloneRemote,
186+
};
187+
188+
const result = runCompute(recentMessagesHelper, {
189+
state: {
190+
messageBoxToDisplay: {
191+
box: 'outbox',
192+
},
193+
messages: [mockCalendaredMessage],
194+
screenMetadata: {},
195+
user: {
196+
role: 'adc',
197+
},
198+
},
199+
});
200+
201+
expect(
202+
applicationContext.getUtilities().abbreviateState,
203+
).not.toHaveBeenCalled();
204+
expect(result.recentMessages[0]).toMatchObject({
205+
formattedTrialLocation: TRIAL_SESSION_SCOPE_TYPES.standaloneRemote,
206+
});
207+
});
91208
});

web-client/src/views/WorkQueue/RecentMessagesInbox.jsx

+8-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,14 @@ export const RecentMessagesInbox = connect(
7676
<td className="message-queue-row">
7777
<span>{item.caseTitle}</span>
7878
</td>
79-
<td>{item.caseStatus}</td>
79+
{item.showTrialInformation ? (
80+
<td className="message-queue-row">
81+
{item.caseStatus} - {item.formattedTrialDate}{' '}
82+
{item.formattedTrialLocation}
83+
</td>
84+
) : (
85+
<td className="message-queue-row">{item.caseStatus}</td>
86+
)}
8087
<td>{item.from}</td>
8188
<td>{item.fromSection}</td>
8289
</tr>

0 commit comments

Comments
 (0)