11import { createWalletClient , http , type Address , type Hex } from 'viem' ;
22import { generatePrivateKey , privateKeyToAccount } from 'viem/accounts' ;
3+ import * as viemActions from 'viem/actions' ;
34import { sepolia } from 'viem/chains' ;
45import { describe , it , expect , vi , beforeEach } from 'vitest' ;
56
@@ -89,16 +90,17 @@ describe('NonceEnforcer execute functions', () => {
8990 const mockRequest = { to : contractAddress , data : '0x123' } ;
9091 const mockSimulateResult = { request : mockRequest , result : undefined } ;
9192
92- const { simulateContract } = await import ( 'viem/actions' ) ;
93- vi . mocked ( simulateContract ) . mockResolvedValue ( mockSimulateResult as any ) ;
93+ vi . mocked ( viemActions . simulateContract ) . mockResolvedValue (
94+ mockSimulateResult as any ,
95+ ) ;
9496
9597 const result = await NonceEnforcer . simulate . incrementNonce ( {
9698 client,
9799 contractAddress,
98100 delegationManager,
99101 } ) ;
100102
101- expect ( simulateContract ) . toHaveBeenCalledWith ( client , {
103+ expect ( viemActions . simulateContract ) . toHaveBeenCalledWith ( client , {
102104 address : contractAddress ,
103105 abi : expect . any ( Array ) ,
104106 functionName : 'incrementNonce' ,
@@ -111,8 +113,7 @@ describe('NonceEnforcer execute functions', () => {
111113 it ( 'should handle simulation errors' , async ( ) => {
112114 const mockError = new Error ( 'Simulation failed' ) ;
113115
114- const { simulateContract } = await import ( 'viem/actions' ) ;
115- vi . mocked ( simulateContract ) . mockRejectedValue ( mockError ) ;
116+ vi . mocked ( viemActions . simulateContract ) . mockRejectedValue ( mockError ) ;
116117
117118 await expect (
118119 NonceEnforcer . simulate . incrementNonce ( {
@@ -128,16 +129,17 @@ describe('NonceEnforcer execute functions', () => {
128129 const mockRequest = { to : contractAddress , data : '0x456' } ;
129130 const mockSimulateResult = { request : mockRequest , result : undefined } ;
130131
131- const { simulateContract } = await import ( 'viem/actions' ) ;
132- vi . mocked ( simulateContract ) . mockResolvedValue ( mockSimulateResult as any ) ;
132+ vi . mocked ( viemActions . simulateContract ) . mockResolvedValue (
133+ mockSimulateResult as any ,
134+ ) ;
133135
134136 const result = await NonceEnforcer . simulate . incrementNonce ( {
135137 client,
136138 contractAddress,
137139 delegationManager : differentManager ,
138140 } ) ;
139141
140- expect ( simulateContract ) . toHaveBeenCalledWith ( client , {
142+ expect ( viemActions . simulateContract ) . toHaveBeenCalledWith ( client , {
141143 address : contractAddress ,
142144 abi : expect . any ( Array ) ,
143145 functionName : 'incrementNonce' ,
@@ -155,24 +157,28 @@ describe('NonceEnforcer execute functions', () => {
155157 const mockRequest = { to : contractAddress , data : '0x123' } ;
156158 const mockSimulateResult = { request : mockRequest , result : undefined } ;
157159
158- const { simulateContract, writeContract } = await import ( 'viem/actions' ) ;
159- vi . mocked ( simulateContract ) . mockResolvedValue ( mockSimulateResult as any ) ;
160- vi . mocked ( writeContract ) . mockResolvedValue ( mockHash ) ;
160+ vi . mocked ( viemActions . simulateContract ) . mockResolvedValue (
161+ mockSimulateResult as any ,
162+ ) ;
163+ vi . mocked ( viemActions . writeContract ) . mockResolvedValue ( mockHash ) ;
161164
162165 const result = await NonceEnforcer . execute . incrementNonce ( {
163166 client,
164167 contractAddress,
165168 delegationManager,
166169 } ) ;
167170
168- expect ( simulateContract ) . toHaveBeenCalledWith ( client , {
171+ expect ( viemActions . simulateContract ) . toHaveBeenCalledWith ( client , {
169172 address : contractAddress ,
170173 abi : expect . any ( Array ) ,
171174 functionName : 'incrementNonce' ,
172175 args : [ delegationManager ] ,
173176 } ) ;
174177
175- expect ( writeContract ) . toHaveBeenCalledWith ( client , mockRequest ) ;
178+ expect ( viemActions . writeContract ) . toHaveBeenCalledWith (
179+ client ,
180+ mockRequest ,
181+ ) ;
176182
177183 expect ( result ) . toBe ( mockHash ) ;
178184 } ) ;
@@ -182,9 +188,10 @@ describe('NonceEnforcer execute functions', () => {
182188 const mockRequest = { to : contractAddress , data : '0x123' } ;
183189 const mockSimulateResult = { request : mockRequest , result : undefined } ;
184190
185- const { simulateContract, writeContract } = await import ( 'viem/actions' ) ;
186- vi . mocked ( simulateContract ) . mockResolvedValue ( mockSimulateResult as any ) ;
187- vi . mocked ( writeContract ) . mockRejectedValue ( mockError ) ;
191+ vi . mocked ( viemActions . simulateContract ) . mockResolvedValue (
192+ mockSimulateResult as any ,
193+ ) ;
194+ vi . mocked ( viemActions . writeContract ) . mockRejectedValue ( mockError ) ;
188195
189196 await expect (
190197 NonceEnforcer . execute . incrementNonce ( {
@@ -202,24 +209,28 @@ describe('NonceEnforcer execute functions', () => {
202209 const mockRequest = { to : differentContract , data : '0x456' } ;
203210 const mockSimulateResult = { request : mockRequest , result : undefined } ;
204211
205- const { simulateContract, writeContract } = await import ( 'viem/actions' ) ;
206- vi . mocked ( simulateContract ) . mockResolvedValue ( mockSimulateResult as any ) ;
207- vi . mocked ( writeContract ) . mockResolvedValue ( mockHash ) ;
212+ vi . mocked ( viemActions . simulateContract ) . mockResolvedValue (
213+ mockSimulateResult as any ,
214+ ) ;
215+ vi . mocked ( viemActions . writeContract ) . mockResolvedValue ( mockHash ) ;
208216
209217 const result = await NonceEnforcer . execute . incrementNonce ( {
210218 client,
211219 contractAddress : differentContract ,
212220 delegationManager,
213221 } ) ;
214222
215- expect ( simulateContract ) . toHaveBeenCalledWith ( client , {
223+ expect ( viemActions . simulateContract ) . toHaveBeenCalledWith ( client , {
216224 address : differentContract ,
217225 abi : expect . any ( Array ) ,
218226 functionName : 'incrementNonce' ,
219227 args : [ delegationManager ] ,
220228 } ) ;
221229
222- expect ( writeContract ) . toHaveBeenCalledWith ( client , mockRequest ) ;
230+ expect ( viemActions . writeContract ) . toHaveBeenCalledWith (
231+ client ,
232+ mockRequest ,
233+ ) ;
223234
224235 expect ( result ) . toBe ( mockHash ) ;
225236 } ) ;
@@ -263,9 +274,10 @@ describe('NonceEnforcer execute functions', () => {
263274 const { encodeFunctionData } = await import ( 'viem' ) ;
264275 vi . mocked ( encodeFunctionData ) . mockReturnValue ( mockEncodedData ) ;
265276
266- const { simulateContract, writeContract } = await import ( 'viem/actions' ) ;
267- vi . mocked ( simulateContract ) . mockResolvedValue ( mockSimulateResult as any ) ;
268- vi . mocked ( writeContract ) . mockResolvedValue ( mockHash ) ;
277+ vi . mocked ( viemActions . simulateContract ) . mockResolvedValue (
278+ mockSimulateResult as any ,
279+ ) ;
280+ vi . mocked ( viemActions . writeContract ) . mockResolvedValue ( mockHash ) ;
269281
270282 // Step 1: Encode
271283 const encodedData =
@@ -295,14 +307,17 @@ describe('NonceEnforcer execute functions', () => {
295307 args : [ delegationManager ] ,
296308 } ) ;
297309
298- expect ( simulateContract ) . toHaveBeenCalledWith ( client , {
310+ expect ( viemActions . simulateContract ) . toHaveBeenCalledWith ( client , {
299311 address : contractAddress ,
300312 abi : expect . any ( Array ) ,
301313 functionName : 'incrementNonce' ,
302314 args : [ delegationManager ] ,
303315 } ) ;
304316
305- expect ( writeContract ) . toHaveBeenCalledWith ( client , mockRequest ) ;
317+ expect ( viemActions . writeContract ) . toHaveBeenCalledWith (
318+ client ,
319+ mockRequest ,
320+ ) ;
306321 } ) ;
307322 } ) ;
308323} ) ;
0 commit comments