@@ -73,11 +73,15 @@ vi.mock("../../components/FieldRevert/FieldRevertComponent", () => ({
7373
7474vi . mock ( "get-xpath" , ( ) => ( { default : vi . fn ( ) . mockReturnValue ( "/div" ) } ) ) ;
7575
76- vi . mock ( "../../configManager/configManager" , ( ) => ( {
76+ const hoistedConfigMocks = vi . hoisted ( ( ) => ( {
77+ configGet : vi . fn ( ) . mockReturnValue ( {
78+ collab : { enable : false , isFeedbackMode : false , pauseFeedback : false } ,
79+ } ) ,
80+ } ) ) ;
81+
82+ vi . mock ( "../../../configManager/configManager" , ( ) => ( {
7783 default : {
78- get : vi . fn ( ) . mockReturnValue ( {
79- collab : { enable : false , isFeedbackMode : false , pauseFeedback : false } ,
80- } ) ,
84+ get : hoistedConfigMocks . configGet ,
8185 set : vi . fn ( ) ,
8286 } ,
8387} ) ) ;
@@ -110,6 +114,7 @@ const { getCsDataOfElement } = await import("../../utils/getCsDataOfElement");
110114const { addFocusOverlay } = await import ( "../../generators/generateOverlay" ) ;
111115const { handleIndividualFields } = await import ( "../../utils/handleIndividualFields" ) ;
112116const { isCustomFieldMultipleInstance } = await import ( "../../utils/isCustomFieldMultipleInstance" ) ;
117+ const { generateThread, toggleCollabPopup } = await import ( "../../generators/generateThread" ) ;
113118
114119function makeEditableElement ( ) : HTMLElement {
115120 const el = document . createElement ( "div" ) ;
@@ -210,3 +215,38 @@ describe("handleBuilderInteraction — custom field multiple instance suppressio
210215 expect ( addFocusOverlay ) . toHaveBeenCalled ( ) ;
211216 } ) ;
212217} ) ;
218+
219+ describe ( "handleBuilderInteraction — pauseFeedback guard" , ( ) => {
220+ let editableElement : HTMLElement ;
221+
222+ beforeEach ( ( ) => {
223+ vi . clearAllMocks ( ) ;
224+ document . body . innerHTML = "" ;
225+ editableElement = makeEditableElement ( ) ;
226+ VisualBuilder . VisualBuilderGlobalState . value . previousSelectedEditableDOM = null ;
227+ VisualBuilder . VisualBuilderGlobalState . value . isFocussed = false ;
228+ } ) ;
229+
230+ it ( "should return early without processing click when collab is enabled and pauseFeedback is true" , async ( ) => {
231+ hoistedConfigMocks . configGet . mockReturnValue ( {
232+ collab : { enable : true , pauseFeedback : true , isFeedbackMode : true } ,
233+ } ) ;
234+
235+ await handleBuilderInteraction ( makeParams ( editableElement ) ) ;
236+
237+ expect ( getCsDataOfElement ) . not . toHaveBeenCalled ( ) ;
238+ expect ( generateThread ) . not . toHaveBeenCalled ( ) ;
239+ expect ( toggleCollabPopup ) . not . toHaveBeenCalled ( ) ;
240+ expect ( addFocusOverlay ) . not . toHaveBeenCalled ( ) ;
241+ } ) ;
242+
243+ it ( "should call generateThread when collab is enabled and pauseFeedback is false" , async ( ) => {
244+ hoistedConfigMocks . configGet . mockReturnValue ( {
245+ collab : { enable : true , pauseFeedback : false , isFeedbackMode : true } ,
246+ } ) ;
247+
248+ await handleBuilderInteraction ( makeParams ( editableElement ) ) ;
249+
250+ expect ( generateThread ) . toHaveBeenCalled ( ) ;
251+ } ) ;
252+ } ) ;
0 commit comments