@@ -483,6 +483,41 @@ describe('InternalSurface', () => {
483483 expect ( surface . executeFeedback ( makeFeedback ( 'surface_on_page' , { surfaceId : '' , page : 2 } ) ) ) . toBe ( false )
484484 } )
485485
486+ test ( 'surface_connected reflects the surface connection state' , ( ) => {
487+ const { surface, surfaceController } = createSurface ( )
488+ surfaceController . isSurfaceConnected . mockReturnValue ( true )
489+
490+ expect ( surface . executeFeedback ( makeFeedback ( 'surface_connected' , { surfaceId : 'surface0' } ) ) ) . toBe ( true )
491+ expect ( surfaceController . isSurfaceConnected ) . toHaveBeenCalledWith ( 'surface0' , true )
492+ } )
493+
494+ test ( 'surface_connected is false when the surface is not connected' , ( ) => {
495+ const { surface, surfaceController } = createSurface ( )
496+ surfaceController . isSurfaceConnected . mockReturnValue ( false )
497+
498+ expect ( surface . executeFeedback ( makeFeedback ( 'surface_connected' , { surfaceId : 'surface0' } ) ) ) . toBe ( false )
499+ } )
500+
501+ test ( 'surface_connected is false when no surface is selected' , ( ) => {
502+ const { surface, surfaceController } = createSurface ( )
503+ surfaceController . isSurfaceConnected . mockReturnValue ( true )
504+
505+ expect ( surface . executeFeedback ( makeFeedback ( 'surface_connected' , { surfaceId : '' } ) ) ) . toBe ( false )
506+ } )
507+
508+ test ( 'surface_connected is rechecked when a surface connects or disconnects' , ( ) => {
509+ const { surface, surfaceController } = createSurface ( )
510+ const checkFeedbacks = vi . fn ( )
511+ surface . on ( 'checkFeedbacks' , checkFeedbacks )
512+
513+ const handlers = new Map ( surfaceController . on . mock . calls . map ( ( [ event , fn ] ) => [ event , fn as ( ) => void ] ) )
514+ handlers . get ( 'surface-add' ) ! ( )
515+ handlers . get ( 'surface-delete' ) ! ( )
516+
517+ expect ( checkFeedbacks ) . toHaveBeenCalledTimes ( 2 )
518+ expect ( checkFeedbacks ) . toHaveBeenCalledWith ( 'surface_connected' )
519+ } )
520+
486521 test ( 'outbound_surface_enabled reflects the surface enabled state' , ( ) => {
487522 const { surface, surfaceController } = createSurface ( )
488523 surfaceController . outbound . getById . mockReturnValue ( { enabled : true } as any )
@@ -607,7 +642,7 @@ describe('InternalSurface', () => {
607642 const { surface } = createSurface ( )
608643
609644 expect ( Object . keys ( surface . getFeedbackDefinitions ( ) ) . sort ( ) ) . toEqual (
610- [ 'surface_on_page' , 'outbound_surface_enabled' ] . sort ( )
645+ [ 'surface_on_page' , 'surface_connected' , ' outbound_surface_enabled'] . sort ( )
611646 )
612647 } )
613648 } )
0 commit comments