@@ -6,7 +6,18 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'
66
77const mocks = vi . hoisted ( ( ) => ( {
88 addAttachment : vi . fn ( ) ,
9+ createBillPayment : vi . fn ( ) ,
910 downloadDocument : vi . fn ( ) ,
11+ updateBill : vi . fn ( ) ,
12+ updateBillPayment : vi . fn ( ) ,
13+ updateCreditMemo : vi . fn ( ) ,
14+ updateCustomerPayment : vi . fn ( ) ,
15+ updateEmployee : vi . fn ( ) ,
16+ updateItem : vi . fn ( ) ,
17+ updatePurchase : vi . fn ( ) ,
18+ updatePurchaseOrder : vi . fn ( ) ,
19+ updateVendor : vi . fn ( ) ,
20+ updateVendorCredit : vi . fn ( ) ,
1021} ) )
1122
1223vi . mock ( '@/lib/internal/quickbooks/operations' , ( ) => ( {
@@ -22,6 +33,20 @@ vi.mock('@/lib/internal/quickbooks/operations', () => ({
2233 executeQuickBooksDownloadDocument : mocks . downloadDocument ,
2334} ) )
2435
36+ vi . mock ( '@/lib/internal/quickbooks/provider-operations' , ( ) => ( {
37+ executeQuickBooksCreateBillPaymentOperation : mocks . createBillPayment ,
38+ executeQuickBooksUpdateBillOperation : mocks . updateBill ,
39+ executeQuickBooksUpdateBillPaymentOperation : mocks . updateBillPayment ,
40+ executeQuickBooksUpdateCreditMemoOperation : mocks . updateCreditMemo ,
41+ executeQuickBooksUpdateCustomerPaymentOperation : mocks . updateCustomerPayment ,
42+ executeQuickBooksUpdateEmployeeOperation : mocks . updateEmployee ,
43+ executeQuickBooksUpdateItemOperation : mocks . updateItem ,
44+ executeQuickBooksUpdatePurchaseOperation : mocks . updatePurchase ,
45+ executeQuickBooksUpdatePurchaseOrderOperation : mocks . updatePurchaseOrder ,
46+ executeQuickBooksUpdateVendorCreditOperation : mocks . updateVendorCredit ,
47+ executeQuickBooksUpdateVendorOperation : mocks . updateVendor ,
48+ } ) )
49+
2550import { executeQuickBooksTool } from '@/lib/internal/quickbooks/execute-tool'
2651import type { InternalToolOperationCall } from '@/lib/internal/tool-operations/types'
2752
@@ -50,6 +75,55 @@ describe('executeQuickBooksTool', () => {
5075 vi . clearAllMocks ( )
5176 mocks . addAttachment . mockResolvedValue ( { attachmentId : 'attachment-1' } )
5277 mocks . downloadDocument . mockResolvedValue ( { attachmentId : 'attachment-1' } )
78+ for ( const operation of [
79+ mocks . createBillPayment ,
80+ mocks . updateBill ,
81+ mocks . updateBillPayment ,
82+ mocks . updateCreditMemo ,
83+ mocks . updateCustomerPayment ,
84+ mocks . updateEmployee ,
85+ mocks . updateItem ,
86+ mocks . updatePurchase ,
87+ mocks . updatePurchaseOrder ,
88+ mocks . updateVendor ,
89+ mocks . updateVendorCredit ,
90+ ] ) {
91+ operation . mockResolvedValue ( { success : true , output : { id : 'entity-1' } } )
92+ }
93+ } )
94+
95+ it . each ( [
96+ [ 'quickbooks_create_bill_payment' , mocks . createBillPayment ] ,
97+ [ 'quickbooks_update_bill' , mocks . updateBill ] ,
98+ [ 'quickbooks_update_bill_payment' , mocks . updateBillPayment ] ,
99+ [ 'quickbooks_update_credit_memo' , mocks . updateCreditMemo ] ,
100+ [ 'quickbooks_update_customer_payment' , mocks . updateCustomerPayment ] ,
101+ [ 'quickbooks_update_employee' , mocks . updateEmployee ] ,
102+ [ 'quickbooks_update_item' , mocks . updateItem ] ,
103+ [ 'quickbooks_update_purchase' , mocks . updatePurchase ] ,
104+ [ 'quickbooks_update_purchase_order' , mocks . updatePurchaseOrder ] ,
105+ [ 'quickbooks_update_vendor' , mocks . updateVendor ] ,
106+ [ 'quickbooks_update_vendor_credit' , mocks . updateVendorCredit ] ,
107+ ] ) ( 'dispatches %s through its internal provider operation' , async ( toolId , operation ) => {
108+ const controller = new AbortController ( )
109+ const operationRequest = request ( {
110+ toolId,
111+ input : { accessToken : 'token' , realmId : '123' , entityId : 'entity-1' } ,
112+ signal : controller . signal ,
113+ } )
114+
115+ const response = await executeQuickBooksTool ( operationRequest )
116+
117+ expect ( response . status ) . toBe ( 200 )
118+ await expect ( response . json ( ) ) . resolves . toEqual ( {
119+ success : true ,
120+ output : { id : 'entity-1' } ,
121+ } )
122+ expect ( operation ) . toHaveBeenCalledWith (
123+ operationRequest . input ,
124+ controller . signal ,
125+ operationRequest . context
126+ )
53127 } )
54128
55129 it ( 'dispatches downloads with trusted execution context' , async ( ) => {
0 commit comments