@@ -16,6 +16,8 @@ const mocks = vi.hoisted(() => ({
1616 resolveContext : vi . fn ( ) ,
1717 resolvePermission : vi . fn ( ) ,
1818 resolveWorkflowContext : vi . fn ( ) ,
19+ runDetached : vi . fn ( ) ,
20+ runWorkflowColumn : vi . fn ( ) ,
1921 signal : vi . fn ( ) ,
2022 updateGroup : vi . fn ( ) ,
2123} ) )
@@ -36,7 +38,12 @@ vi.mock('@sim/platform-authz/workspace', () => ({
3638} ) )
3739vi . mock ( '@sim/utils/id' , ( ) => ( { generateId : ( ) => 'generated-id' } ) )
3840vi . mock ( '@/enrichments/registry' , ( ) => ( { getEnrichment : mocks . getEnrichment } ) )
39- vi . mock ( '@/lib/core/utils/background' , ( ) => ( { runDetached : vi . fn ( ) } ) )
41+ vi . mock ( '@/lib/core/utils/background' , ( ) => ( {
42+ runDetached : ( label : string , work : ( ) => Promise < unknown > ) => {
43+ mocks . runDetached ( label )
44+ void work ( )
45+ } ,
46+ } ) )
4047vi . mock ( '@/lib/core/utils/request' , ( ) => ( { generateRequestId : ( ) => 'request-1' } ) )
4148vi . mock ( '@/lib/table/application/context' , ( ) => ( {
4249 resolveActiveTableContext : mocks . resolveContext ,
@@ -51,7 +58,9 @@ vi.mock('@/lib/table/column-naming', () => ({
5158 } ,
5259} ) )
5360vi . mock ( '@/lib/table/events' , ( ) => ( { signalTableSchemaChanged : mocks . signal } ) )
54- vi . mock ( '@/lib/table/workflow-columns' , ( ) => ( { runWorkflowColumn : vi . fn ( ) } ) )
61+ vi . mock ( '@/lib/table/workflow-columns' , ( ) => ( {
62+ runWorkflowColumn : mocks . runWorkflowColumn ,
63+ } ) )
5564vi . mock ( '@/lib/table/workflow-groups/service' , ( ) => ( {
5665 addWorkflowGroup : mocks . addGroup ,
5766 addWorkflowGroupOutput : mocks . addOutput ,
@@ -145,6 +154,10 @@ describe('workflow and enrichment Table application commands', () => {
145154 beforeEach ( ( ) => {
146155 vi . clearAllMocks ( )
147156 mocks . resolvePermission . mockResolvedValue ( 'write' )
157+ mocks . runWorkflowColumn . mockResolvedValue ( {
158+ dispatchId : 'dispatch-1' ,
159+ shouldSignalRowsChanged : false ,
160+ } )
148161 mocks . resolveContext . mockResolvedValue ( {
149162 tableId : table . id ,
150163 table,
@@ -244,6 +257,30 @@ describe('workflow and enrichment Table application commands', () => {
244257 )
245258 } )
246259
260+ it ( 'starts group auto-run without manual rerun semantics' , async ( ) => {
261+ await createWorkflowTableGroup . execute ( {
262+ principal,
263+ input : {
264+ tableId : table . id ,
265+ workspaceId : table . workspaceId ,
266+ workflowId : 'workflow-1' ,
267+ outputs : [ { blockId : 'block-2' , path : 'score' } ] ,
268+ autoRun : true ,
269+ } ,
270+ } )
271+
272+ expect ( mocks . runDetached ) . toHaveBeenCalledWith ( 'table-workflow-group-create-auto-run' )
273+ expect ( mocks . runWorkflowColumn ) . toHaveBeenCalledWith ( {
274+ tableId : table . id ,
275+ workspaceId : table . workspaceId ,
276+ groupIds : [ 'generated-id' ] ,
277+ mode : 'new' ,
278+ isManualRun : false ,
279+ requestId : 'request-1' ,
280+ triggeredByUserId : 'user-1' ,
281+ } )
282+ } )
283+
247284 it ( 'conceals a cross-workspace workflow before group mutation or effects' , async ( ) => {
248285 mocks . resolveWorkflowContext . mockRejectedValueOnce (
249286 new OrchestrationError ( 'not_found' , 'Workflow not found' )
0 commit comments