@@ -2,7 +2,8 @@ import { it, expect } from 'vitest';
22import {
33 extractJobErrorParts ,
44 extractRelevantJobError ,
5- generateNewUniqueDatasetName
5+ generateNewUniqueDatasetName ,
6+ getFirstTaskIndexForContinuingWorkflow
67} from '$lib/common/job_utilities.js' ;
78
89const completeTracebackError = `TASK ERROR:Task id: 15 (Create OME-Zarr structure), e.workflow_task_order=0
@@ -237,6 +238,19 @@ it('generates new unique dataset name', () => {
237238 ) ;
238239} ) ;
239240
241+ it ( 'get first task index for continuing workflow' , ( ) => {
242+ expect ( testGetFirstTaskIndexForContinuingWorkflow ( [ null , null , null , null ] ) ) . toEqual ( 0 ) ;
243+ expect ( testGetFirstTaskIndexForContinuingWorkflow ( [ 'done' , 'done' , null , null ] ) ) . toEqual ( 2 ) ;
244+ expect ( testGetFirstTaskIndexForContinuingWorkflow ( [ 'done' , 'failed' , 'done' , null ] ) ) . toEqual ( 1 ) ;
245+ expect ( testGetFirstTaskIndexForContinuingWorkflow ( [ 'done' , null , 'done' , null ] ) ) . toEqual ( 1 ) ;
246+ expect ( testGetFirstTaskIndexForContinuingWorkflow ( [ 'done' , 'done' , 'done' , 'done' ] ) ) . toEqual (
247+ undefined
248+ ) ;
249+ expect ( testGetFirstTaskIndexForContinuingWorkflow ( [ 'submitted' , 'failed' , null , null ] ) ) . toEqual (
250+ undefined
251+ ) ;
252+ } ) ;
253+
240254/**
241255 * @param {string[] } names
242256 */
@@ -245,3 +259,20 @@ function getMockedDatasets(names) {
245259 return { id : index + 1 , name } ;
246260 } ) ;
247261}
262+
263+ /**
264+ * @param {Array<string|null> } values
265+ * @returns {number|undefined }
266+ */
267+ function testGetFirstTaskIndexForContinuingWorkflow ( values ) {
268+ const workflowTasks = values . map ( ( _ , i ) => {
269+ return {
270+ id : i + 1 ,
271+ order : i
272+ } ;
273+ } ) ;
274+ const statuses = Object . fromEntries (
275+ values . map ( ( v , i ) => [ i + 1 , v ] ) . filter ( ( e ) => e [ 1 ] !== null )
276+ ) ;
277+ return getFirstTaskIndexForContinuingWorkflow ( workflowTasks , statuses ) ;
278+ }
0 commit comments