Skip to content

Commit 29d7d47

Browse files
committed
removed istanbul statement
1 parent eb61609 commit 29d7d47

File tree

2 files changed

+100
-7
lines changed

2 files changed

+100
-7
lines changed

src/screens/UserPortal/People/People.spec.tsx

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1243,4 +1243,97 @@ describe('People Component Additional Coverage Tests', () => {
12431243
// Wait to ensure no errors occur
12441244
await new Promise((resolve) => setTimeout(resolve, 100));
12451245
});
1246+
it('handles admin mode transition when admin data is not yet available', async () => {
1247+
// Create a mock that will delay the admin data response
1248+
const delayedAdminMock = {
1249+
request: {
1250+
query: ORGANIZATION_ADMINS_LIST,
1251+
variables: { id: '' },
1252+
},
1253+
result: {
1254+
data: {
1255+
organizations: [
1256+
{
1257+
__typename: 'Organization', // Add typename to match actual response
1258+
_id: 'org-1',
1259+
admins: [
1260+
{
1261+
_id: 'admin1',
1262+
firstName: 'Admin',
1263+
lastName: 'Test',
1264+
email: 'admin@test.com',
1265+
image: null,
1266+
createdAt: new Date().toISOString(),
1267+
},
1268+
],
1269+
},
1270+
],
1271+
},
1272+
},
1273+
delay: 1000, // Add a delay to ensure we can switch modes before data arrives
1274+
};
1275+
1276+
const membersListMock = {
1277+
request: {
1278+
query: ORGANIZATIONS_MEMBER_CONNECTION_LIST,
1279+
variables: { orgId: '', firstName_contains: '' },
1280+
},
1281+
result: {
1282+
data: {
1283+
organizationsMemberConnection: {
1284+
edges: [
1285+
{
1286+
_id: 'member1',
1287+
firstName: 'Test',
1288+
lastName: 'Member',
1289+
email: 'member@test.com',
1290+
image: null,
1291+
createdAt: new Date().toISOString(),
1292+
},
1293+
],
1294+
},
1295+
},
1296+
},
1297+
};
1298+
1299+
render(
1300+
<MockedProvider
1301+
addTypename={false}
1302+
mocks={[membersListMock, delayedAdminMock]}
1303+
>
1304+
<BrowserRouter>
1305+
<Provider store={store}>
1306+
<I18nextProvider i18n={i18nForTest}>
1307+
<People />
1308+
</I18nextProvider>
1309+
</Provider>
1310+
</BrowserRouter>
1311+
</MockedProvider>,
1312+
);
1313+
1314+
// Wait for initial members data to load
1315+
await waitFor(() => {
1316+
expect(screen.getByText('Test Member')).toBeInTheDocument();
1317+
});
1318+
1319+
// Switch to admin mode before admin data is available
1320+
userEvent.click(screen.getByTestId('modeChangeBtn'));
1321+
await waitFor(() => {
1322+
userEvent.click(screen.getByTestId('modeBtn1'));
1323+
});
1324+
1325+
// Initially there should be no members shown as we're waiting for admin data
1326+
expect(screen.queryByText('Test Member')).not.toBeInTheDocument();
1327+
1328+
// Wait for admin data to load and verify it appears
1329+
await waitFor(
1330+
() => {
1331+
// Check for the admin's name (firstName + lastName)
1332+
expect(screen.getByText('Admin Test')).toBeInTheDocument();
1333+
// Also verify that the admin role is displayed
1334+
expect(screen.getByText('Admin')).toBeInTheDocument();
1335+
},
1336+
{ timeout: 2000 },
1337+
);
1338+
});
12461339
});

src/screens/UserPortal/People/People.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -149,17 +149,17 @@ export default function people(): JSX.Element {
149149
}
150150
}
151151
useEffect(() => {
152-
/* istanbul ignore else -- @preserve */
153-
if (mode == 0) {
154-
if (data) {
155-
setMembers(allMembers);
156-
}
157-
} else if (mode == 1) {
152+
if (mode === 0 && data) {
153+
setMembers(allMembers);
154+
} else if (mode === 1) {
155+
// Clear members immediately when switching to admin mode
156+
setMembers([]);
157+
// Then update with admin data when it's available
158158
if (data2) {
159159
setMembers(admins);
160160
}
161161
}
162-
}, [mode]);
162+
}, [mode, data, data2, allMembers, admins]);
163163

164164
return (
165165
<>

0 commit comments

Comments
 (0)