Skip to content

Commit

Permalink
fix(tests): use mocked msal instance per component and not globally
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonGolms committed Nov 11, 2022
1 parent bf87c22 commit 5deeb8a
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 29 deletions.
3 changes: 0 additions & 3 deletions playwright/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { setupIonicReact } from '@ionic/react';
import { setupMsalMock } from '../src/utils/test/setupMsalMock';

/* Core CSS required for Ionic components to work properly */
import '@ionic/react/css/core.css';
Expand All @@ -21,5 +20,3 @@ import '@ionic/react/css/display.css';
import '../src/theme/index.css';

setupIonicReact();

setupMsalMock();
7 changes: 2 additions & 5 deletions src/App.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,13 @@ import { App } from './App';
import { AppProviders } from './AppProviders';

test.describe('App', () => {
test('renders', async ({ mount }, testInfo) => {
// Extend timeout for this test by 30 seconds.
test.setTimeout(testInfo.timeout + 30000);

test('renders', async ({ mount }) => {
const component = await mount(
<AppProviders>
<App />
</AppProviders>
);

await expect(component).toContainText('Ready to create an app?');
await expect(component).toContainText('Welcome');
});
});
37 changes: 22 additions & 15 deletions src/components/Greeter/Greeter.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { expect, test } from '@playwright/experimental-ct-react';
import { BrowserRouter } from 'react-router-dom';
import { AppProviders } from '../../AppProviders';
import { MOCK_RESPONSE_MICROSOFT_GRAPH_GET_ME } from '../../utils/test/api.me.mock';
import { MsalMock } from '../../utils/test/MsalMock';
import { Greeter } from './Greeter';

test.beforeEach(({ page }) => {
Expand All @@ -18,11 +19,13 @@ test.describe('Greeter', () => {
test('renders', async ({ mount }) => {
const component = await mount(
<BrowserRouter>
<AppProviders>
<div>
<Greeter />
</div>
</AppProviders>
<MsalMock>
<AppProviders>
<div>
<Greeter />
</div>
</AppProviders>
</MsalMock>
</BrowserRouter>
);

Expand All @@ -36,11 +39,13 @@ test.describe('Greeter', () => {

const component = await mount(
<BrowserRouter>
<AppProviders>
<div>
<Greeter />
</div>
</AppProviders>
<MsalMock>
<AppProviders>
<div>
<Greeter />
</div>
</AppProviders>
</MsalMock>
</BrowserRouter>
);

Expand All @@ -50,11 +55,13 @@ test.describe('Greeter', () => {
test('renders with defined hour', async ({ mount }) => {
const component = await mount(
<BrowserRouter>
<AppProviders>
<div>
<Greeter hour={18} />
</div>
</AppProviders>
<MsalMock>
<AppProviders>
<div>
<Greeter hour={18} />
</div>
</AppProviders>
</MsalMock>
</BrowserRouter>
);

Expand Down
9 changes: 6 additions & 3 deletions src/pages/ProtectedPages.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { expect, test } from '@playwright/experimental-ct-react';
import { BrowserRouter } from 'react-router-dom';
import { AppProviders } from '../AppProviders';
import { MOCK_RESPONSE_MICROSOFT_GRAPH_GET_ME } from '../utils/test/api.me.mock';
import { MsalMock } from '../utils/test/MsalMock';
import { ProtectedPages } from './ProtectedPages';

test.beforeEach(async ({ page }) => {
Expand All @@ -18,9 +19,11 @@ test.describe('ProtectedPages', () => {
test('renders', async ({ mount }) => {
const component = await mount(
<BrowserRouter>
<AppProviders>
<ProtectedPages />
</AppProviders>
<MsalMock>
<AppProviders>
<ProtectedPages />
</AppProviders>
</MsalMock>
</BrowserRouter>
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,13 @@ const loadTokenOptions: LoadTokenOptions = {
extendedExpiresOn: 6599,
};

export const setupMsalMock = () => {
export const MsalMock = ({ children }: TProps) => {
msalInstance.getTokenCache().loadExternalTokens(silentRequest, serverResponse, loadTokenOptions);

const accounts = msalInstance.getAllAccounts();

msalInstance.setActiveAccount(accounts[0]);
return <>{children}</>;
};

type TProps = {
children: React.ReactNode;
};

0 comments on commit 5deeb8a

Please sign in to comment.