From 2566455740064e62862ae1366383da13827eeb64 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Wed, 12 Aug 2026 08:37:22 +0200 Subject: [PATCH] [web] mock the changes/users request in EditorProviders (#36435) GitOrigin-RevId: 5f8f5b9317d089ca52ff17ad1307d58d625709d5 --- .../frontend/helpers/editor-providers.tsx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/services/web/test/frontend/helpers/editor-providers.tsx b/services/web/test/frontend/helpers/editor-providers.tsx index 2153164790..e9e2c4c2e6 100644 --- a/services/web/test/frontend/helpers/editor-providers.tsx +++ b/services/web/test/frontend/helpers/editor-providers.tsx @@ -1,5 +1,6 @@ // Disable prop type checks for test harnesses /* eslint-disable react/prop-types */ +import fetchMock from 'fetch-mock' import { merge } from 'lodash' import { SocketIOMock } from '@/ide/connection/SocketIoShim' import { IdeContext } from '@/shared/context/ide-context' @@ -69,6 +70,22 @@ const defaultUserSettings = { referencesSearchMode: 'simple', } satisfies UserSettings +const CHANGES_USERS_ROUTE = 'editor-providers-changes-users' + +// ChangesUsersProvider fetches this on mount, so every test rendering the editor +// context needs the route. Tests that care about the response register their own +// route before rendering, which takes precedence over this one. +function mockChangesUsers() { + const alreadyMocked = fetchMock.router.routes.some( + route => route.config.name === CHANGES_USERS_ROUTE + ) + if (!alreadyMocked) { + fetchMock.get('express:/project/:projectId/changes/users', [], { + name: CHANGES_USERS_ROUTE, + }) + } +} + export type EditorProvidersProps = { user?: Pick< User, @@ -245,6 +262,8 @@ export function EditorProviders({ window.metaAttributesCache.set('ol-user', { ...user, features }) window.metaAttributesCache.set('ol-project_id', projectId) + mockChangesUsers() + const customProviders: Record> = { ConnectionProvider: makeConnectionProvider(socket), IdeReactProvider: makeIdeReactProvider(scope, socket),