1+ import React from "preact/compat" ;
12import {
23 act ,
34 cleanup ,
@@ -7,6 +8,21 @@ import {
78} from "@testing-library/preact" ;
89import { singleLineFieldSchema } from "../../../__test__/data/fields" ;
910import AddInstanceButtonComponent from "../addInstanceButton" ;
11+ import visualBuilderPostMessageActual from "../../utils/visualBuilderPostMessage" ;
12+ import { getDiscussionIdByFieldMetaData } from "../../utils/getDiscussionIdByFieldMetaData" ;
13+
14+ const visualBuilderPostMessage = vi . mocked ( visualBuilderPostMessageActual ) ;
15+
16+ vi . mock ( "../../utils/visualBuilderPostMessage" , async ( ) => {
17+ return {
18+ default : {
19+ send : vi . fn ( ) . mockImplementation ( ( _eventName : string ) => {
20+ return Promise . resolve ( { } ) ;
21+ } ) ,
22+ on : vi . fn ( ) ,
23+ } ,
24+ } ;
25+ } ) ;
1026
1127describe ( "AddInstanceButtonComponent" , ( ) => {
1228 afterEach ( cleanup ) ;
@@ -18,10 +34,16 @@ describe("AddInstanceButtonComponent", () => {
1834 < AddInstanceButtonComponent
1935 value = { [ ] }
2036 fieldSchema = { singleLineFieldSchema }
37+ // @ts -expect-error mocking fieldMetadata
38+ fieldMetadata = { { } }
39+ index = { 0 }
2140 onClick = { onClickCallback }
41+ label = "Add instance"
42+ // @ts -expect-error mocking signal
43+ loading = { { value : false } }
2244 />
2345 ) ;
24- } )
46+ } ) ;
2547 const buttonElement = getByTestId (
2648 document . body ,
2749 "visual-builder-add-instance-button"
@@ -33,22 +55,63 @@ describe("AddInstanceButtonComponent", () => {
3355 expect ( buttonElement . querySelector ( "path" ) ) . toBeTruthy ( ) ;
3456 } ) ;
3557
36- test ( "calls onClickCallback when button is clicked" , async ( ) => {
58+ test ( "sends add-instance message when clicked" , async ( ) => {
3759 const onClickCallback = vi . fn ( ) ;
3860 await act ( ( ) => {
3961 render (
4062 < AddInstanceButtonComponent
4163 value = { [ ] }
4264 fieldSchema = { singleLineFieldSchema }
65+ // @ts -expect-error mocking fieldMetadata
66+ fieldMetadata = { { } }
67+ index = { 0 }
4368 onClick = { onClickCallback }
69+ label = "Add instance"
70+ // @ts -expect-error mocking signal
71+ loading = { { value : false } }
4472 />
4573 ) ;
46- } )
74+ } ) ;
4775 const buttonElement = getByTestId (
4876 document . body ,
4977 "visual-builder-add-instance-button"
5078 ) ;
51- fireEvent . click ( buttonElement ) ;
79+ await act ( ( ) => {
80+ fireEvent . click ( buttonElement ) ;
81+ } ) ;
82+ expect ( visualBuilderPostMessage ?. send ) . toHaveBeenCalledWith (
83+ "add-instance" ,
84+ {
85+ fieldMetadata : { } ,
86+ index : 0 ,
87+ }
88+ ) ;
89+ } ) ;
90+
91+ test ( "calls onClick callback when clicked" , async ( ) => {
92+ const onClickCallback = vi . fn ( ) ;
93+ await act ( ( ) => {
94+ render (
95+ < AddInstanceButtonComponent
96+ value = { [ ] }
97+ fieldSchema = { singleLineFieldSchema }
98+ // @ts -expect-error mocking fieldMetadata
99+ fieldMetadata = { { } }
100+ index = { 0 }
101+ onClick = { onClickCallback }
102+ label = "Add instance"
103+ // @ts -expect-error mocking signal
104+ loading = { { value : false } }
105+ />
106+ ) ;
107+ } ) ;
108+ const buttonElement = getByTestId (
109+ document . body ,
110+ "visual-builder-add-instance-button"
111+ ) ;
112+ await act ( ( ) => {
113+ fireEvent . click ( buttonElement ) ;
114+ } ) ;
52115 expect ( onClickCallback ) . toHaveBeenCalled ( ) ;
53116 } ) ;
54117} ) ;
0 commit comments