func TestWorkItemShouldTryIngest(t *testing.T) { workItem := models.WorkItem{ Action: "Ingest", Stage: "Receive", Status: "Pending", Retry: true, } // Test stages assert.True(t, workItem.ShouldTryIngest()) workItem.Stage = "Fetch" assert.True(t, workItem.ShouldTryIngest()) workItem.Stage = "Unpack" assert.True(t, workItem.ShouldTryIngest()) workItem.Stage = "Validate" assert.True(t, workItem.ShouldTryIngest()) workItem.Stage = "Record" assert.False(t, workItem.ShouldTryIngest()) // Test Store/Pending and Store/Started workItem.Stage = "Store" workItem.Status = "Started" assert.False(t, workItem.ShouldTryIngest()) workItem.Stage = "Store" workItem.Status = "Pending" assert.False(t, workItem.ShouldTryIngest()) // Test Retry = false workItem.Status = "Started" workItem.Retry = false workItem.Stage = "Receive" assert.False(t, workItem.ShouldTryIngest()) workItem.Stage = "Fetch" assert.False(t, workItem.ShouldTryIngest()) workItem.Stage = "Unpack" assert.False(t, workItem.ShouldTryIngest()) workItem.Stage = "Validate" assert.False(t, workItem.ShouldTryIngest()) workItem.Stage = "Record" assert.False(t, workItem.ShouldTryIngest()) }