Просмотр исходного кода

Ensure FileTreeProvider stubbed props don't change in Cypress tests (#16758)

GitOrigin-RevId: 01c7fefdef8b28af0b52007209785b478e5d8600
Alf Eaton 2 лет назад
Родитель
Сommit
7f9d105d8c

+ 14 - 8
services/web/test/frontend/features/file-tree/helpers/file-tree-provider.tsx

@@ -1,17 +1,23 @@
-import { FC } from 'react'
+import { ComponentProps, FC, useRef } from 'react'
 import FileTreeContext from '@/features/file-tree/components/file-tree-context'
 
 export const FileTreeProvider: FC<{
   refProviders?: Record<string, boolean>
 }> = ({ children, refProviders = {} }) => {
+  const propsRef =
+    useRef<Omit<ComponentProps<typeof FileTreeContext>, 'refProviders'>>()
+
+  if (propsRef.current === undefined) {
+    propsRef.current = {
+      reindexReferences: cy.stub().as('reindexReferences'),
+      setRefProviderEnabled: cy.stub().as('setRefProviderEnabled'),
+      setStartedFreeTrial: cy.stub().as('setStartedFreeTrial'),
+      onSelect: cy.stub(),
+    }
+  }
+
   return (
-    <FileTreeContext
-      refProviders={refProviders}
-      reindexReferences={cy.stub().as('reindexReferences')}
-      setRefProviderEnabled={cy.stub().as('setRefProviderEnabled')}
-      setStartedFreeTrial={cy.stub().as('setStartedFreeTrial')}
-      onSelect={() => {}}
-    >
+    <FileTreeContext refProviders={refProviders} {...propsRef.current}>
       <>{children}</>
     </FileTreeContext>
   )