33
44import '@wessberg/pointer-events' ;
55
6- import { useRef } from 'react' ;
6+ import { ReactNode , useRef } from 'react' ;
77
88import { fireEvent , screen , waitForElementToBeRemoved } from '@testing-library/react' ;
99
@@ -25,7 +25,9 @@ import { AnnotationToolContext, ANNOTATOR_MODE } from '../../core/annotation-too
2525import { useAnnotatorMode } from '../../hooks/use-annotator-mode' ;
2626import { AnnotationToolProvider } from '../../providers/annotation-tool-provider/annotation-tool-provider.component' ;
2727import { AnnotatorContextMenuProvider } from '../../providers/annotator-context-menu-provider/annotator-context-menu-provider.component' ;
28+ import { AnnotatorProvider } from '../../providers/annotator-provider/annotator-provider.component' ;
2829import { useROI } from '../../providers/region-of-interest-provider/region-of-interest-provider.component' ;
30+ import { SelectedMediaItemProvider } from '../../providers/selected-media-item-provider/selected-media-item-provider.component' ;
2931import { TaskContextProps , TaskProvider , useTask } from '../../providers/task-provider/task-provider.component' ;
3032import { EditTool } from './edit-tool.component' ;
3133
@@ -34,7 +36,8 @@ jest.mock('../../hooks/use-annotator-mode', () => ({
3436} ) ) ;
3537
3638jest . mock ( '../../providers/annotation-scene-provider/annotation-scene-provider.component' , ( ) => ( {
37- useAnnotationScene : ( ) => ( { hasShapePointSelected : { current : false } } ) ,
39+ ...jest . requireActual ( '../../providers/annotation-scene-provider/annotation-scene-provider.component' ) ,
40+ useAnnotationScene : ( ) => ( { annotations : [ ] , hasShapePointSelected : { current : false } } ) ,
3841} ) ) ;
3942
4043const mockROI = { x : 0 , y : 0 , width : 100 , height : 100 } ;
@@ -56,6 +59,22 @@ jest.mock('../../providers/task-provider/task-provider.component', () => ({
5659 useTask : jest . fn ( ) ,
5760} ) ) ;
5861
62+ const Wrapper = ( { children } : { children : ReactNode } ) => {
63+ return (
64+ < ProjectProvider projectIdentifier = { getMockedProjectIdentifier ( ) } >
65+ < TaskProvider >
66+ < SelectedMediaItemProvider >
67+ < AnnotatorProvider >
68+ < AnnotationToolProvider >
69+ < AnnotatorContextMenuProvider > { children } </ AnnotatorContextMenuProvider >
70+ </ AnnotationToolProvider >
71+ </ AnnotatorProvider >
72+ </ SelectedMediaItemProvider >
73+ </ TaskProvider >
74+ </ ProjectProvider >
75+ ) ;
76+ } ;
77+
5978const renderApp = async (
6079 annotationToolContext : AnnotationToolContext ,
6180 tasksHook : Partial < TaskContextProps > = { } ,
@@ -68,19 +87,11 @@ const renderApp = async (
6887 } ) ;
6988
7089 const result = render (
71- < AnnotationToolProvider >
72- < AnnotationToolProvider >
73- < ProjectProvider projectIdentifier = { getMockedProjectIdentifier ( ) } >
74- < TaskProvider >
75- < AnnotatorContextMenuProvider >
76- < svg >
77- < EditTool annotationToolContext = { annotationToolContext } />
78- </ svg >
79- </ AnnotatorContextMenuProvider >
80- </ TaskProvider >
81- </ ProjectProvider >
82- </ AnnotationToolProvider >
83- </ AnnotationToolProvider >
90+ < Wrapper >
91+ < svg >
92+ < EditTool annotationToolContext = { annotationToolContext } />
93+ </ svg >
94+ </ Wrapper >
8495 ) ;
8596
8697 await waitForElementToBeRemoved ( screen . getByRole ( 'progressbar' ) ) ;
@@ -205,15 +216,9 @@ describe('Edit tool', (): void => {
205216 jest . mocked ( useTask ) . mockReturnValue ( mockedTaskContextProps ( { tasks } ) ) ;
206217
207218 render (
208- < AnnotationToolProvider >
209- < ProjectProvider projectIdentifier = { getMockedProjectIdentifier ( ) } >
210- < TaskProvider >
211- < AnnotatorContextMenuProvider >
212- < EditToolApp />
213- </ AnnotatorContextMenuProvider >
214- </ TaskProvider >
215- </ ProjectProvider >
216- </ AnnotationToolProvider >
219+ < Wrapper >
220+ < EditToolApp />
221+ </ Wrapper >
217222 ) ;
218223
219224 await waitForElementToBeRemoved ( screen . getByRole ( 'progressbar' ) ) ;
@@ -357,7 +362,7 @@ describe('editing global labels', () => {
357362
358363 const labels = tasks . flatMap ( ( task ) => task . labels ) ;
359364
360- it ( 'does render the shape of a segmentation annotation without labels' , ( ) => {
365+ it ( 'does render the shape of a segmentation annotation without labels' , async ( ) => {
361366 const roi = { x : 0 , y : 0 , width : image . width , height : image . height } ;
362367 jest . mocked ( useROI ) . mockReturnValueOnce ( { roi, image : imageData } ) ;
363368
@@ -382,13 +387,8 @@ describe('editing global labels', () => {
382387 labels,
383388 selectedTask : tasks [ 1 ] ,
384389 } ) ;
385- render (
386- < AnnotationToolProvider >
387- < svg >
388- < EditTool annotationToolContext = { annotationToolContext } />
389- </ svg >
390- </ AnnotationToolProvider >
391- ) ;
390+
391+ await renderApp ( annotationToolContext , { tasks, selectedTask : tasks [ 1 ] } ) ;
392392
393393 const canvasAnnotations = screen . queryByLabelText ( 'Drag to move shape' ) ;
394394 expect ( canvasAnnotations ) . toBeInTheDocument ( ) ;
0 commit comments