File tree 2 files changed +27
-0
lines changed 2 files changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -17,6 +17,11 @@ internal class DeadlineConstraint: JobConstraint {
17
17
}
18
18
19
19
func run( operation: SwiftQueueJob ) -> Bool {
20
+ if let delay = operation. deadline {
21
+ runInBackgroundAfter ( delay. timeIntervalSince ( Date ( ) ) , callback: { [ weak operation = operation] in
22
+ operation? . run ( )
23
+ } )
24
+ }
20
25
return true
21
26
}
22
27
Original file line number Diff line number Diff line change @@ -63,6 +63,28 @@ class ConstraintTests: XCTestCase {
63
63
XCTAssertEqual ( job2. onCancelCalled, 1 )
64
64
}
65
65
66
+ func testDeadlineAfterSchedule( ) {
67
+ let job1 = TestJob ( )
68
+ let type1 = UUID ( ) . uuidString
69
+
70
+ let creator = TestCreator ( [ type1: job1] )
71
+
72
+ let manager = SwiftQueueManager ( creators: [ creator] )
73
+ JobBuilder ( type: type1)
74
+ . delay ( inSecond: 60 )
75
+ . deadline ( date: Date ( timeIntervalSinceNow: TimeInterval ( 2 ) ) )
76
+ . retry ( max: 5 )
77
+ . schedule ( manager: manager)
78
+
79
+ manager. waitUntilAllOperationsAreFinished ( )
80
+ job1. await ( )
81
+
82
+ XCTAssertEqual ( job1. onRunJobCalled, 0 )
83
+ XCTAssertEqual ( job1. onCompleteCalled, 0 )
84
+ XCTAssertEqual ( job1. onRetryCalled, 0 )
85
+ XCTAssertEqual ( job1. onCancelCalled, 1 )
86
+ }
87
+
66
88
func testDeadlineWhenDeserialize( ) {
67
89
let group = UUID ( ) . uuidString
68
90
You can’t perform that action at this time.
0 commit comments