Skip to content

Commit 4fc9065

Browse files
authored
Merge pull request #2891 from objectcomputing/bugfix-2885/kudos-from-terminated-members
Bugfix 2885/kudos from terminated members
2 parents 8241865 + fc89b61 commit 4fc9065

File tree

8 files changed

+810
-8
lines changed

8 files changed

+810
-8
lines changed

server/src/main/java/com/objectcomputing/checkins/services/permissions/Permission.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public enum Permission {
1717
CAN_ADMINISTER_FEEDBACK_ANSWER("Administer feedback answers", "Feedback"),
1818
CAN_ADMINISTER_FEEDBACK_TEMPLATES("Administer feedback templates", "Feedback"),
1919
CAN_SEND_EMAIL("Send email", "Feedback"),
20+
CAN_VIEW_TERMINATED_MEMBERS("Can view the profiles of terminated members", "User Management"),
2021
CAN_EDIT_ALL_ORGANIZATION_MEMBERS("Edit all member profiles", "User Management"),
2122
CAN_DELETE_ORGANIZATION_MEMBERS("Delete organization members", "User Management"),
2223
CAN_CREATE_ORGANIZATION_MEMBERS("Create organization members", "User Management"),

web-ui/src/components/kudos/PublicKudosCard.jsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ import {
1919
TextField,
2020
Link,
2121
} from "@mui/material";
22-
import { selectCsrfToken, selectProfile } from "../../context/selectors";
22+
import {
23+
selectCsrfToken,
24+
selectActiveOrInactiveProfile,
25+
} from "../../context/selectors";
2326
import { AppContext } from "../../context/AppContext";
2427
import { getAvatarURL } from "../../api/api";
2528
import DateFnsUtils from "@date-io/date-fns";
@@ -50,7 +53,7 @@ const KudosCard = ({ kudos }) => {
5053
const { state, dispatch } = useContext(AppContext);
5154
const csrf = selectCsrfToken(state);
5255

53-
const sender = selectProfile(state, kudos.senderId);
56+
const sender = selectActiveOrInactiveProfile(state, kudos.senderId);
5457

5558
const regexIndexOf = (text, regex, start) => {
5659
const indexInSuffix = text.slice(start).search(regex);

web-ui/src/components/kudos_card/KudosCard.jsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ import {
2020
FormControlLabel,
2121
Checkbox,
2222
} from "@mui/material";
23-
import { selectCsrfToken, selectProfile } from "../../context/selectors";
23+
import {
24+
selectCsrfToken,
25+
selectActiveOrInactiveProfile,
26+
} from "../../context/selectors";
2427
import MemberSelector from '../member_selector/MemberSelector';
2528
import { AppContext } from "../../context/AppContext";
2629
import { getAvatarURL } from "../../api/api";
@@ -63,7 +66,7 @@ const KudosCard = ({ kudos, includeActions, includeEdit, onKudosAction }) => {
6366
const [memberSelectorOpen, setMemberSelectorOpen] = useState(false);
6467
const [kudosRecipientMembers, setKudosRecipientMembers] = useState(kudos.recipientMembers);
6568

66-
const sender = selectProfile(state, kudos.senderId);
69+
const sender = selectActiveOrInactiveProfile(state, kudos.senderId);
6770

6871
const getRecipientComponent = useCallback(() => {
6972
if (kudos.recipientTeam) {
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
import React from 'react';
2+
import KudosCard from './KudosCard';
3+
import { AppContextProvider } from '../../context/AppContext';
4+
5+
const initialState = {
6+
state: {
7+
csrf: 'O_3eLX2-e05qpS_yOeg1ZVAs9nDhspEi',
8+
teams: [],
9+
userProfile: {
10+
id: "1",
11+
firstName: 'Jimmy',
12+
lastName: 'Johnson',
13+
role: ['MEMBER'],
14+
},
15+
terminatedMembers: [
16+
{
17+
id: "5",
18+
firstName: 'Jerry',
19+
lastName: 'Garcia',
20+
name: 'Jerry Garcia',
21+
role: ['MEMBER'],
22+
},
23+
],
24+
memberProfiles: [
25+
{
26+
id: "1",
27+
firstName: 'Jimmy',
28+
lastName: 'Johnson',
29+
name: 'Jimmy Johnson',
30+
role: ['MEMBER'],
31+
},
32+
{
33+
id: "2",
34+
firstName: 'Jimmy',
35+
lastName: 'Olsen',
36+
name: 'Jimmy Olsen',
37+
role: ['MEMBER'],
38+
},
39+
{
40+
id: "3",
41+
firstName: 'Clark',
42+
lastName: 'Kent',
43+
name: 'Clark Kent',
44+
role: ['MEMBER'],
45+
},
46+
{
47+
id: "4",
48+
firstName: 'Kent',
49+
lastName: 'Brockman',
50+
name: 'Kent Brockman',
51+
role: ['MEMBER'],
52+
},
53+
{
54+
id: "6",
55+
firstName: 'Brock',
56+
lastName: 'Smith',
57+
name: 'Brock Smith',
58+
role: ['MEMBER'],
59+
},
60+
{
61+
id: "7",
62+
firstName: 'Jimmy',
63+
middleName: 'T.',
64+
lastName: 'Olsen',
65+
name: 'Jimmy T. Olsen',
66+
role: ['MEMBER'],
67+
},
68+
],
69+
}
70+
};
71+
72+
const terminated = {
73+
id: 'test-terminated-kudos',
74+
message: "Brock and Brockman did a great job helping Clark, Jimmy Olsen, Jimmy T. Olsen, and Johnson",
75+
senderId: "5",
76+
dateCreated: [ 2025, 2, 14 ],
77+
recipientMembers: [
78+
{
79+
id: "1",
80+
firstName: 'Jimmy',
81+
lastName: 'Johnson',
82+
role: ['MEMBER'],
83+
},
84+
{
85+
id: "2",
86+
firstName: 'Jimmy',
87+
lastName: 'Olsen',
88+
role: ['MEMBER'],
89+
},
90+
{
91+
id: "3",
92+
firstName: 'Clark',
93+
lastName: 'Kent',
94+
role: ['MEMBER'],
95+
},
96+
{
97+
id: "6",
98+
firstName: 'Brock',
99+
lastName: 'Smith',
100+
role: ['MEMBER'],
101+
},
102+
{
103+
id: "4",
104+
firstName: 'Kent',
105+
lastName: 'Brockman',
106+
role: ['MEMBER'],
107+
},
108+
{
109+
id: "7",
110+
firstName: 'Jimmy',
111+
middleName: 'T.',
112+
lastName: 'Olsen',
113+
role: ['MEMBER'],
114+
},
115+
],
116+
};
117+
118+
const kudos = {
119+
id: 'test-kudos',
120+
message: "Jimmy is awesome!",
121+
senderId: "1",
122+
dateCreated: [ 2025, 2, 17 ],
123+
recipientMembers: [
124+
{
125+
id: "2",
126+
firstName: 'Jimmy',
127+
lastName: 'Olsen',
128+
role: ['MEMBER'],
129+
},
130+
],
131+
};
132+
133+
it('inactive renders correctly', () => {
134+
snapshot(
135+
<AppContextProvider value={initialState}>
136+
<KudosCard
137+
kudos={terminated}
138+
includeActions
139+
includeEdit
140+
onKudosAction={() =>{}}
141+
/>
142+
</AppContextProvider>
143+
);
144+
});
145+
146+
it('active renders correctly', () => {
147+
snapshot(
148+
<AppContextProvider value={initialState}>
149+
<KudosCard
150+
kudos={kudos}
151+
includeActions
152+
includeEdit
153+
onKudosAction={() =>{}}
154+
/>
155+
</AppContextProvider>
156+
);
157+
});

0 commit comments

Comments
 (0)