11import { describe , it , expect , vi , beforeEach , Mock } from "vitest" ;
2- import { handleIndividualFields , cleanIndividualFieldResidual } from "../handleIndividualFields" ;
2+ import {
3+ handleIndividualFields ,
4+ cleanIndividualFieldResidual ,
5+ } from "../handleIndividualFields" ;
36import { VisualBuilderCslpEventDetails } from "../../types/visualBuilder.types" ;
47import { FieldSchemaMap } from "../fieldSchemaMap" ;
58import { getFieldData } from "../getFieldData" ;
69import { getFieldType } from "../getFieldType" ;
710import { isFieldDisabled } from "../isFieldDisabled" ;
8- import { handleAddButtonsForMultiple , removeAddInstanceButtons } from "../multipleElementAddButton" ;
11+ import {
12+ handleAddButtonsForMultiple ,
13+ removeAddInstanceButtons ,
14+ } from "../multipleElementAddButton" ;
915import { VisualBuilderPostMessageEvents } from "../types/postMessage.types" ;
1016import visualBuilderPostMessage from "../visualBuilderPostMessage" ;
1117import { VisualBuilder } from "../.." ;
@@ -39,16 +45,16 @@ describe("handleIndividualFields", () => {
3945 fieldPath : "fieldPath" ,
4046 fieldPathWithIndex : "fieldPathWithIndex" ,
4147 instance : {
42- fieldPathWithIndex : "fieldPathWithIndex.0"
43- }
48+ fieldPathWithIndex : "fieldPathWithIndex.0" ,
49+ } ,
4450 } ,
45- editableElement : document . createElement ( "div" )
51+ editableElement : document . createElement ( "div" ) ,
4652 } ;
4753
4854 elements = {
4955 visualBuilderContainer : document . createElement ( "div" ) ,
5056 resizeObserver : new ResizeObserver ( ( ) => { } ) ,
51- lastEditedField : null
57+ lastEditedField : null ,
5258 } ;
5359
5460 vi . clearAllMocks ( ) ;
@@ -69,34 +75,46 @@ describe("handleIndividualFields", () => {
6975 await handleIndividualFields ( eventDetails , elements ) ;
7076 } ) ;
7177
72- expect ( FieldSchemaMap . getFieldSchema ) . toHaveBeenCalledWith ( "contentTypeUid" , "fieldPath" ) ;
73- expect ( getFieldData ) . toHaveBeenCalledWith ( { content_type_uid : "contentTypeUid" , entry_uid : "entryUid" , locale : "en-us" } , "fieldPathWithIndex" ) ;
78+ expect ( FieldSchemaMap . getFieldSchema ) . toHaveBeenCalledWith (
79+ "contentTypeUid" ,
80+ "fieldPath"
81+ ) ;
82+ expect ( getFieldData ) . toHaveBeenCalledWith (
83+ {
84+ content_type_uid : "contentTypeUid" ,
85+ entry_uid : "entryUid" ,
86+ locale : "en-us" ,
87+ } ,
88+ "fieldPathWithIndex"
89+ ) ;
7490 expect ( getFieldType ) . toHaveBeenCalledWith ( fieldSchema ) ;
7591 expect ( isFieldDisabled ) . toHaveBeenCalledWith (
76- fieldSchema ,
77- eventDetails ,
78- {
79- update : true ,
80- error : true
81- } ,
82- {
83- read : true ,
84- update : true ,
85- delete : true ,
86- publish : true ,
87- } ,
88- {
89- permissions : {
90- entry : {
91- update : true ,
92- } ,
92+ fieldSchema ,
93+ eventDetails ,
94+ {
95+ update : true ,
9396 } ,
94- stage : {
95- name : "Unknown"
97+ {
98+ create : true ,
99+ read : true ,
100+ update : true ,
101+ delete : true ,
102+ publish : true ,
103+ } ,
104+ {
105+ permissions : {
106+ entry : {
107+ update : true ,
108+ } ,
109+ } ,
110+ stage : undefined ,
96111 }
97- }
98112 ) ;
99- expect ( eventDetails . editableElement . getAttribute ( VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY ) ) . toBe ( fieldType ) ;
113+ expect (
114+ eventDetails . editableElement . getAttribute (
115+ VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY
116+ )
117+ ) . toBe ( fieldType ) ;
100118 } ) ;
101119
102120 it ( "should handle multiple fields correctly" , async ( ) => {
@@ -116,7 +134,10 @@ describe("handleIndividualFields", () => {
116134 } ) ;
117135
118136 it ( "should handle inline editing for supported fields" , async ( ) => {
119- const fieldSchema = { data_type : FieldDataType . SINGLELINE , multiple : false } ;
137+ const fieldSchema = {
138+ data_type : FieldDataType . SINGLELINE ,
139+ multiple : false ,
140+ } ;
120141 const expectedFieldData = "expectedFieldData" ;
121142 eventDetails . editableElement . textContent = expectedFieldData ;
122143 const fieldType = FieldDataType . SINGLELINE ;
@@ -129,12 +150,17 @@ describe("handleIndividualFields", () => {
129150
130151 await act ( async ( ) => {
131152 await handleIndividualFields ( eventDetails , elements ) ;
132- } )
153+ } ) ;
133154
134- expect ( eventDetails . editableElement . getAttribute ( VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY ) ) . toBe ( fieldType ) ;
135- expect ( eventDetails . editableElement . getAttribute ( "contenteditable" ) ) . toBe ( "true" ) ;
155+ expect (
156+ eventDetails . editableElement . getAttribute (
157+ VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY
158+ )
159+ ) . toBe ( fieldType ) ;
160+ expect (
161+ eventDetails . editableElement . getAttribute ( "contenteditable" )
162+ ) . toBe ( "true" ) ;
136163 } ) ;
137-
138164} ) ;
139165
140166describe ( "cleanIndividualFieldResidual" , ( ) => {
@@ -150,45 +176,59 @@ describe("cleanIndividualFieldResidual", () => {
150176 overlayWrapper : document . createElement ( "div" ) ,
151177 visualBuilderContainer : document . createElement ( "div" ) ,
152178 focusedToolbar : document . createElement ( "div" ) ,
153- resizeObserver : new ResizeObserver ( ( ) => { } )
179+ resizeObserver : new ResizeObserver ( ( ) => { } ) ,
154180 } ;
155181
156182 vi . clearAllMocks ( ) ;
157183 } ) ;
158184
159185 it ( "should clean individual field residuals correctly" , ( ) => {
160186 const previousSelectedEditableDOM = document . createElement ( "div" ) ;
161- VisualBuilder . VisualBuilderGlobalState . value . previousSelectedEditableDOM = previousSelectedEditableDOM ;
187+ VisualBuilder . VisualBuilderGlobalState . value . previousSelectedEditableDOM =
188+ previousSelectedEditableDOM ;
162189
163190 cleanIndividualFieldResidual ( elements ) ;
164191
165192 expect ( removeAddInstanceButtons ) . toHaveBeenCalled ( ) ;
166- expect ( previousSelectedEditableDOM . getAttribute ( "contenteditable" ) ) . toBeNull ( ) ;
167- expect ( elements . resizeObserver . unobserve ) . toHaveBeenCalledWith ( previousSelectedEditableDOM ) ;
193+ expect (
194+ previousSelectedEditableDOM . getAttribute ( "contenteditable" )
195+ ) . toBeNull ( ) ;
196+ expect ( elements . resizeObserver . unobserve ) . toHaveBeenCalledWith (
197+ previousSelectedEditableDOM
198+ ) ;
168199 } ) ;
169200
170201 it ( "should clean pseudo editable element correctly" , ( ) => {
171202 const pseudoEditableElement = document . createElement ( "div" ) ;
172- pseudoEditableElement . classList . add ( "visual-builder__pseudo-editable-element" ) ;
203+ pseudoEditableElement . classList . add (
204+ "visual-builder__pseudo-editable-element"
205+ ) ;
173206 elements . visualBuilderContainer ?. appendChild ( pseudoEditableElement ) ;
174207
175208 cleanIndividualFieldResidual ( elements ) ;
176209
177- expect ( elements . resizeObserver . unobserve ) . toHaveBeenCalledWith ( pseudoEditableElement ) ;
210+ expect ( elements . resizeObserver . unobserve ) . toHaveBeenCalledWith (
211+ pseudoEditableElement
212+ ) ;
178213 expect ( pseudoEditableElement . parentNode ) . toBeNull ( ) ;
179214 } ) ;
180- it ( "should clean focused toolbar correctly" , ( ) => {
181- cleanIndividualFieldResidual ( elements ) ;
215+ it ( "should clean focused toolbar correctly" , ( ) => {
216+ cleanIndividualFieldResidual ( elements ) ;
182217
183- expect ( elements . focusedToolbar ?. innerHTML ) . toBe ( "" ) ;
218+ expect ( elements . focusedToolbar ?. innerHTML ) . toBe ( "" ) ;
184219
185- const toolbarEvents = [ VisualBuilderPostMessageEvents . DELETE_INSTANCE , VisualBuilderPostMessageEvents . UPDATE_DISCUSSION_ID ] ;
186- toolbarEvents . forEach ( ( event ) => {
187- //@ts -expect-error - We are accessing private method here, but it is necessary to clean up the event listeners.
188- if ( visualBuilderPostMessage ?. requestMessageHandlers ?. has ( event ) ) {
220+ const toolbarEvents = [
221+ VisualBuilderPostMessageEvents . DELETE_INSTANCE ,
222+ VisualBuilderPostMessageEvents . UPDATE_DISCUSSION_ID ,
223+ ] ;
224+ toolbarEvents . forEach ( ( event ) => {
189225 //@ts -expect-error - We are accessing private method here, but it is necessary to clean up the event listeners.
190- expect ( visualBuilderPostMessage ?. unregisterEvent ) . toHaveBeenCalledWith ( event ) ;
191- }
226+ if ( visualBuilderPostMessage ?. requestMessageHandlers ?. has ( event ) ) {
227+ //@ts -expect-error - We are accessing private method here, but it is necessary to clean up the event listeners.
228+ expect (
229+ visualBuilderPostMessage ?. unregisterEvent
230+ ) . toHaveBeenCalledWith ( event ) ;
231+ }
232+ } ) ;
192233 } ) ;
193234} ) ;
194- } ) ;
0 commit comments