From fe614f4ba5ff145c2bd43872b65f2abb3c53be26 Mon Sep 17 00:00:00 2001 From: "davidovrelid.com" Date: Tue, 15 Oct 2024 10:58:03 +0200 Subject: [PATCH 1/3] bug(workspace): fixed bug due to logging application insights from frontend + added unit-tests for it --- .../src/contexts/LoggerContext.test.tsx | 46 +++++++++++++++++++ .../shared/src/contexts/LoggerContext.tsx | 6 +-- 2 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 frontend/packages/shared/src/contexts/LoggerContext.test.tsx diff --git a/frontend/packages/shared/src/contexts/LoggerContext.test.tsx b/frontend/packages/shared/src/contexts/LoggerContext.test.tsx new file mode 100644 index 00000000000..7a947fbcaa2 --- /dev/null +++ b/frontend/packages/shared/src/contexts/LoggerContext.test.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import { LoggerContextProvider, LoggerContextProviderProps } from './LoggerContext'; +import { ApplicationInsights } from '@microsoft/applicationinsights-web'; + +jest.mock('@microsoft/applicationinsights-web', () => { + const mockTrackException = jest.fn(); + return { + ApplicationInsights: jest.fn().mockImplementation(() => ({ + loadAppInsights: jest.fn(), + trackException: mockTrackException, + })), + mockTrackException, + }; +}); + +describe('LoggerContextProvider', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + test('does not initialize ApplicationInsights without connectionString', () => { + const emptyConfig = {}; + renderLoggerContext({ config: emptyConfig }); + + expect(ApplicationInsights).not.toHaveBeenCalled(); + }); + + test('does initialize ApplicationInsights when connectionString is provided', () => { + renderLoggerContext({ + config: { + connectionString: 'my-unit-test-connection-string', + }, + }); + + expect(ApplicationInsights).toHaveBeenCalled(); + }); +}); + +const renderLoggerContext = (props?: Pick): void => { + render( + +
child
+
, + ); +}; diff --git a/frontend/packages/shared/src/contexts/LoggerContext.tsx b/frontend/packages/shared/src/contexts/LoggerContext.tsx index f88f4d32288..34a57133690 100644 --- a/frontend/packages/shared/src/contexts/LoggerContext.tsx +++ b/frontend/packages/shared/src/contexts/LoggerContext.tsx @@ -8,7 +8,7 @@ export type LoggerConfig = IConfiguration & IConfig; const LoggerContext = createContext(null); -type LoggerContextProviderProps = { +export type LoggerContextProviderProps = { config: LoggerConfig; children: ReactNode; }; @@ -19,8 +19,8 @@ export const LoggerContextProvider = ({ const reactPlugin = useMemo(() => new ReactPlugin(), []); const applicationInsights = useMemo(() => { - // check if we have a instrumentationKey, if not, don't initialize app insights (we do not want AI to run on localhost) - if (!config.instrumentationKey) return null; + // check if we have a connectionString, if not, don't initialize app insights (we do not want AI to run on localhost) + if (!config.connectionString) return null; const insights = new ApplicationInsights({ config: { From b3eeee9ac0d7e976f2274d7922c842842bae03f7 Mon Sep 17 00:00:00 2001 From: "davidovrelid.com" Date: Tue, 15 Oct 2024 11:03:11 +0200 Subject: [PATCH 2/3] removed unused import --- frontend/packages/shared/src/contexts/LoggerContext.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/packages/shared/src/contexts/LoggerContext.test.tsx b/frontend/packages/shared/src/contexts/LoggerContext.test.tsx index 7a947fbcaa2..b5938b9d5ee 100644 --- a/frontend/packages/shared/src/contexts/LoggerContext.test.tsx +++ b/frontend/packages/shared/src/contexts/LoggerContext.test.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render } from '@testing-library/react'; import { LoggerContextProvider, LoggerContextProviderProps } from './LoggerContext'; import { ApplicationInsights } from '@microsoft/applicationinsights-web'; From c50b0b9819410a041dba4b7c89590a4e3c972859 Mon Sep 17 00:00:00 2001 From: "davidovrelid.com" Date: Tue, 15 Oct 2024 11:12:20 +0200 Subject: [PATCH 3/3] fix eslint --- frontend/packages/shared/src/contexts/LoggerContext.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/packages/shared/src/contexts/LoggerContext.test.tsx b/frontend/packages/shared/src/contexts/LoggerContext.test.tsx index b5938b9d5ee..1636b3a9b7e 100644 --- a/frontend/packages/shared/src/contexts/LoggerContext.test.tsx +++ b/frontend/packages/shared/src/contexts/LoggerContext.test.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { LoggerContextProvider, LoggerContextProviderProps } from './LoggerContext'; +import { LoggerContextProvider, type LoggerContextProviderProps } from './LoggerContext'; import { ApplicationInsights } from '@microsoft/applicationinsights-web'; jest.mock('@microsoft/applicationinsights-web', () => {