Skip to content

Commit

Permalink
fix: Clear queries after logout (#32480)
Browse files Browse the repository at this point in the history
Co-authored-by: MartinSchoeler <martin.schoeler@rocket.chat>
  • Loading branch information
ggazzo and MartinSchoeler committed May 24, 2024
1 parent 496b205 commit f432fc8
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
7 changes: 7 additions & 0 deletions apps/meteor/client/providers/UserProvider/UserProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { sdk } from '../../../app/utils/client/lib/SDKClient';
import { afterLogoutCleanUpCallback } from '../../../lib/callbacks/afterLogoutCleanUpCallback';
import { useReactiveValue } from '../../hooks/useReactiveValue';
import { createReactiveSubscriptionFactory } from '../../lib/createReactiveSubscriptionFactory';
import { queryClient } from '../../lib/queryClient';
import { useCreateFontStyleElement } from '../../views/account/accessibility/hooks/useCreateFontStyleElement';
import { useClearRemovedRoomsHistory } from './hooks/useClearRemovedRoomsHistory';
import { useDeleteUser } from './hooks/useDeleteUser';
Expand Down Expand Up @@ -92,6 +93,12 @@ const UserProvider = ({ children }: UserProviderProps): ReactElement => {
}
}, [preferedLanguage, setPreferedLanguage, setUserLanguage, user?.language, userLanguage, userId, setUserPreferences]);

useEffect(() => {
if (!userId) {
queryClient.clear();
}
}, [userId]);

return <UserContext.Provider children={children} value={contextValue} />;
};

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import { Page } from '@playwright/test';

import { DEFAULT_USER_CREDENTIALS } from '../config/constants';
import injectInitialData from '../fixtures/inject-initial-data';
import { Users } from '../fixtures/userStates';
import { HomeOmnichannel } from '../page-objects';
import { createAgent, makeAgentAvailable } from '../utils/omnichannel/agents';
import { createConversation } from '../utils/omnichannel/rooms';
import { test, expect } from '../utils/test';

test.use({ storageState: Users.user1.state });

test.describe('OC - Manual Selection', () => {
let poOmnichannel: HomeOmnichannel;
let agent: Awaited<ReturnType<typeof createAgent>>;

// Change routing method to manual selection
test.beforeAll(async ({ api }) => {
const res = await api.post('/settings/Livechat_Routing_Method', { value: 'Manual_Selection' });
expect(res.status()).toBe(200);
});

// Create agent and make it available
test.beforeAll(async ({ api }) => {
agent = await createAgent(api, 'user1');
await makeAgentAvailable(api, agent.data._id);
});

// Create page object and redirect to home
test.beforeEach(async ({ page }: { page: Page }) => {
poOmnichannel = new HomeOmnichannel(page);
await page.goto('/home');

await poOmnichannel.sidenav.logout();
await poOmnichannel.page.locator('role=textbox[name=/username/i]').waitFor({ state: 'visible' });
await poOmnichannel.page.locator('role=textbox[name=/username/i]').fill('user1');
await poOmnichannel.page.locator('[name=password]').fill(DEFAULT_USER_CREDENTIALS.password);
await poOmnichannel.page.locator('role=button[name="Login"]').click();

await poOmnichannel.page.locator('.main-content').waitFor();
});

// Delete all data
test.afterAll(async ({ api }) => {
await agent.delete()
await api.post('/settings/Livechat_Routing_Method', { value: 'Auto_Selection' });
await injectInitialData();
});

test('OC - Manual Selection - Logout & Login', async ({ api }) => {
expect(await poOmnichannel.page.locator('#omnichannel-status-toggle').getAttribute('title')).toEqual('Turn off answer chats');

const { data: { room } } = await createConversation(api);

await test.step('expect login and see the chat in queue after login', async () => {
await poOmnichannel.sidenav.getSidebarItemByName(room.fname).click();
await expect(poOmnichannel.content.inputMessage).not.toBeVisible();
});

await test.step('expect take chat to be visible and return to queue not visible', async () => {
await expect(poOmnichannel.content.btnTakeChat).toBeVisible();
await expect(poOmnichannel.content.btnReturnToQueue).not.toBeVisible();
});

await test.step('expect to be able take chat', async () => {
await poOmnichannel.content.btnTakeChat.click();
await expect(poOmnichannel.content.lastSystemMessageBody).toHaveText('joined the channel');
await expect(poOmnichannel.content.inputMessage).toBeVisible();
await expect(poOmnichannel.content.btnTakeChat).not.toBeVisible();
await expect(poOmnichannel.content.btnReturnToQueue).toBeVisible();
await expect(poOmnichannel.sidenav.getSidebarItemByName(room.fname)).toBeVisible();
});
});
});

0 comments on commit f432fc8

Please sign in to comment.