@@ -97,19 +97,27 @@ export function createMockSqlOperators() {
9797 * ```
9898 */
9999const limit = vi . fn ( ( ) => Promise . resolve ( [ ] as unknown [ ] ) )
100- const orderBy = vi . fn ( ( ) => Promise . resolve ( [ ] as unknown [ ] ) )
101100const returning = vi . fn ( ( ) => Promise . resolve ( [ ] as unknown [ ] ) )
102- const groupBy = vi . fn ( ( ) => Promise . resolve ( [ ] as unknown [ ] ) )
103101const execute = vi . fn ( ( ) => Promise . resolve ( [ ] as unknown [ ] ) )
104102
105- const forBuilder = ( ) => {
103+ const terminalBuilder = ( ) => {
106104 const thenable : any = Promise . resolve ( [ ] as unknown [ ] )
107105 thenable . limit = limit
108106 thenable . orderBy = orderBy
109107 thenable . returning = returning
110108 thenable . groupBy = groupBy
109+ thenable . for = forClause
111110 return thenable
112111}
112+
113+ const orderBy = vi . fn ( terminalBuilder )
114+ const having = vi . fn ( terminalBuilder )
115+ const groupBy = vi . fn ( ( ) => {
116+ const builder = terminalBuilder ( )
117+ builder . having = having
118+ return builder
119+ } )
120+ const forBuilder = terminalBuilder
113121const forClause = vi . fn ( forBuilder )
114122
115123const onConflictDoUpdate = vi . fn ( ( ) => ( { returning } ) as unknown as Promise < void > )
@@ -162,6 +170,7 @@ export const dbChainMockFns = {
162170 innerJoin,
163171 leftJoin,
164172 groupBy,
173+ having,
165174 execute,
166175 for : forClause ,
167176 insert,
@@ -199,9 +208,14 @@ export function resetDbChainMock(): void {
199208 set . mockImplementation ( ( ) => ( { where } ) )
200209 del . mockImplementation ( ( ) => ( { where } ) )
201210 limit . mockImplementation ( ( ) => Promise . resolve ( [ ] as unknown [ ] ) )
202- orderBy . mockImplementation ( ( ) => Promise . resolve ( [ ] as unknown [ ] ) )
211+ orderBy . mockImplementation ( terminalBuilder )
203212 returning . mockImplementation ( ( ) => Promise . resolve ( [ ] as unknown [ ] ) )
204- groupBy . mockImplementation ( ( ) => Promise . resolve ( [ ] as unknown [ ] ) )
213+ having . mockImplementation ( terminalBuilder )
214+ groupBy . mockImplementation ( ( ) => {
215+ const builder = terminalBuilder ( )
216+ builder . having = having
217+ return builder
218+ } )
205219 execute . mockImplementation ( ( ) => Promise . resolve ( [ ] as unknown [ ] ) )
206220 forClause . mockImplementation ( forBuilder )
207221 transaction . mockImplementation ( async ( cb : ( tx : typeof dbChainMock . db ) => unknown ) =>
0 commit comments