|
20 | 20 | import org.sterl.spring.persistent_tasks.api.TaskId.TriggerBuilder; |
21 | 21 | import org.sterl.spring.persistent_tasks.api.TriggerKey; |
22 | 22 | import org.sterl.spring.persistent_tasks.api.TriggerRequest; |
| 23 | +import org.sterl.spring.persistent_tasks.api.TriggerSearch; |
23 | 24 | import org.sterl.spring.persistent_tasks.api.TriggerStatus; |
24 | 25 | import org.sterl.spring.persistent_tasks.history.repository.CompletedTriggerRepository; |
25 | 26 | import org.sterl.spring.persistent_tasks.task.exception.CancelTaskException; |
@@ -556,6 +557,47 @@ void testResumeWaitingTriggerForSignal() { |
556 | 557 | assertThat(persistentTaskTestService.runNextTrigger()).isEmpty(); |
557 | 558 | } |
558 | 559 |
|
| 560 | + @Test |
| 561 | + void testResumeWaitingTriggerWithFunction() { |
| 562 | + // GIVEN |
| 563 | + TaskId<String> taskId = taskService.replace("foo", asserts::info); |
| 564 | + subject.queue(taskId.newTrigger() |
| 565 | + .waitForSignal(OffsetDateTime.now().plusDays(1)) |
| 566 | + .state("foo bar") |
| 567 | + .tag("aaa") |
| 568 | + .build()); |
| 569 | + var triggerKey = subject.queue(taskId.newTrigger() |
| 570 | + .waitForSignal(OffsetDateTime.now().plusDays(1)) |
| 571 | + .state("old state") |
| 572 | + .tag("aaa") |
| 573 | + .build()).getKey(); |
| 574 | + assertThat(persistentTaskTestService.runNextTrigger()).isEmpty(); |
| 575 | + |
| 576 | + // WHEN |
| 577 | + var search = new TriggerSearch(); |
| 578 | + search.setTag("aaa"); |
| 579 | + search.setKeyId(triggerKey.getId()); |
| 580 | + subject.resumeOne(search, s -> { |
| 581 | + return "Cool new State"; |
| 582 | + }); |
| 583 | + |
| 584 | + // THEN |
| 585 | + var t = subject.get(triggerKey).get(); |
| 586 | + assertThat(t.getData().getStatus()).isEqualTo(TriggerStatus.WAITING); |
| 587 | + assertThat(t.getData().getState()).isEqualTo(subject.getStateSerializer().serialize("Cool new State")); |
| 588 | + |
| 589 | + // WHEN |
| 590 | + assertThat(persistentTaskTestService.runNextTrigger()).isPresent(); |
| 591 | + |
| 592 | + // THEN |
| 593 | + asserts.awaitValueOnce("Cool new State"); |
| 594 | + asserts.assertMissing("old state"); |
| 595 | + asserts.assertMissing("foo bar"); |
| 596 | + assertThat(events.stream(TriggerResumedEvent.class).count()).isOne(); |
| 597 | + // AND |
| 598 | + assertThat(persistentTaskTestService.runNextTrigger()).isEmpty(); |
| 599 | + } |
| 600 | + |
559 | 601 | @Test |
560 | 602 | void testAwaitForSignalTriggersInTimeoutWillNotRun() { |
561 | 603 | // GIVEN |
|
0 commit comments